| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| import { prisma } from '../utils/prisma.js'; |
|
|
| export const signalsRepository = { |
| create({ marketId, signal, confidence, summary, keyRisk, newsCount, modelVersion, impliedProb, fairProb, edgePoints }) { |
| return prisma.aISignal.create({ |
| data: { marketId, signal, confidence, summary, keyRisk, newsCount, modelVersion, impliedProb, fairProb, edgePoints }, |
| }); |
| }, |
|
|
| findLatestByMarket(marketId) { |
| return prisma.aISignal.findFirst({ |
| where: { marketId }, |
| orderBy: { generatedAt: 'desc' }, |
| }); |
| }, |
|
|
| findLatestForMarkets(marketIds) { |
| if (!marketIds || marketIds.length === 0) return Promise.resolve([]); |
| return prisma.aISignal.findMany({ |
| where: { marketId: { in: marketIds } }, |
| orderBy: [{ marketId: 'asc' }, { generatedAt: 'desc' }], |
| }).then((rows) => { |
| |
| const seen = new Set(); |
| return rows.filter((r) => { |
| if (seen.has(r.marketId)) return false; |
| seen.add(r.marketId); |
| return true; |
| }); |
| }); |
| }, |
| }; |
|
|