-
Notifications
You must be signed in to change notification settings - Fork 0
/
deckrepo.go
83 lines (66 loc) · 1.9 KB
/
deckrepo.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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
package storage
import "gorm.io/gorm"
type gormDeckRepo struct {
db *gorm.DB
}
func newGormDeckRepo(db *gorm.DB) *gormDeckRepo {
repo := &gormDeckRepo{db: db}
repo.db.AutoMigrate(&gormDeck{}, &gormDeckCard{})
return repo
}
func (r *gormDeckRepo) create(gd gormDeck) error {
err := r.db.Create(&gd).Error
return err
}
func (r *gormDeckRepo) removeDeck(id string) error {
return r.db.Where("id = ?", id).Delete(&gormDeck{}).Error
}
func (r *gormDeckRepo) addCard(gdc gormDeckCard) error {
err := r.db.Create(&gdc).Error
return err
}
func (r *gormDeckRepo) addCards(gdcs []gormDeckCard) error {
err := r.db.CreateInBatches(gdcs, 20).Error
return err
}
func (r *gormDeckRepo) ListDecks() ([]Deck, error) {
var gds []gormDeck
err := r.db.Find(&gds).Error
if err != nil {
return nil, err
}
var ds []Deck
for _, gd := range gds {
ds = append(ds, Deck{ID: gd.ID, Name: gd.Name, CreatedAt: gd.CreateAt, CoverImage: gd.CoverImage, DeckType: gd.DeckType})
}
return ds, nil
}
func (r *gormDeckRepo) UpdateCover(deckID, path string) error {
return r.db.Model(&gormDeck{}).Where("id", deckID).Update("cover_image", path).Error
}
func (r *gormDeckRepo) findDeck(id string) (Deck, error) {
var gd gormDeck
err := r.db.Where("id = ?", id).First(&gd).Error
if err != nil {
return Deck{}, err
}
d := Deck{
ID: gd.ID,
Name: gd.Name,
CreatedAt: gd.CreateAt,
CoverImage: gd.CoverImage,
DeckType: gd.DeckType,
}
return d, nil
}
func (r *gormDeckRepo) listDeckCards(deckID string) ([]gormDeckCard, error) {
var gdcs []gormDeckCard
err := r.db.Order("created_at asc").Where("deck_id = ?", deckID).Find(&gdcs).Error
return gdcs, err
}
func (r *gormDeckRepo) removeDeckCards(deckID string) error {
return r.db.Where("deck_id = ?", deckID).Delete(&gormDeckCard{}).Error
}
func (r *gormDeckRepo) RemoveCard(c DeckCard) error {
return r.db.Where("id = ?", c.ID).Delete(&gormDeckCard{}).Error
}