import type { db } from "../db"; import type { Question } from "../party-types"; import type { PartyAnalytics } from "./question-utils"; import { buildQuestionWindow, getQuestionRange } from "./question-utils"; type NumericQuestion = Omit, "startTimestamp" | "endTimestamp">; type BuildNumericQuestionInput = { db: typeof db; analytics: PartyAnalytics; index: number; }; async function getAlbumReleaseYear({ db, analytics, index, }: BuildNumericQuestionInput): Promise { const trackName = analytics?.storyClusters?.[0]?.tracks?.[0]?.name; const track = trackName ? await db.query.track.findFirst({ where: { name: trackName, }, with: { album: true, }, }) : null; const correct = track?.album?.release_date?.getFullYear() ?? new Date().getFullYear() - 1 - index; const subject = track?.album?.name ?? track?.name ?? "unknown album"; return { type: "numeric", text: `What's the release year of ${subject}?`, correct, range: getQuestionRange(correct, 5), points: 10, }; } export async function buildNumericQuestion( input: BuildNumericQuestionInput, ): Promise { return buildQuestionWindow(await getAlbumReleaseYear(input)); }