This repository has been archived by the owner on Jun 12, 2022. It is now read-only.
/
teams.go
245 lines (208 loc) 路 4.58 KB
/
teams.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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
package database
import (
"errors"
"log"
)
// TeamUserRole gets a users role in team
func (d *Database) TeamUserRole(UserID string, TeamID string) (string, error) {
var teamRole string
e := d.db.QueryRow(
`SELECT role FROM team_get_user_role($1, $2)`,
UserID,
TeamID,
).Scan(
&teamRole,
)
if e != nil {
log.Println(e)
return "", errors.New("error getting team users role")
}
return teamRole, nil
}
// TeamGet gets an team
func (d *Database) TeamGet(TeamID string) (*Team, error) {
var team = &Team{
TeamID: "",
Name: "",
CreatedDate: "",
UpdatedDate: "",
}
e := d.db.QueryRow(
`SELECT id, name, created_date, updated_date FROM team_get_by_id($1)`,
TeamID,
).Scan(
&team.TeamID,
&team.Name,
&team.CreatedDate,
&team.UpdatedDate,
)
if e != nil {
log.Println(e)
return nil, errors.New("team not found")
}
return team, nil
}
// TeamListByUser gets a list of teams the user is on
func (d *Database) TeamListByUser(UserID string, Limit int, Offset int) []*Team {
var teams = make([]*Team, 0)
rows, err := d.db.Query(
`SELECT id, name, created_date, updated_date FROM team_list_by_user($1, $2, $3);`,
UserID,
Limit,
Offset,
)
if err == nil {
defer rows.Close()
for rows.Next() {
var team Team
if err := rows.Scan(
&team.TeamID,
&team.Name,
&team.CreatedDate,
&team.UpdatedDate,
); err != nil {
log.Println(err)
} else {
teams = append(teams, &team)
}
}
} else {
log.Println(err)
}
return teams
}
// TTeamCreate creates a team with current user as an ADMIN
func (d *Database) TeamCreate(UserID string, TeamName string) (string, error) {
var TeamID string
err := d.db.QueryRow(`
SELECT teamId FROM team_create($1, $2);`,
UserID,
TeamName,
).Scan(&TeamID)
if err != nil {
log.Println("Unable to create team: ", err)
return "", err
}
return TeamID, nil
}
// TeamAddUser adds a user to a team
func (d *Database) TeamAddUser(TeamID string, UserID string, Role string) (string, error) {
_, err := d.db.Exec(
`SELECT team_user_add($1, $2, $3);`,
TeamID,
UserID,
Role,
)
if err != nil {
log.Println("Unable to add user to team: ", err)
return "", err
}
return TeamID, nil
}
// TeamUserList gets a list of team users
func (d *Database) TeamUserList(TeamID string, Limit int, Offset int) []*OrganizationUser {
var users = make([]*OrganizationUser, 0)
rows, err := d.db.Query(
`SELECT id, name, email, role FROM team_user_list($1, $2, $3);`,
TeamID,
Limit,
Offset,
)
if err == nil {
defer rows.Close()
for rows.Next() {
var usr OrganizationUser
if err := rows.Scan(
&usr.UserID,
&usr.Name,
&usr.Email,
&usr.Role,
); err != nil {
log.Println(err)
} else {
users = append(users, &usr)
}
}
} else {
log.Println(err)
}
return users
}
// TeamRemoveUser removes a user from a team
func (d *Database) TeamRemoveUser(TeamID string, UserID string) error {
_, err := d.db.Exec(
`CALL team_user_remove($1, $2);`,
TeamID,
UserID,
)
if err != nil {
log.Println("Unable to remove user from team: ", err)
return err
}
return nil
}
// TeamStoryboardList gets a list of team storyboards
func (d *Database) TeamStoryboardList(TeamID string, Limit int, Offset int) []*Storyboard {
var storyboards = make([]*Storyboard, 0)
rows, err := d.db.Query(
`SELECT id, name FROM team_storyboard_list($1, $2, $3);`,
TeamID,
Limit,
Offset,
)
if err == nil {
defer rows.Close()
for rows.Next() {
var tb Storyboard
if err := rows.Scan(
&tb.StoryboardID,
&tb.StoryboardName,
); err != nil {
log.Println(err)
} else {
storyboards = append(storyboards, &tb)
}
}
} else {
log.Println(err)
}
return storyboards
}
// TeamAddStoryboard adds a storyboard to a team
func (d *Database) TeamAddStoryboard(TeamID string, StoryboardID string) error {
_, err := d.db.Exec(
`SELECT team_storyboard_add($1, $2);`,
TeamID,
StoryboardID,
)
if err != nil {
log.Println("Unable to add storyboard to team: ", err)
return err
}
return nil
}
// TeamRemoveStoryboard removes a storyboard from a team
func (d *Database) TeamRemoveStoryboard(TeamID string, StoryboardID string) error {
_, err := d.db.Exec(
`SELECT team_storyboard_remove($1, $2);`,
TeamID,
StoryboardID,
)
if err != nil {
log.Println("Unable to remove storyboard from team: ", err)
return err
}
return nil
}
// TeamDelete deletes a team
func (d *Database) TeamDelete(TeamID string) error {
_, err := d.db.Exec(
`CALL team_delete($1);`,
TeamID,
)
if err != nil {
log.Println("Unable to delete team: ", err)
return err
}
return nil
}