From f2ac3b2cdfca6f5df5215402228374a138b0893f Mon Sep 17 00:00:00 2001 From: sentriz Date: Mon, 8 Jul 2019 21:54:20 +0100 Subject: [PATCH] make recently added persistent --- model/base.go | 12 ------------ model/model.go | 19 +++++++++--------- scanner/scanner.go | 1 + scanner/stack/stack_test.go | 26 +++++++++---------------- server/handler/construct_sub_by_tags.go | 2 +- server/handler/handler_sub_by_folder.go | 2 +- server/handler/handler_sub_by_tags.go | 2 +- 7 files changed, 23 insertions(+), 41 deletions(-) delete mode 100644 model/base.go diff --git a/model/base.go b/model/base.go deleted file mode 100644 index c86b906..0000000 --- a/model/base.go +++ /dev/null @@ -1,12 +0,0 @@ -package model - -import "time" - -type CrudBase struct { - CreatedAt time.Time - UpdatedAt time.Time -} - -type IDBase struct { - ID int `gorm:"primary_key"` -} diff --git a/model/model.go b/model/model.go index cdb18fb..7ca7c10 100644 --- a/model/model.go +++ b/model/model.go @@ -9,7 +9,7 @@ import ( ) type Artist struct { - IDBase + ID int `gorm:"primary_key"` Name string `gorm:"not null; unique_index"` NameUDec string `sql:"default: null"` Albums []*Album `gorm:"foreignkey:TagArtistID"` @@ -24,8 +24,9 @@ func (a *Artist) IndexName() string { } type Track struct { - IDBase - CrudBase + ID int `gorm:"primary_key"` + CreatedAt time.Time + UpdatedAt time.Time Filename string `gorm:"not null; unique_index:idx_folder_filename" sql:"default: null"` FilenameUDec string `sql:"default: null"` Album *Album @@ -56,8 +57,8 @@ func (t *Track) MIME() string { } type User struct { - IDBase - CrudBase + ID int `gorm:"primary_key"` + CreatedAt time.Time Name string `gorm:"not null; unique_index" sql:"default: null"` Password string `gorm:"not null" sql:"default: null"` LastFMSession string `sql:"default: null"` @@ -65,13 +66,12 @@ type User struct { } type Setting struct { - CrudBase Key string `gorm:"not null; primary_key; auto_increment:false" sql:"default: null"` Value string `sql:"default: null"` } type Play struct { - IDBase + ID int `gorm:"primary_key"` User *User UserID int `gorm:"not null; index" sql:"default: null; type:int REFERENCES users(id) ON DELETE CASCADE"` Album *Album @@ -81,8 +81,9 @@ type Play struct { } type Album struct { - IDBase - CrudBase + ID int `gorm:"primary_key"` + UpdatedAt time.Time + ModifiedAt time.Time LeftPath string `gorm:"unique_index:idx_left_path_right_path"` RightPath string `gorm:"not null; unique_index:idx_left_path_right_path" sql:"default: null"` RightPathUDec string `sql:"default: null"` diff --git a/scanner/scanner.go b/scanner/scanner.go index 3767294..b4b85bb 100644 --- a/scanner/scanner.go +++ b/scanner/scanner.go @@ -264,6 +264,7 @@ func (s *Scanner) handleFolder(it *item) error { folder.LeftPath = it.directory folder.RightPath = it.filename folder.RightPathUDec = decoded(it.filename) + folder.ModifiedAt = it.stat.ModTime() s.db.Save(folder) folder.ReceivedPaths = true return nil diff --git a/scanner/stack/stack_test.go b/scanner/stack/stack_test.go index e40da2c..b503824 100644 --- a/scanner/stack/stack_test.go +++ b/scanner/stack/stack_test.go @@ -6,20 +6,12 @@ import ( "senan.xyz/g/gonic/model" ) -func egAlbum(id int) *model.Album { - return &model.Album{ - IDBase: model.IDBase{ - ID: id, - }, - } -} - func TestFolderStack(t *testing.T) { sta := &Stack{} - sta.Push(egAlbum(3)) - sta.Push(egAlbum(4)) - sta.Push(egAlbum(5)) - sta.Push(egAlbum(6)) + sta.Push(&model.Album{ID: 3}) + sta.Push(&model.Album{ID: 4}) + sta.Push(&model.Album{ID: 5}) + sta.Push(&model.Album{ID: 6}) expected := "[6, 5, 4, 3, ]" actual := sta.String() if expected != actual { @@ -28,12 +20,12 @@ func TestFolderStack(t *testing.T) { } // sta = &Stack{} - sta.Push(egAlbum(27)) - sta.Push(egAlbum(4)) + sta.Push(&model.Album{ID: 27}) + sta.Push(&model.Album{ID: 4}) sta.Peek() - sta.Push(egAlbum(5)) - sta.Push(egAlbum(6)) - sta.Push(egAlbum(7)) + sta.Push(&model.Album{ID: 5}) + sta.Push(&model.Album{ID: 6}) + sta.Push(&model.Album{ID: 7}) sta.Pop() expected = "[6, 5, 4, 27, ]" actual = sta.String() diff --git a/server/handler/construct_sub_by_tags.go b/server/handler/construct_sub_by_tags.go index 40b6f10..726415a 100644 --- a/server/handler/construct_sub_by_tags.go +++ b/server/handler/construct_sub_by_tags.go @@ -9,7 +9,7 @@ import ( func newAlbumByTags(a *model.Album, artist *model.Artist) *subsonic.Album { ret := &subsonic.Album{ - Created: a.CreatedAt, + Created: a.ModifiedAt, ID: a.ID, Name: a.TagTitle, } diff --git a/server/handler/handler_sub_by_folder.go b/server/handler/handler_sub_by_folder.go index f004d7b..6f3884a 100644 --- a/server/handler/handler_sub_by_folder.go +++ b/server/handler/handler_sub_by_folder.go @@ -124,7 +124,7 @@ func (c *Controller) GetAlbumList(w http.ResponseWriter, r *http.Request) { user.ID) q = q.Order("plays.count DESC") case "newest": - q = q.Order("updated_at DESC") + q = q.Order("modified_at DESC") case "random": q = q.Order(gorm.Expr("random()")) case "recent": diff --git a/server/handler/handler_sub_by_tags.go b/server/handler/handler_sub_by_tags.go index be23275..7000cb2 100644 --- a/server/handler/handler_sub_by_tags.go +++ b/server/handler/handler_sub_by_tags.go @@ -126,7 +126,7 @@ func (c *Controller) GetAlbumListTwo(w http.ResponseWriter, r *http.Request) { user.ID) q = q.Order("plays.count DESC") case "newest": - q = q.Order("updated_at DESC") + q = q.Order("modified_at DESC") case "random": q = q.Order(gorm.Expr("random()")) case "recent":