Completed
Push — main ( 19662a...9f7f07 )
by Yume
14s queued 11s
created

core.ComputeQualitySuccess   A

Complexity

Conditions 3

Size

Total Lines 9
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 3
eloc 7
nop 2
dl 0
loc 9
rs 10
c 0
b 0
f 0
1
package core
2
3
import (
4
	"memnixrest/app/models"
5
	"memnixrest/pkg/database"
6
)
7
8
func UpdateMemDate(mem *models.Mem) {
9
	db := database.DBConn
10
	memDate := new(models.MemDate)
11
12
	_ = db.Joins("Card").Joins("User").Joins("Deck").Where("mem_dates.user_id = ? AND mem_dates.card_id = ?",
13
		mem.UserID, mem.CardID).First(&memDate).Error
14
15
	memDate.ComputeNextDate(int(mem.Interval))
16
17
	db.Save(memDate)
18
19
	//TODO: Return error
20
}
21
22
func UpdateMemTraining(r *models.Mem, validation bool) {
23
	db := database.DBConn
24
25
	mem := new(models.Mem)
26
27
	mem.UserID, mem.CardID = r.UserID, r.CardID
28
29
	if validation {
30
		r.ComputeQualitySuccess()
31
	} else {
32
		r.ComputeQualityFail()
33
	}
34
35
	mem.ComputeTrainingEfactor(r.Efactor, r.Quality)
36
	mem.Interval, mem.Repetition = r.Interval, r.Repetition
37
38
	db.Save(r)
39
	db.Create(mem)
40
}
41
42
// UpdateMem function
43
func UpdateMem(r *models.Mem, validation bool) {
44
45
	db := database.DBConn
46
47
	mem := new(models.Mem)
48
49
	mem.UserID, mem.CardID = r.UserID, r.CardID
50
51
	if validation {
52
		mem.ComputeInterval(r.Interval, r.Efactor, r.Repetition)
53
		mem.Repetition = r.Repetition + 1
54
		r.ComputeQualitySuccess()
55
56
	} else {
57
		mem.Repetition = 0
58
		mem.Interval = 0
59
		r.ComputeQualityFail()
60
	}
61
62
	mem.ComputeEfactor(r.Efactor, r.Quality)
63
64
	db.Save(r)
65
	db.Create(mem)
66
67
	UpdateMemDate(mem)
68
69
}
70