1package db
2
3import (
4 "github.com/teal-fm/piper/models"
5)
6
7func (db *DB) AddLastFMUsername(userID int64, lastfmUsername string) error {
8 _, err := db.Exec(`
9 UPDATE users
10 SET lastfm_username = ?
11 WHERE id = ?`, lastfmUsername, userID)
12
13 return err
14}
15
16func (db *DB) GetAllUsersWithLastFM() ([]*models.User, error) {
17 rows, err := db.Query(`
18 SELECT id, username, email, lastfm_username
19 FROM users
20 WHERE lastfm_username IS NOT NULL
21 ORDER BY id`)
22
23 if err != nil {
24 return nil, err
25 }
26 defer rows.Close()
27
28 var users []*models.User
29
30 for rows.Next() {
31 user := &models.User{}
32 err := rows.Scan(
33 &user.ID, &user.Username, &user.Email, &user.LastFMUsername)
34 if err != nil {
35 return nil, err
36 }
37 users = append(users, user)
38 }
39
40 return users, nil
41}
42
43func (db *DB) GetUserByLastFM(lastfmUsername string) (*models.User, error) {
44 row := db.QueryRow(`
45 SELECT id, username, email, atproto_did, most_recent_at_session_id, created_at, updated_at, lastfm_username
46 FROM users
47 WHERE lastfm_username = ?`, lastfmUsername)
48
49 user := &models.User{}
50 err := row.Scan(
51 &user.ID, &user.Username, &user.Email, &user.ATProtoDID, &user.MostRecentAtProtoSessionID,
52 &user.CreatedAt, &user.UpdatedAt, &user.LastFMUsername)
53 if err != nil {
54 return nil, err
55 }
56
57 return user, nil
58}