summaryrefslogtreecommitdiffstats
path: root/data.go
diff options
context:
space:
mode:
Diffstat (limited to 'data.go')
-rw-r--r--data.go38
1 files changed, 20 insertions, 18 deletions
diff --git a/data.go b/data.go
index 318e43e..30f8a38 100644
--- a/data.go
+++ b/data.go
@@ -21,7 +21,7 @@ type Scrobble struct {
Mbid string `xml:"-" json:"-"`
MbidComp string
Session string `xml:"-" json:"-"`
- User string
+ UserId int
Image string
}
@@ -29,6 +29,7 @@ type Session struct {
XMLName xml.Name `json:"-" xml:"session"`
User string `json:"name" xml:"name"`
Key string `json:"key" xml:"key"`
+ UserId int
Client string
ClientVersion string
Protocol string
@@ -39,9 +40,9 @@ type Session struct {
type DataStore interface {
PutSession(*Session) error
GetSession(key string) (*Session, error)
- GetPassword(userName string) (string, error)
+ GetUser(lfmName string) (int, string, error)
PutScrobbles([]Scrobble) error
- RecentScrobbles(lfmName string) []*Scrobble
+ RecentScrobbles(userId int) []*Scrobble
Api
}
@@ -51,29 +52,30 @@ type SqlStore struct {
func (store *SqlStore) PutSession(s *Session) error {
query := `
- INSERT INTO scrobbling_sessions (lfm_name, session_key, client, client_version, protocol)
+ INSERT INTO scrobbling_sessions (user_id, session_key, client, client_version, protocol)
VALUES ($1, $2, $3, $4, $5)`
- _, err := store.Exec(query, s.User, s.Key, s.Client, s.ClientVersion, s.Protocol)
+ _, err := store.Exec(query, s.UserId, s.Key, s.Client, s.ClientVersion, s.Protocol)
return err
}
func (store *SqlStore) GetSession(key string) (*Session, error) {
query := `
- SELECT lfm_name, session_key, client, client_version, protocol, created
+ SELECT user_id, session_key, client, client_version, protocol, created
FROM scrobbling_sessions WHERE session_key = $1`
row := store.QueryRow(query, key)
- s := &Session{}
- err := row.Scan(&s.User, &s.Key, &s.Client, &s.ClientVersion, &s.Protocol,
+ s := new(Session)
+ err := row.Scan(&s.UserId, &s.Key, &s.Client, &s.ClientVersion, &s.Protocol,
&s.Created)
return s, err
}
-func (store *SqlStore) GetPassword(name string) (string, error) {
+func (store *SqlStore) GetUser(lfmName string) (int, string, error) {
var password string
- row := store.QueryRow("SELECT lfm_password FROM users WHERE lfm_name = $1",
- name)
- err := row.Scan(&password)
- return password, err
+ var userId int
+ row := store.QueryRow("SELECT user_id, lfm_password FROM users WHERE lfm_name = $1",
+ lfmName)
+ err := row.Scan(&userId, &password)
+ return userId, password, err
}
func (store *SqlStore) PutScrobbles(scrobbles []Scrobble) error {
@@ -84,7 +86,7 @@ func (store *SqlStore) PutScrobbles(scrobbles []Scrobble) error {
query := `
INSERT INTO scrobbles
(artist, albumartist, trackname, album, tracknumber, duration, time,
- chosen, mbid, mbid_computed, session_key, lfm_name)
+ chosen, mbid, mbid_computed, session_key, user_id)
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12)`
st, err := tx.Prepare(query)
if err != nil {
@@ -93,7 +95,7 @@ func (store *SqlStore) PutScrobbles(scrobbles []Scrobble) error {
for _, s := range scrobbles {
_, err = st.Exec(s.Artist, s.AlbumArtist, s.TrackName, s.Album,
s.TrackNumber, s.Duration, s.Time, s.Chosen, s.Mbid, s.MbidComp,
- s.Session, s.User)
+ s.Session, s.UserId)
if err != nil {
tx.Rollback()
return err
@@ -102,14 +104,14 @@ func (store *SqlStore) PutScrobbles(scrobbles []Scrobble) error {
return tx.Commit()
}
-func (store *SqlStore) RecentScrobbles(lfmName string) []*Scrobble {
+func (store *SqlStore) RecentScrobbles(userId int) []*Scrobble {
scrobbles := make([]*Scrobble, 0, 10)
query := `
SELECT artist, album, trackname, time, image
FROM scrobbles
LEFT JOIN songs ON COALESCE(scrobbles.mbid, scrobbles.mbid_computed) = songs.mbid
- WHERE lfm_name=$1 ORDER BY time DESC LIMIT 10`
- rows, err := store.Query(query, lfmName)
+ WHERE user_id=$1 ORDER BY time DESC LIMIT 10`
+ rows, err := store.Query(query, userId)
if err != nil {
log.Println(err)
}