/
menu.go
54 lines (44 loc) · 984 Bytes
/
menu.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package store
import (
"github.com/angrynerds-pl/kpz-contactless-restaurant-backend/api/model"
uuid "github.com/satori/go.uuid"
"gorm.io/gorm"
"gorm.io/gorm/clause"
)
type MenuStore struct {
db *gorm.DB
}
func NewMenuStore(db *gorm.DB) *MenuStore {
return &MenuStore{
db: db,
}
}
func (ms MenuStore) AddFoodToMenu(menu *model.Menu, food *model.Food) error {
var m model.Menu
m.ID = menu.ID
err := ms.db.Model(&m).Association("Foods").Append(food)
if err != nil {
return err
}
return nil
}
func (ms MenuStore) GetMenu(menuId uuid.UUID) (*model.Menu, error) {
var m model.Menu
m.ID = menuId
err := ms.db.Preload(clause.Associations).First(&m).Error
if err != nil {
return nil, err
}
return &m, nil
}
func (ms MenuStore) RemoveFoodFromMenu(menuId uuid.UUID, foodId uuid.UUID) error {
var m model.Menu
m.ID = menuId
var f model.Food
f.ID = foodId
err := ms.db.Model(&m).Association("Foods").Delete(f)
if err != nil {
return err
}
return nil
}