import { int, mysqlTable, varchar } from 'drizzle-orm/mysql-core'; import { team } from './team.ts'; import type { MySql2Database } from 'drizzle-orm/mysql2'; import { eq } from 'drizzle-orm'; type Database = MySql2Database<{ teamDraft: typeof teamDraft }>; export const teamDraft = mysqlTable('team_draft', { memberOneName: varchar('member_one_name', { length: 255 }).unique().notNull(), memberTwoName: varchar('member_two_name', { length: 255 }).unique().notNull(), teamId: int('team_id') .notNull() .references(() => team.id) }); export type AddTeamDraftReq = { memberOneName: string; memberTwoName: string; teamId: number; }; export type DeleteTeamDraftReq = { teamId: number; }; export type GetTeamDraftByUsernameReq = { username: string; }; export type GetTeamDraftByMemberOneReq = { memberOneName: string; }; export async function addTeamDraft(db: Database, values: AddTeamDraftReq) { await db.insert(teamDraft).values(values); } export async function deleteTeamDraft(db: Database, values: DeleteTeamDraftReq) { await db.delete(teamDraft).where(eq(teamDraft.teamId, values.teamId)); } export async function getTeamDraftByUsername(db: Database, values: GetTeamDraftByUsernameReq) { const td = await db.query.teamDraft.findFirst({ where: eq(teamDraft.memberOneName, values.username) }); return td ?? null; } export async function getTeamDraftByMemberOne(db: Database, values: GetTeamDraftByMemberOneReq) { const td = await db.query.teamDraft.findFirst({ where: eq(teamDraft.memberOneName, values.memberOneName) }); return td ?? null; }