src/app/models.go (view raw)
1package app
2
3import (
4 "time"
5)
6
7type Bookmaker struct {
8 ID uint `json:"id"`
9 CreatedAt time.Time `json:"created_at" gorm:"<-:create"`
10 UpdatedAt time.Time `json:"updated_at"`
11
12 Name string `json:"name" gorm:"not null" `
13 DefaultCommission uint `json:"default_commission" gorm:"not null"`
14}
15
16type Account struct {
17 ID uint `json:"id"`
18 CreatedAt time.Time `json:"created_at" gorm:"<-:create"`
19 UpdatedAt time.Time `json:"updated_at"`
20
21 Name string `json:"name" gorm:"not null"`
22}
23
24type Record struct {
25 ID uint `json:"id" gorm:"primaryKey"`
26 CreatedAt time.Time `json:"created_at" gorm:"<-:create"`
27 UpdatedAt time.Time `json:"updated_at"`
28
29 Done bool `json:"done" gorm:"not null"`
30 Type string `json:"type" gorm:"not null"`
31 Description string `json:"description" gorm:"not null"`
32
33 Date *time.Time `json:"date" gorm:"-"`
34 Value *int `json:"value" gorm:"-"`
35
36 Entries []Entry `json:"entries" gorm:"constraint:OnUpdate:CASCADE,OnDelete:CASCADE;"`
37}
38
39type Entry struct {
40 ID uint `json:"id"`
41 CreatedAt time.Time `json:"created_at" gorm:"<-:create"`
42 UpdatedAt time.Time `json:"updated_at"`
43
44 RecordID uint `json:"record_id" gorm:"not null"`
45 BookmakerID uint `json:"bookmaker_id" gorm:"not null"`
46 AccountID uint `json:"account_id" gorm:"not null"`
47 Amount uint `json:"amount" gorm:"not null"` // In cents (ex: 100 = 1.00)
48 Refund uint `json:"refund" gorm:"not null"` // In cents (ex: 100 = 1.00)
49 Bonus uint `json:"bonus" gorm:"not null"` // In cents (ex: 50 = 0.50)
50 Commission uint `json:"commission" gorm:"not null"` // In cents (ex: 4.5% = 450)
51
52 Odds *uint `json:"odds" gorm:"-"`
53 Won *bool `json:"won" gorm:"-"`
54 Date *time.Time `json:"date" gorm:"-"`
55 Value *int `json:"value" gorm:"-"`
56
57 Bookmaker Bookmaker `json:"bookmaker" gorm:"constraint:OnUpdate:CASCADE,OnDelete:CASCADE;"`
58 Account Account `json:"account" gorm:"constraint:OnUpdate:CASCADE,OnDelete:CASCADE;"`
59 SubEntries []SubEntry `json:"sub_entries" gorm:"constraint:OnUpdate:CASCADE,OnDelete:CASCADE;"`
60}
61
62type SubEntry struct {
63 ID uint `json:"id"`
64 CreatedAt time.Time `json:"created_at" gorm:"<-:create"`
65 UpdatedAt time.Time `json:"updated_at"`
66
67 EntryID uint `json:"entry_id" gorm:"not null"`
68 Description string `json:"description" gorm:"not null"`
69 Odds uint `json:"odds" gorm:"not null"` // In cents (ex: 200 = 2.00)
70 Won bool `json:"won" gorm:"not null"`
71 Date time.Time `json:"date" gorm:"not null;default:current_timestamp"`
72
73 Value *int `json:"value" gorm:"-"`
74}