[WIP] music platform user data scraper
teal-fm atproto
at main 1.3 kB view raw
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}