sendou.ink/app/features/sendouq/queries/leaveGroup.server.ts
Kalle fd48bced91
Migrate Prettier/Eslint/Stylelint setup to Biome (#1772)
* 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>
2024-06-24 13:07:17 +03:00

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 });
}
},
);