/
DashMember.go
69 lines (61 loc) · 1.29 KB
/
DashMember.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
package types
const (
MemberStatusRejected = 0
MemberStatusApproved = 1
MemberStatusInvited = 2
MemberStatusRequested = 3
)
type DashMember struct {
Id int `db:"id" json:"id"`
DashId int `db:"dash_id" json:"dash_id"`
UserId int `db:"user_id" json:"user_id"`
Status int `db:"status" json:"status"`
User *User `json:"user"`
}
type DashMembers []*DashMember
func (dm DashMembers) DashIds() []int {
ids := make([]int, len(dm))
for k, v := range dm {
ids[k] = v.DashId
}
return ids
}
func (dm DashMembers) ApprovedOnly() DashMembers {
res := make(DashMembers, 0, len(dm))
for _, m := range dm {
if m.Status == MemberStatusApproved {
res = append(res, m)
}
}
return res
}
func (ds DashMembers) ByUserId() map[int]*DashMember {
res := make(map[int]*DashMember, len(ds))
for _, v := range ds {
res[v.UserId] = v
}
return res
}
func (ds DashMembers) ByDashId() map[int]*DashMember {
res := make(map[int]*DashMember, len(ds))
for _, v := range ds {
res[v.DashId] = v
}
return res
}
func (ds DashMembers) HasUser(userId int) *DashMember {
for _, v := range ds {
if v.UserId == userId {
return v
}
}
return nil
}
func (ds DashMembers) HasDash(dashId int) *DashMember {
for _, v := range ds {
if v.DashId == dashId {
return v
}
}
return nil
}