mirror of
https://github.com/navidrome/navidrome.git
synced 2025-04-16 04:00:38 +03:00
Match Top Songs by mbid, add indexes to media_file
This commit is contained in:
parent
3cf8b8e97d
commit
a45b5a037f
@ -149,23 +149,33 @@ func (e *externalInfo) TopSongs(ctx context.Context, artist string, count int) (
|
||||
}
|
||||
var songs model.MediaFiles
|
||||
for _, t := range tracks {
|
||||
mfs, err := e.ds.MediaFile(ctx).GetAll(model.QueryOptions{
|
||||
Filters: squirrel.And{
|
||||
mf, err := e.findMatchingTrack(ctx, artist, t.Name, t.MBID)
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
songs = append(songs, *mf)
|
||||
}
|
||||
return songs, nil
|
||||
}
|
||||
|
||||
func (e *externalInfo) findMatchingTrack(ctx context.Context, artist, title, mbid string) (*model.MediaFile, error) {
|
||||
mfs, err := e.ds.MediaFile(ctx).GetAll(model.QueryOptions{
|
||||
Filters: squirrel.Or{
|
||||
squirrel.And{
|
||||
squirrel.Or{
|
||||
squirrel.Like{"artist": artist},
|
||||
squirrel.Like{"album_artist": artist},
|
||||
},
|
||||
squirrel.Like{"title": t.Name},
|
||||
squirrel.Like{"title": title},
|
||||
},
|
||||
Sort: "year",
|
||||
Order: "asc",
|
||||
})
|
||||
if err != nil || len(mfs) == 0 {
|
||||
continue
|
||||
}
|
||||
songs = append(songs, mfs[0])
|
||||
squirrel.Like{"mbz_track_id": mbid},
|
||||
},
|
||||
Sort: "mbz_track_id desc, year asc",
|
||||
})
|
||||
if err != nil || len(mfs) == 0 {
|
||||
return nil, model.ErrNotFound
|
||||
}
|
||||
return songs, nil
|
||||
return &mfs[0], nil
|
||||
}
|
||||
|
||||
func (e *externalInfo) ArtistInfo(ctx context.Context, id string) (*model.ArtistInfo, error) {
|
||||
|
27
db/migration/20201021093209_add_media_file_indexes.go
Normal file
27
db/migration/20201021093209_add_media_file_indexes.go
Normal file
@ -0,0 +1,27 @@
|
||||
package migration
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
|
||||
"github.com/pressly/goose"
|
||||
)
|
||||
|
||||
func init() {
|
||||
goose.AddMigration(Up20201021093209, Down20201021093209)
|
||||
}
|
||||
|
||||
func Up20201021093209(tx *sql.Tx) error {
|
||||
_, err := tx.Exec(`
|
||||
create index if not exists media_file_artist
|
||||
on media_file (artist);
|
||||
create index if not exists media_file_album_artist
|
||||
on media_file (album_artist);
|
||||
create index if not exists media_file_mbz_track_id
|
||||
on media_file (mbz_track_id);
|
||||
`)
|
||||
return err
|
||||
}
|
||||
|
||||
func Down20201021093209(tx *sql.Tx) error {
|
||||
return nil
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user