Fix problem with postgres for MyTimeline action
This commit is contained in:
parent
e66a9199a1
commit
c7865a94e4
|
@ -8,21 +8,33 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func MyTimeline(db *gorm.DB, user *models.User, paginate *models.Pagination, onlyFavorites *bool, fromDate *time.Time) ([]*models.Media, error) {
|
func MyTimeline(db *gorm.DB, user *models.User, paginate *models.Pagination, onlyFavorites *bool, fromDate *time.Time) ([]*models.Media, error) {
|
||||||
|
|
||||||
query := db.
|
query := db.
|
||||||
Joins("JOIN albums ON media.album_id = albums.id").
|
Joins("JOIN albums ON media.album_id = albums.id").
|
||||||
Where("albums.id IN (?)", db.Table("user_albums").Select("user_albums.album_id").Where("user_id = ?", user.ID)).
|
Where("albums.id IN (?)", db.Table("user_albums").Select("user_albums.album_id").Where("user_id = ?", user.ID))
|
||||||
|
|
||||||
|
if db.Dialector.Name() == "postgres" {
|
||||||
|
query = query.
|
||||||
|
Order("DATE_TRUNC('year', date_shot) DESC").
|
||||||
|
Order("DATE_TRUNC('month', date_shot) DESC").
|
||||||
|
Order("DATE_TRUNC('day', date_shot) DESC").
|
||||||
|
Order("albums.title ASC").
|
||||||
|
Order("media.date_shot DESC")
|
||||||
|
} else {
|
||||||
|
query = query.
|
||||||
Order("YEAR(media.date_shot) DESC").
|
Order("YEAR(media.date_shot) DESC").
|
||||||
Order("MONTH(media.date_shot) DESC").
|
Order("MONTH(media.date_shot) DESC").
|
||||||
Order("DAY(media.date_shot) DESC").
|
Order("DAY(media.date_shot) DESC").
|
||||||
Order("albums.title ASC").
|
Order("albums.title ASC").
|
||||||
Order("TIME(media.date_shot) DESC")
|
Order("TIME(media.date_shot) DESC")
|
||||||
|
}
|
||||||
|
|
||||||
if fromDate != nil {
|
if fromDate != nil {
|
||||||
query = query.Where("media.date_shot < ?", fromDate)
|
query = query.Where("media.date_shot < ?", fromDate)
|
||||||
}
|
}
|
||||||
|
|
||||||
if onlyFavorites != nil && *onlyFavorites == true {
|
if onlyFavorites != nil && *onlyFavorites {
|
||||||
query = query.Where("media.id IN (?)", db.Table("user_media_data").Select("user_media_data.media_id").Where("user_media_data.user_id = ?", user.ID).Where("user_media_data.favorite = 1"))
|
query = query.Where("media.id IN (?)", db.Table("user_media_data").Select("user_media_data.media_id").Where("user_media_data.user_id = ?", user.ID).Where("user_media_data.favorite"))
|
||||||
}
|
}
|
||||||
|
|
||||||
query = models.FormatSQL(query, nil, paginate)
|
query = models.FormatSQL(query, nil, paginate)
|
||||||
|
|
|
@ -92,6 +92,11 @@ func TestMyTimeline(t *testing.T) {
|
||||||
|
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.Len(t, timelineMedia, 4)
|
assert.Len(t, timelineMedia, 4)
|
||||||
|
|
||||||
|
for i, title := range []string{"pic1", "pic3", "pic2", "pic4"} {
|
||||||
|
assert.Equalf(t, timelineMedia[i].Title, title, "Element %d didn't match: got %s expected %s", i, timelineMedia[i].Title, title)
|
||||||
|
}
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("MyTimeline with only favorites", func(t *testing.T) {
|
t.Run("MyTimeline with only favorites", func(t *testing.T) {
|
||||||
|
|
Loading…
Reference in New Issue