refactor: check persisted json payload shape instead of double casts (#152) (#154)
Backend verify / commits (push) Skipped
Backend verify / security (push) Successful in 59s
Backend verify / verify (push) Failing after 6m3s

This commit was merged in pull request #154.
This commit is contained in:
2026-11-02 07:31:24 +03:00
parent a18d9dbdc8
commit a80bbbf1e2
6 changed files with 70 additions and 21 deletions
@@ -200,3 +200,16 @@ export class PortfolioRepository {
export function portfolioWorkKey(accountId: string): string {
return `portfolio:${JSON.stringify(accountId)}`;
}
// Json payload is written only by publish(); a shape check turns corruption into an explicit 500.
export function portfolioSnapshot(value: Prisma.JsonValue): PortfolioDto {
const snapshot = value as null | Partial<PortfolioDto>;
if (
!Array.isArray(snapshot?.positions) ||
!Array.isArray(snapshot.totalsByCurrency) ||
!Array.isArray(snapshot.cashBalances)
) {
throw new Error('Corrupted portfolio snapshot payload');
}
return snapshot as PortfolioDto;
}