mirror of
https://github.com/Sendouc/sendou.ink.git
synced 2026-05-10 04:40:46 -05:00
42 lines
896 B
TypeScript
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,
|
|
});
|
|
}
|
|
);
|