refactor: share prisma json codec and check progress shape (WealthLedger/backend#170) (#191)
Backend verify / commits (push) Skipped
Backend verify / security (push) Successful in 1m5s
Backend verify / verify (push) Failing after 7m21s

This commit was merged in pull request #191.
This commit is contained in:
2026-11-04 22:28:11 +03:00
parent cd78b43783
commit 85a71967fa
10 changed files with 196 additions and 59 deletions
@@ -4,6 +4,7 @@ import { isDeepStrictEqual } from 'node:util';
import type { Prisma } from '../../../../../generated/prisma/client';
import { PrismaService } from '../../../../prisma/prisma.service';
import { toJson } from '../../../../prisma/to-json';
const FIRST_BATCH_OFFSET = 0;
@@ -142,13 +143,11 @@ export class ForecastRepository {
) {
return fallback;
}
const revisions = JSON.parse(
JSON.stringify({
portfolioProjection: input.portfolioProjection,
portfolios: input.portfolios,
sources: input.sources,
}),
) as Prisma.InputJsonObject;
const revisions = toJson({
portfolioProjection: input.portfolioProjection,
portfolios: input.portfolios,
sources: input.sources,
});
const timestamps = input.timestamps as Prisma.InputJsonArray;
if (
fallback?.scopeKey === input.scopeKey &&
@@ -159,9 +158,7 @@ export class ForecastRepository {
}
const data = {
membershipRevision: input.membershipRevision,
payload: JSON.parse(
JSON.stringify(input.candidate),
) as Prisma.InputJsonObject,
payload: toJson(input.candidate),
dependencyRevisions: revisions,
sourceTimestamps: timestamps,
calculatedAt: new Date(),
@@ -8,6 +8,7 @@ import { TbankErrorCode } from '../../../../integrations/tbank/tbank-error-code'
import { lockConnectionGeneration } from '../../../../integrations/tbank/tbank-sync-claim';
import { isJoinableRunningAttempt, tbankSourceNeedsRefresh, tbankSourceTtlMs } from '../../../../integrations/tbank/tbank.api';
import { PrismaService } from '../../../../prisma/prisma.service';
import { toJson } from '../../../../prisma/to-json';
const EXPECTED_UPDATED_ACCOUNTS = 1;
@@ -128,7 +129,7 @@ export class PortfolioRepository {
accountId,
};
const data = {
payload: JSON.parse(JSON.stringify(snapshot)) as Prisma.InputJsonObject,
payload: toJson(snapshot),
fetchedAt: new Date(snapshot.lastSuccessfulAt),
};
await tx.tbankPortfolio.upsert({