Files
stock-web/src/repositories/recommendationRepo.ts
2026-03-16 09:43:24 +08:00

41 lines
1.1 KiB
TypeScript

import { db, type RecommendationSnapshotRow } from "@/src/db/appDb";
import type {
RecommendationSegment,
RecommendationSnapshot,
} from "@/src/recommendations/types";
const DEFAULT_USER_ID = "anon";
function key(userId: string, date: string, segment: RecommendationSegment) {
return `${userId}:${date}:${segment}`;
}
export async function getRecommendationSnapshot(
date: string,
segment: RecommendationSegment,
userId = DEFAULT_USER_ID,
) {
return db.recommendationSnapshots.get(key(userId, date, segment));
}
export async function upsertRecommendationSnapshot(
snapshot: RecommendationSnapshot,
userId = DEFAULT_USER_ID,
) {
const row: RecommendationSnapshotRow = {
id: key(userId, snapshot.date, snapshot.segment),
userId,
date: snapshot.date,
segment: snapshot.segment,
generatedAt: snapshot.generatedAt,
screeningVersion: snapshot.screeningVersion,
data: snapshot,
};
await db.recommendationSnapshots.put(row);
return row;
}
export function rowToSnapshot(row: RecommendationSnapshotRow): RecommendationSnapshot {
return row.data as RecommendationSnapshot;
}