Completed
Push — main ( c7f647...178139 )
by Yume
14s queued 13s
created

pkg/models/memDate.go   A

Size/Duplication

Total Lines 44
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 28
dl 0
loc 44
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A models.*MemDate.ComputeNextDate 0 2 1
A models.*MemDate.SetDefaultNextDate 0 5 1
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