From 8f89c149610ab0e74c27d817b3cc21a79c22e20b Mon Sep 17 00:00:00 2001 From: kalipso Date: Mon, 21 Apr 2025 12:11:44 +0200 Subject: [PATCH] issue #20 add sort, not yet in view --- controllers/userController.go | 16 ++++++++++++++-- repositories/shopItemRepository.go | 28 ++++++++++++++++++++++++++++ views/shopitems.html | 4 ++-- 3 files changed, 44 insertions(+), 4 deletions(-) diff --git a/controllers/userController.go b/controllers/userController.go index b037982..da32163 100644 --- a/controllers/userController.go +++ b/controllers/userController.go @@ -333,8 +333,20 @@ func (rc *UserController) InviteHandler(c *gin.Context) { } func (rc *UserController) MainView(c *gin.Context) { - shopItems, _ := repositories.ShopItems.GetAll() - fmt.Println(len(shopItems)) + itemOrder := c.Query("order") + + var shopItems []models.ShopItem + if itemOrder == "newestFirst" { + shopItems, _ = repositories.ShopItems.GetAllNewestFirst() + } else if itemOrder == "oldestFirst" { + shopItems, _ = repositories.ShopItems.GetAllNewestLast() + } else if itemOrder == "az" { + shopItems, _ = repositories.ShopItems.GetAllLexicalFirst() + } else if itemOrder == "za" { + shopItems, _ = repositories.ShopItems.GetAllLexicalLast() + } else { + shopItems, _ = repositories.ShopItems.GetAllNewestFirst() + } data := CreateSessionData(c, gin.H{ "title": "shopItem Page", diff --git a/repositories/shopItemRepository.go b/repositories/shopItemRepository.go index 73e2377..58a11f1 100644 --- a/repositories/shopItemRepository.go +++ b/repositories/shopItemRepository.go @@ -11,6 +11,11 @@ import ( type ShopItemRepository interface { Create(models.ShopItem) (models.ShopItem, error) GetAll() ([]models.ShopItem, error) + GetAllSorted(string) ([]models.ShopItem, error) + GetAllNewestFirst() ([]models.ShopItem, error) + GetAllNewestLast() ([]models.ShopItem, error) + GetAllLexicalFirst() ([]models.ShopItem, error) + GetAllLexicalLast() ([]models.ShopItem, error) GetAllPublic() ([]models.ShopItem, error) GetById(string) (models.ShopItem, error) GetNextOfId(string) (models.ShopItem, error) @@ -47,6 +52,29 @@ func (r *GORMShopItemRepository) GetAll() ([]models.ShopItem, error) { return shopItems, result.Error } +func (r *GORMShopItemRepository) GetAllSorted(sortString string) ([]models.ShopItem, error) { + var shopItems []models.ShopItem + result := r.DB.Preload("Tags").Preload("Variants").Order(sortString).Find(&shopItems) + + return shopItems, result.Error +} + +func (r *GORMShopItemRepository) GetAllNewestFirst() ([]models.ShopItem, error) { + return r.GetAllSorted("created_at desc") +} + +func (r *GORMShopItemRepository) GetAllNewestLast() ([]models.ShopItem, error) { + return r.GetAllSorted("created_at asc") +} + +func (r *GORMShopItemRepository) GetAllLexicalFirst() ([]models.ShopItem, error) { + return r.GetAllSorted("name asc") +} + +func (r *GORMShopItemRepository) GetAllLexicalLast() ([]models.ShopItem, error) { + return r.GetAllSorted("name desc") +} + func (r *GORMShopItemRepository) GetAllPublic() ([]models.ShopItem, error) { var shopItems []models.ShopItem result := r.DB.Preload("Tags").Preload("Variants").Where("is_public = 1").Find(&shopItems) diff --git a/views/shopitems.html b/views/shopitems.html index 7ee74c8..f769524 100644 --- a/views/shopitems.html +++ b/views/shopitems.html @@ -1,8 +1,8 @@
-

Available Zines

+

Available Zines

- +
{{ range .data.shopItems }}