Total Lines | 44 |
Duplicated Lines | 0 % |
Changes | 0 |
1 | package models |
||
2 | |||
3 | import ( |
||
4 | "time" |
||
5 | |||
6 | "gorm.io/gorm" |
||
7 | ) |
||
8 | |||
9 | // MemDate structure |
||
10 | type MemDate struct { |
||
11 | gorm.Model `swaggerignore:"true"` |
||
12 | UserID uint `json:"user_id" example:"1"` |
||
13 | User User `swaggerignore:"true"` |
||
14 | CardID uint `json:"card_id" example:"1"` |
||
15 | Card Card `swaggerignore:"true"` |
||
16 | DeckID uint `json:"deck_id" example:"1"` |
||
17 | Deck Deck `swaggerignore:"true"` |
||
18 | NextDate time.Time `json:"next_date" example:"01/01/2000"` // gorm:"autoCreateTime"` |
||
19 | LearningStage LearningStage `json:"learning_stage" gorm:"default:0"` |
||
20 | } |
||
21 | |||
22 | // LearningStage enum type |
||
23 | type LearningStage int64 |
||
24 | |||
25 | const ( |
||
26 | StageNeverSeen LearningStage = iota |
||
27 | StageToLearn |
||
28 | StageToRelearn |
||
29 | StageLearning |
||
30 | StageReviewing |
||
31 | StageKnown |
||
32 | ) |
||
33 | |||
34 | // ComputeNextDate calculates and sets the NextDate |
||
35 | func (m *MemDate) ComputeNextDate(interval int) { |
||
36 | m.NextDate = time.Now().AddDate(0, 0, interval) |
||
37 | } |
||
38 | |||
39 | // SetDefaultNextDate fills MemDate values and sets NextDate as time.Now() |
||
40 | func (m *MemDate) SetDefaultNextDate(userID, cardID, deckID uint) { |
||
41 | m.UserID = userID |
||
42 | m.CardID = cardID |
||
43 | m.DeckID = deckID |
||
44 | m.NextDate = time.Now() |
||
45 | } |
||
46 |