Mhamdans17 commited on
Commit
d1cbed4
·
1 Parent(s): 3bfd210

fix: expose PointHistories in Member JSON response

Browse files
Files changed (2) hide show
  1. models/models.go +1 -1
  2. testgorm.go +57 -0
models/models.go CHANGED
@@ -65,7 +65,7 @@ type Member struct {
65
  Company *Company `gorm:"foreignKey:CompanyID" json:"company,omitempty"`
66
  Branch *Branch `gorm:"foreignKey:BranchID;constraint:OnDelete:SET NULL;" json:"branch,omitempty"`
67
  CreatedBy *User `gorm:"foreignKey:CreatedByID;constraint:OnDelete:SET NULL;" json:"created_by,omitempty"`
68
- PointHistories []PointHistory `gorm:"foreignKey:MemberID;constraint:OnDelete:CASCADE" json:"-"`
69
  }
70
 
71
  type PointHistory struct {
 
65
  Company *Company `gorm:"foreignKey:CompanyID" json:"company,omitempty"`
66
  Branch *Branch `gorm:"foreignKey:BranchID;constraint:OnDelete:SET NULL;" json:"branch,omitempty"`
67
  CreatedBy *User `gorm:"foreignKey:CreatedByID;constraint:OnDelete:SET NULL;" json:"created_by,omitempty"`
68
+ PointHistories []PointHistory `gorm:"foreignKey:MemberID;constraint:OnDelete:CASCADE" json:"PointHistories"`
69
  }
70
 
71
  type PointHistory struct {
testgorm.go ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ package main
2
+
3
+ import (
4
+ "encoding/json"
5
+ "fmt"
6
+ "time"
7
+ "gorm.io/driver/sqlite"
8
+ "gorm.io/gorm"
9
+ )
10
+
11
+ type Company struct {
12
+ ID uint `gorm:"primaryKey"`
13
+ }
14
+
15
+ type Member struct {
16
+ ID uint `gorm:"primaryKey" json:"id"`
17
+ MemberCode string `gorm:"column:member_id;type:varchar(50)" json:"member_id"`
18
+ Points int
19
+ }
20
+
21
+ type Order struct {
22
+ ID uint `gorm:"primaryKey"`
23
+ MemberID *uint `gorm:"index" json:"member_id"`
24
+ Member *Member `gorm:"foreignKey:MemberID;references:ID" json:"member"`
25
+ }
26
+
27
+ func main() {
28
+ db, err := gorm.Open(sqlite.Open("file::memory:?cache=shared"), &gorm.Config{})
29
+ if err != nil { panic(err) }
30
+ db.AutoMigrate(&Company{}, &Member{}, &Order{})
31
+
32
+ m := Member{MemberCode: "25375", Points: 0}
33
+ db.Create(&m)
34
+ fmt.Println("Initial Member:", m)
35
+
36
+ memId := m.ID
37
+ o := Order{MemberID: &memId}
38
+ db.Create(&o)
39
+
40
+ // Simulate PayCash
41
+ var o2 Order
42
+ db.First(&o2, o.ID)
43
+
44
+ // Simulate awardPoints
45
+ var m2 Member
46
+ db.First(&m2, *o2.MemberID)
47
+ m2.Points += 1
48
+ db.Save(&m2)
49
+
50
+ o2.Member = &m2
51
+ db.Save(&o2)
52
+
53
+ var m3 Member
54
+ db.First(&m3, memId)
55
+ b, _ := json.Marshal(m3)
56
+ fmt.Println("After:", string(b))
57
+ }