mirror of
https://github.com/navidrome/navidrome.git
synced 2025-12-23 23:18:05 -05:00
* feat(scrobble): implement scrobble repository and record scrobble history Signed-off-by: Deluan <deluan@navidrome.org> * feat(scrobble): add configuration option to enable scrobble history Signed-off-by: Deluan <deluan@navidrome.org> * test(scrobble): enhance scrobble history tests for repository recording Signed-off-by: Deluan <deluan@navidrome.org> --------- Signed-off-by: Deluan <deluan@navidrome.org>
35 lines
760 B
Go
35 lines
760 B
Go
package persistence
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
. "github.com/Masterminds/squirrel"
|
|
"github.com/navidrome/navidrome/model"
|
|
"github.com/pocketbase/dbx"
|
|
)
|
|
|
|
type scrobbleRepository struct {
|
|
sqlRepository
|
|
}
|
|
|
|
func NewScrobbleRepository(ctx context.Context, db dbx.Builder) model.ScrobbleRepository {
|
|
r := &scrobbleRepository{}
|
|
r.ctx = ctx
|
|
r.db = db
|
|
r.tableName = "scrobbles"
|
|
return r
|
|
}
|
|
|
|
func (r *scrobbleRepository) RecordScrobble(mediaFileID string, submissionTime time.Time) error {
|
|
userID := loggedUser(r.ctx).ID
|
|
values := map[string]interface{}{
|
|
"media_file_id": mediaFileID,
|
|
"user_id": userID,
|
|
"submission_time": submissionTime.Unix(),
|
|
}
|
|
insert := Insert(r.tableName).SetMap(values)
|
|
_, err := r.executeSQL(insert)
|
|
return err
|
|
}
|