mirror of
https://github.com/Sendouc/sendou.ink.git
synced 2026-05-22 19:40:57 -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>
42 lines
855 B
TypeScript
42 lines
855 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,
|
|
});
|
|
},
|
|
);
|