aboutsummaryrefslogtreecommitdiffstats
path: root/data.go
diff options
context:
space:
mode:
Diffstat (limited to 'data.go')
-rw-r--r--data.go40
1 files changed, 11 insertions, 29 deletions
diff --git a/data.go b/data.go
index 3b4a783..c2ecba4 100644
--- a/data.go
+++ b/data.go
@@ -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)