brackt/app/models/watchlist.ts

58 lines
1.4 KiB
TypeScript
Raw Permalink Normal View History

import { database } from "~/database/context";
import * as schema from "~/database/schema";
import { eq, and } from "drizzle-orm";
export async function addToWatchlist(data: {
seasonId: string;
teamId: string;
participantId: string;
}) {
const db = database();
const [item] = await db.insert(schema.watchlist).values(data).returning();
return item;
}
export async function removeFromWatchlist(data: {
seasonId: string;
teamId: string;
participantId: string;
}) {
const db = database();
await db
.delete(schema.watchlist)
.where(
and(
eq(schema.watchlist.seasonId, data.seasonId),
eq(schema.watchlist.teamId, data.teamId),
eq(schema.watchlist.participantId, data.participantId)
)
);
}
export async function getTeamWatchlist(teamId: string, seasonId: string) {
const db = database();
return await db
.select()
.from(schema.watchlist)
.where(
and(
eq(schema.watchlist.teamId, teamId),
eq(schema.watchlist.seasonId, seasonId)
)
);
}
export async function isOnWatchlist(
teamId: string,
participantId: string
): Promise<boolean> {
const db = database();
const existing = await db.query.watchlist.findFirst({
where: and(
eq(schema.watchlist.teamId, teamId),
eq(schema.watchlist.participantId, participantId)
),
});
return !!existing;
}