mirror of
https://github.com/Sendouc/sendou.ink.git
synced 2026-04-26 09:20:24 -05:00
* Initial * CSS lint * Test CI * Add 1v1, 2v2, and 3v3 Tags (#1771) * Initial * CSS lint * Test CI * Rename step --------- Co-authored-by: xi <104683822+ximk@users.noreply.github.com>
46 lines
976 B
TypeScript
46 lines
976 B
TypeScript
import { sql } from "~/db/sql";
|
|
|
|
const makeMemberOwnerStm = sql.prepare(/* sql */ `
|
|
update "GroupMember"
|
|
set "role" = 'OWNER'
|
|
where "GroupMember"."groupId" = @groupId
|
|
and "GroupMember"."userId" = @userId
|
|
`);
|
|
|
|
const deleteGroupMemberStm = sql.prepare(/* sql */ `
|
|
delete from "GroupMember"
|
|
where "GroupMember"."groupId" = @groupId
|
|
and "GroupMember"."userId" = @userId
|
|
`);
|
|
|
|
const deleteGroupStm = sql.prepare(/* sql */ `
|
|
delete from "Group"
|
|
where "Group"."id" = @groupId
|
|
`);
|
|
|
|
export const leaveGroup = sql.transaction(
|
|
({
|
|
groupId,
|
|
userId,
|
|
newOwnerId,
|
|
wasOwner,
|
|
}: {
|
|
groupId: number;
|
|
userId: number;
|
|
newOwnerId: number | null;
|
|
wasOwner: boolean;
|
|
}) => {
|
|
if (!wasOwner) {
|
|
deleteGroupMemberStm.run({ groupId, userId });
|
|
return;
|
|
}
|
|
|
|
if (newOwnerId) {
|
|
makeMemberOwnerStm.run({ groupId, userId: newOwnerId });
|
|
deleteGroupMemberStm.run({ groupId, userId });
|
|
} else {
|
|
deleteGroupStm.run({ groupId });
|
|
}
|
|
},
|
|
);
|