diff --git a/app/controllers/home_controller.go b/app/controllers/home_controller.go index 6e4298c..7c43415 100644 --- a/app/controllers/home_controller.go +++ b/app/controllers/home_controller.go @@ -2,6 +2,8 @@ package controllers import ( "github.com/unrolled/render" + "log" + "moretcgshop/app/models" "net/http" ) @@ -11,9 +13,16 @@ func (server *Server) Home(w http.ResponseWriter, r *http.Request) { Extensions: []string{".html", ".tmpl"}, }) + sectionen, err := models.GetSection(server.DB) + + if err != nil { + log.Fatal(err.Error()) + } + user := server.CurrentUser(w, r) _ = render.HTML(w, http.StatusOK, "home", map[string]interface{}{ - "user": user, + "user": user, + "sectionen": sectionen, }) } diff --git a/app/models/Category.go b/app/models/Category.go index 961374d..d6d9a22 100644 --- a/app/models/Category.go +++ b/app/models/Category.go @@ -1,14 +1,37 @@ package models -import "time" +import ( + "gorm.io/gorm" + "time" +) type Category struct { - ID string - ParentID string + ID string `gorm:"size:36;not null;uniqueIndex;primary_key"` + ParentID string `gorm:"size:36;"` Section Section - SectionID string + SectionID string `gorm:"size:36;index"` Products []Product `gorm:"many2many:product_categories;"` - Name string + Name string `gorm:"size:100;"` + Image string CreatedAt time.Time UpdatedAt time.Time } + +func (p *Category) Get(db *gorm.DB, perPage int, page int) (*[]Product, int64, error) { + + var count int64 + var products []Product + + err := db.Debug().Model(&Product{}).Count(&count).Error + if err != nil { + return nil, 0, err + } + + offset := (page - 1) * perPage + + err = db.Debug().Model(&Product{}).Order("created_at desc").Limit(perPage).Offset(offset).Find(&products).Error + if err != nil { + return nil, 0, err + } + return &products, count, nil +} diff --git a/database/fakers/section_faker.go b/database/fakers/section_faker.go new file mode 100644 index 0000000..a84e6d1 --- /dev/null +++ b/database/fakers/section_faker.go @@ -0,0 +1,26 @@ +package fakers + +import ( + "github.com/google/uuid" + "gorm.io/gorm" + "moretcgshop/app/models" + "time" +) + +func SectionFaker(db *gorm.DB) []*models.Section { + var res []*models.Section + + var temp *models.Section + var games []string = []string{"One-Piece", "Yu-Gi-Oh", "My Little Pony"} + + for _, game := range games { + temp = &models.Section{ + ID: uuid.New().String(), + Name: game, + CreatedAt: time.Time{}, + UpdatedAt: time.Time{}, + } + res = append(res, temp) + } + return res +} diff --git a/database/seeders/seeder.go b/database/seeders/seeder.go index 4e0329e..7c26cfc 100644 --- a/database/seeders/seeder.go +++ b/database/seeders/seeder.go @@ -13,6 +13,7 @@ func RegisterSeeders(db *gorm.DB) []Seeder { return []Seeder{ {Seeder: fakers.UserFaker(db)}, {Seeder: fakers.ProductFaker(db)}, + {Seeder: fakers.SectionFaker(db)}, } } diff --git a/templates/pages/home.html b/templates/pages/home.html index 88886df..8654933 100644 --- a/templates/pages/home.html +++ b/templates/pages/home.html @@ -5,43 +5,31 @@