brackt/app/models/draft-pick.ts

73 lines
1.8 KiB
TypeScript
Raw Normal View History

import { database } from "~/database/context";
import * as schema from "~/database/schema";
import { eq, and } from "drizzle-orm";
export async function createDraftPick(data: {
seasonId: string;
teamId: string;
participantId: string;
pickNumber: number;
round: number;
pickInRound: number;
pickedByUserId: string;
pickedByType: "owner" | "commissioner" | "auto";
timeUsed: number;
}) {
const db = database();
const [pick] = await db.insert(schema.draftPicks).values(data).returning();
return pick;
}
export async function getDraftPicks(seasonId: string) {
const db = database();
return await db
.select()
.from(schema.draftPicks)
.where(eq(schema.draftPicks.seasonId, seasonId))
.orderBy(schema.draftPicks.pickNumber);
}
export async function getDraftPickByNumber(seasonId: string, pickNumber: number) {
const db = database();
const [pick] = await db
.select()
.from(schema.draftPicks)
.where(
and(
eq(schema.draftPicks.seasonId, seasonId),
eq(schema.draftPicks.pickNumber, pickNumber)
)
);
return pick;
}
export async function getTeamDraftPicks(teamId: string) {
const db = database();
return await db
.select()
.from(schema.draftPicks)
.where(eq(schema.draftPicks.teamId, teamId))
.orderBy(schema.draftPicks.pickNumber);
}
export async function isParticipantDrafted(seasonId: string, participantId: string) {
const db = database();
const [pick] = await db
.select()
.from(schema.draftPicks)
.where(
and(
eq(schema.draftPicks.seasonId, seasonId),
eq(schema.draftPicks.participantId, participantId)
)
);
return !!pick;
}
export async function deleteAllDraftPicks(seasonId: string) {
const db = database();
await db
.delete(schema.draftPicks)
.where(eq(schema.draftPicks.seasonId, seasonId));
}