-
Notifications
You must be signed in to change notification settings - Fork 0
/
database.go
99 lines (83 loc) · 2.28 KB
/
database.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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
package service
import (
"github.com/pagient/pagient-server/internal/model"
"github.com/pkg/errors"
)
// DB interface
type DB interface {
Begin() (Tx, error)
}
// Tx interface
type Tx interface {
Commit() error
Rollback() error
ClientTx
PagerTx
PatientTx
TokenTx
UserTx
}
// ClientTx interface
type ClientTx interface {
GetClients() ([]*model.Client, error)
GetClient(uint) (*model.Client, error)
GetClientByUser(string) (*model.Client, error)
AddClient(*model.Client) error
}
// PagerTx interface
type PagerTx interface {
GetPagers() ([]*model.Pager, error)
GetUnassignedPagers() ([]*model.Pager, error)
GetPager(uint) (*model.Pager, error)
AddPager(*model.Pager) error
}
// PatientTx interface
type PatientTx interface {
GetPatients() ([]*model.Patient, error)
GetPatientsWithPagerByStatus(...model.PatientStatus) ([]*model.Patient, error)
// Get Patients by Client, Activity (first in slice) and Assignment of a Pager (second in slice)
GetPatientsByClient(uint, ...bool) ([]*model.Patient, error)
GetPatient(uint) (*model.Patient, error)
AddPatient(*model.Patient) error
UpdatePatient(*model.Patient) error
MarkPatientsInactiveByClient(uint) error
RemovePatient(*model.Patient) error
// Remove Patients by Client, Activity (first in slice) and Assignment of a Pager (second in slice)
RemovePatientsByClient(uint, ...bool) error
}
// TokenTx interface
type TokenTx interface {
GetToken(string) (*model.Token, error)
GetTokensByUser(string) ([]*model.Token, error)
AddToken(*model.Token) error
RemoveToken(*model.Token) error
}
// UserTx interface
type UserTx interface {
GetUsers() ([]*model.User, error)
GetUser(string) (*model.User, error)
GetUserByToken(string) (*model.User, error)
AddUser(*model.User) error
UpdateUserPassword(*model.User) error
}
type entryExistErr interface {
EntryExist() bool
}
func isEntryExistErr(err error) bool {
ee, ok := errors.Cause(err).(entryExistErr)
return ok && ee.EntryExist()
}
type entryNotExistErr interface {
EntryNotExist() bool
}
func isEntryNotExistErr(err error) bool {
ne, ok := errors.Cause(err).(entryNotExistErr)
return ok && ne.EntryNotExist()
}
type entryNotValidErr interface {
NotValid() bool
}
func isEntryNotValidErr(err error) bool {
nv, ok := errors.Cause(err).(entryNotValidErr)
return ok && nv.NotValid()
}