/
grades.go
72 lines (61 loc) · 2.3 KB
/
grades.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
package sql
type Grade struct {
ID string
UserID string `db:"user_id"`
TeacherID string `db:"teacher_id"`
SubjectID string `db:"subject_id"`
Grade int
Date string
IsWritten bool `db:"is_written"`
IsFinal bool `db:"is_final"`
Period int
Description string
CanPatch bool `db:"can_patch"`
CreatedAt string `db:"created_at"`
UpdatedAt string `db:"updated_at"`
}
func (db *sqlImpl) GetGrade(id string) (grade Grade, err error) {
err = db.db.Get(&grade, "SELECT * FROM grades WHERE id=$1", id)
return grade, err
}
func (db *sqlImpl) GetGradesForUser(userId string) (grades []Grade, err error) {
err = db.db.Select(&grades, "SELECT * FROM grades WHERE user_id=$1 ORDER BY id ASC", userId)
return grades, err
}
func (db *sqlImpl) CheckIfFinal(userId string, subjectId string) (grade Grade, err error) {
err = db.db.Get(&grade, "SELECT * FROM grades WHERE user_id=$1 AND subject_id=$2 AND is_final=true", userId, subjectId)
return grade, err
}
func (db *sqlImpl) GetGradesForUserInSubject(userId string, subjectId string) (grades []Grade, err error) {
err = db.db.Select(&grades, "SELECT * FROM grades WHERE user_id=$1 AND subject_id=$2 ORDER BY id ASC", userId, subjectId)
return grades, err
}
func (db *sqlImpl) InsertGrade(grade Grade) error {
i := `
INSERT INTO grades
(user_id, teacher_id, subject_id, date, is_written, grade, period, description, is_final, can_patch) VALUES
(:user_id, :teacher_id, :subject_id, :date, :is_written, :grade, :period, :description, :is_final, :can_patch)
`
_, err := db.db.NamedExec(
i,
grade)
return err
}
func (db *sqlImpl) UpdateGrade(grade Grade) error {
_, err := db.db.NamedExec(
"UPDATE grades SET user_id=:user_id, teacher_id=:teacher_id, subject_id=:subject_id, date=:date, is_written=:is_written, grade=:grade, period=:period, description=:description, can_patch=:can_patch WHERE id=:id",
grade)
return err
}
func (db *sqlImpl) DeleteGrade(ID string) error {
_, err := db.db.Exec("DELETE FROM grades WHERE id=$1", ID)
return err
}
func (db *sqlImpl) DeleteGradesByTeacherID(ID string) error {
_, err := db.db.Exec("DELETE FROM grades WHERE teacher_id=$1", ID)
return err
}
func (db *sqlImpl) DeleteGradesByUserID(ID string) error {
_, err := db.db.Exec("DELETE FROM grades WHERE user_id=$1", ID)
return err
}