sendou.ink/app/features/team/queries/createNewTeam.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

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