From ad69ffd822425c2e957036ab56f66e6ad8cb2fa1 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Thu, 24 Sep 2026 22:35:36 -0400 Subject: [PATCH] fix: create historical plays from independent function without state --- .../common/database/drizzle/entityUtils.ts | 17 +++++++++++++++++ .../repositories/PlayHistoricalRepository.ts | 5 ++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/backend/common/database/drizzle/entityUtils.ts b/src/backend/common/database/drizzle/entityUtils.ts index 51a5e525..53f3cd53 100644 --- a/src/backend/common/database/drizzle/entityUtils.ts +++ b/src/backend/common/database/drizzle/entityUtils.ts @@ -92,6 +92,23 @@ export const generateInputEntity = (data: PlayInputNew): PlayInputNew => { return {...data, playHash}; } +export const generatePlayHistoricalEntity = (play: PlayObject, opts: PlayHistoricalEntityOpts = {}): PlayHistoricalNew => { + const { + seenAt = dayjs(), + playedAt = play.data.playDate, + ...restOpts + } = opts; + const {playHash, mbidIdentifier} = generatePlayEntity(play); + return { + play, + playHash, + mbidIdentifier, + playedAt, + seenAt: play.meta.seenAt ?? seenAt, + ...restOpts + }; +} + export const generateQueueStateEntity = (data: QueueStateNew): QueueStateNew => { return data; } diff --git a/src/backend/common/database/drizzle/repositories/PlayHistoricalRepository.ts b/src/backend/common/database/drizzle/repositories/PlayHistoricalRepository.ts index 0c15367e..02589616 100644 --- a/src/backend/common/database/drizzle/repositories/PlayHistoricalRepository.ts +++ b/src/backend/common/database/drizzle/repositories/PlayHistoricalRepository.ts @@ -1,6 +1,6 @@ import { type DbConcrete, runTransaction } from "../drizzleUtils.ts"; import { type PlayObject, TA_DEFAULT_ACCURACY, type TemporalAccuracy } from "../../../../../core/Atomic.ts"; -import { generatePlayEntity, hydratePlaySelect, type PlayHydateOptions, type PlayHistoricalEntityOpts, type PlayEntityOpts } from "../entityUtils.ts"; +import { generatePlayHistoricalEntity, hydratePlaySelect, type PlayHydateOptions, type PlayHistoricalEntityOpts } from "../entityUtils.ts"; import { plays, playsHistorical } from "../schema/schema.ts"; import type {FindWhere, FindMany, WhereClause, PlayHistoricalSelect, PlayHistoricalNew} from "../drizzleTypes.ts";; import type { MarkOptional } from "ts-essentials"; @@ -92,8 +92,7 @@ export class DrizzlePlayHistoricalRepository extends DrizzleBaseRepository<'play play, ...rest } = data; - // TODO strict - return generatePlayEntity(play, { componentId: this.componentId, ...rest } as PlayEntityOpts); + return generatePlayHistoricalEntity(play, { componentId: this.componentId, ...rest }); }); playRows = await this.db.insert(playsHistorical).values(entitiesData).returning(); -- 2.51.2