sendou.ink/app/features/team/queries/createNewTeam.server.ts
2023-01-08 12:05:55 +02:00

42 lines
896 B
TypeScript

import { nanoid } from "nanoid";
import { INVITE_CODE_LENGTH } from "~/constants";
import { sql } from "~/db/sql";
import type { Team } from "~/db/types";
const createTeamStm = sql.prepare(/* sql */ `
insert into "AllTeam"
("name", "customUrl", "inviteCode")
values (@name, @customUrl, @inviteCode)
returning *
`);
const createMemberStm = sql.prepare(/* sql */ `
insert into "AllTeamMember"
("teamId", "userId", "isOwner")
values (@teamId, @userId, @isOwner)
`);
export const createNewTeam = sql.transaction(
({
name,
customUrl,
captainId,
}: {
name: string;
customUrl: string;
captainId: number;
}) => {
const team = createTeamStm.get({
name,
customUrl,
inviteCode: nanoid(INVITE_CODE_LENGTH),
}) as Team;
createMemberStm.run({
teamId: team.id,
userId: captainId,
isOwner: 1,
});
}
);