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();