Skip to content

Commit ac9a785

Browse files
authored
Merge pull request #6 from bcc-code/feat/teams-mutations
Added teams mutations
2 parents 6a6a6c9 + ff8ed85 commit ac9a785

File tree

11 files changed

+1411
-59
lines changed

11 files changed

+1411
-59
lines changed

CLAUDE.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,5 @@ Each project can contain multiple events, which usually is some form of in-perso
108108
- When creating commits sign with: Assited by [MODEL] via [Tool]
109109
- Generate unit tests for functions you write. Use the unit tests to verify correctnes. When mocking use mockery, with the config `.mockery.yml`.
110110
- Put notes into notes folder. Before doing a big investigation check if we already have notes on the system.
111-
- Use "make gqltest" in ./backend/ dir to run a sanity check after changes to schemas and resolvers.
112111
- Update the notes if you make changes to schemas and other things that invalidate the notest.
113112
- Do not EVER automatically run the seed script!

backend/internal/database/queries/teams.sql

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,3 +67,95 @@ INNER JOIN team_members tm ON t.id = tm.team_id
6767
WHERE tm.user_id = @userid::text
6868
AND t.project_id = @projectid::text
6969
LIMIT 1;
70+
71+
-- name: CreateTeam :one
72+
INSERT INTO teams (id, project_id, name, description, join_code)
73+
VALUES (@id::text, @projectid::text, @name::text, @description::text, @joincode::text)
74+
RETURNING id, project_id, name, description, join_code, super_team_id, created_at, updated_at;
75+
76+
-- name: UpdateTeam :one
77+
UPDATE teams
78+
SET
79+
name = COALESCE(@name::text, name),
80+
description = COALESCE(@description::text, description),
81+
updated_at = now()
82+
WHERE id = @id::text
83+
RETURNING id, project_id, name, description, join_code, super_team_id, created_at, updated_at;
84+
85+
-- name: DeleteTeam :exec
86+
DELETE FROM teams
87+
WHERE id = @id::text;
88+
89+
-- name: GetTeamByJoinCode :one
90+
SELECT id, project_id, name, description, join_code, super_team_id, created_at, updated_at
91+
FROM teams
92+
WHERE join_code = @joincode::text;
93+
94+
-- name: RegenerateJoinCode :one
95+
UPDATE teams
96+
SET join_code = @joincode::text, updated_at = now()
97+
WHERE id = @id::text
98+
RETURNING id, project_id, name, description, join_code, super_team_id, created_at, updated_at;
99+
100+
-- name: AddTeamMember :exec
101+
INSERT INTO team_members (team_id, user_id)
102+
VALUES (@teamid::text, @userid::text)
103+
ON CONFLICT (team_id, user_id) DO NOTHING;
104+
105+
-- name: RemoveTeamMember :exec
106+
DELETE FROM team_members
107+
WHERE team_id = @teamid::text AND user_id = @userid::text;
108+
109+
-- name: HasTeamMemberFromChurch :one
110+
SELECT EXISTS(
111+
SELECT 1
112+
FROM team_members tm
113+
INNER JOIN users u ON tm.user_id = u.id
114+
WHERE tm.team_id = @teamid::text
115+
AND u.church_id = @churchid::text
116+
);
117+
118+
-- name: GetTeamProjectID :one
119+
SELECT project_id
120+
FROM teams
121+
WHERE id = @teamid::text;
122+
123+
-- name: RemoveUserFromTeamsInProject :exec
124+
DELETE FROM team_members
125+
WHERE user_id = @userid::text
126+
AND team_id IN (
127+
SELECT id FROM teams WHERE project_id = @projectid::text
128+
);
129+
130+
-- name: RemoveTeamLeadRole :exec
131+
DELETE FROM user_roles
132+
WHERE user_id = @userid::text
133+
AND team_id = @teamid::text
134+
AND role = 'TEAM_LEAD';
135+
136+
-- name: AssignTeamLeadRole :one
137+
INSERT INTO user_roles (id, user_id, role, team_id, assigned_by, assigned_at)
138+
VALUES (@id::text, @userid::text, 'TEAM_LEAD', @teamid::text, @assignedby::text, @assignedat::timestamptz)
139+
RETURNING id, user_id, role, church_id, project_id, team_id, assigned_by, assigned_at;
140+
141+
-- name: GetTeamLeadUserID :one
142+
SELECT user_id
143+
FROM user_roles
144+
WHERE team_id = @teamid::text
145+
AND role = 'TEAM_LEAD'
146+
LIMIT 1;
147+
148+
-- name: IsUserTeamMember :one
149+
SELECT EXISTS(
150+
SELECT 1
151+
FROM team_members
152+
WHERE team_id = @teamid::text
153+
AND user_id = @userid::text
154+
);
155+
156+
-- name: JoinCodeExists :one
157+
SELECT EXISTS(
158+
SELECT 1
159+
FROM teams
160+
WHERE join_code = @joincode::text
161+
);

0 commit comments

Comments
 (0)