diff options
Diffstat (limited to 'data.go')
| -rw-r--r-- | data.go | 40 |
1 files changed, 11 insertions, 29 deletions
@@ -52,6 +52,7 @@ type Import struct { To time.Time LastFetch time.Time Done bool + Count int } type DataStore interface { @@ -70,7 +71,6 @@ type DataStore interface { InsertUser(u *User) error SaveUser(u *User) error - GetImport(i *Import) error SaveImport(i *Import) error InsertImport(i *Import) error NewImport(name string) *Import @@ -266,26 +266,18 @@ func (store *SqlStore) InsertUserSession(s *UserSession) error { return err } -func (store *SqlStore) GetImport(i *Import) error { - query := ` - SELECT last_fetch - FROM scrobble_import WHERE lfm_name = $1 and "from"=$2 and "to"=$3` - row := store.QueryRow(query, i.LfmName, i.From, i.To) - return row.Scan(&i.LastFetch) -} - func (store *SqlStore) SaveImport(i *Import) error { - query := `UPDATE scrobble_import SET last_fetch=$1, done=$5 + query := `UPDATE scrobble_import SET last_fetch=$1, done=$5, count=$6 WHERE "from"=$2 and "to"=$3 and lfm_name=$4` - _, err := store.Exec(query, i.LastFetch, i.From, i.To, i.LfmName, i.Done) + _, err := store.Exec(query, i.LastFetch, i.From, i.To, i.LfmName, i.Done, i.Count) return err } func (store *SqlStore) InsertImport(i *Import) error { query := ` - INSERT into scrobble_import (lfm_name, "from", "to", last_fetch, done) - VALUES ($1, $2, $3, $4, $5)` - _, err := store.Exec(query, i.LfmName, i.From, i.To, i.LastFetch, i.Done) + INSERT into scrobble_import (lfm_name, "from", "to", last_fetch, done, count) + VALUES ($1, $2, $3, $4, $5, $6)` + _, err := store.Exec(query, i.LfmName, i.From, i.To, i.LastFetch, i.Done, i.Count) return err } @@ -296,9 +288,7 @@ func (store *SqlStore) NewImport(name string) *Import { } query := `SELECT max("to") FROM scrobble_import WHERE lfm_name=$1` row := store.QueryRow(query, i.LfmName) - if row.Scan(&i.From) == nil { - i.From = i.From.Add(time.Second) - } + row.Scan(&i.From) if err := store.InsertImport(i); err != nil { log.Println(err) } @@ -309,21 +299,13 @@ func (store *SqlStore) ImportStats(user int) (time.Time, int, error) { query := ` SELECT "last", ct FROM ( - SELECT max("to") "last", lfm_name + SELECT max("to") "last", sum(count) ct, lfm_name FROM scrobble_import GROUP BY lfm_name ) i - JOIN ( - SELECT count(*) ct, max(lfm_name) n - FROM scrobbles - JOIN scrobbling_sessions - ON scrobbles.session_key = scrobbling_sessions.session_key - JOIN users - ON scrobbles.user_id = users.user_id - WHERE users.user_id = $1 - AND client = 'import' - ) s - ON lfm_name = n` + JOIN users + ON users.lfm_name = i.lfm_name + WHERE users.user_id = $1` var t time.Time var count int row := store.QueryRow(query, user) |
