87 lines
2.4 KiB
JavaScript
87 lines
2.4 KiB
JavaScript
// This process is deliberately killed by the SQLite suite at durable boundaries.
|
|
require('../e2e-env.cjs');
|
|
const { ConfigService } = require('@nestjs/config');
|
|
|
|
const {
|
|
TbankAccessService,
|
|
} = require('../../dist/src/integrations/tbank/tbank-access.service');
|
|
const {
|
|
TbankTokenService,
|
|
} = require('../../dist/src/integrations/tbank/tbank-token.service');
|
|
const {
|
|
BrokerageOperationsSyncService,
|
|
} = require('../../dist/src/modules/investments/operations/application/brokerage-operations-sync.service');
|
|
const {
|
|
BrokerageOperationsRepository,
|
|
} = require('../../dist/src/modules/investments/operations/infrastructure/brokerage-operations.repository');
|
|
const { PrismaService } = require('../../dist/src/prisma/prisma.service');
|
|
const mode = process.argv[2];
|
|
const prisma = new PrismaService(new ConfigService(process.env));
|
|
const repository = new BrokerageOperationsRepository(prisma);
|
|
const tokens = new TbankTokenService(new ConfigService(process.env));
|
|
const stopped = new Promise(() => {});
|
|
let handle;
|
|
let pages = 0;
|
|
const checkpoint = () => process.send({ checkpoint: mode, handle });
|
|
const upstream = {
|
|
async getOperationsByCursor() {
|
|
pages += 1;
|
|
if (mode === 'between-pages' && pages === 2) {
|
|
checkpoint();
|
|
return stopped;
|
|
}
|
|
return {
|
|
hasNext: mode === 'between-pages',
|
|
nextCursor: mode === 'between-pages' ? 'discard-after-restart' : '',
|
|
items: [
|
|
{
|
|
id: 'crash-row',
|
|
date: { seconds: '1768000000' },
|
|
payment: { units: '10', nano: 1, currency: 'rub' },
|
|
},
|
|
],
|
|
};
|
|
},
|
|
};
|
|
const publish = repository.publish.bind(repository);
|
|
repository.publish = async (...args) => {
|
|
if (mode === 'before-publish') {
|
|
checkpoint();
|
|
return stopped;
|
|
}
|
|
const result = await publish(...args);
|
|
if (mode === 'after-publish') {
|
|
checkpoint();
|
|
return stopped;
|
|
}
|
|
return result;
|
|
};
|
|
const service = new BrokerageOperationsSyncService(
|
|
repository,
|
|
new TbankAccessService(prisma, tokens),
|
|
upstream,
|
|
{
|
|
event() {
|
|
process.send({ error: 'Unexpected worker persistence failure' });
|
|
},
|
|
},
|
|
);
|
|
process.on('message', () => {});
|
|
(async () => {
|
|
await prisma.$connect();
|
|
handle = await service.request(
|
|
'owner',
|
|
[
|
|
{
|
|
accountId: 'account',
|
|
from: new Date('2026-01-01Z'),
|
|
to: new Date('2026-02-01Z'),
|
|
},
|
|
],
|
|
true,
|
|
);
|
|
})().catch((error) => {
|
|
process.send({ error: error.message });
|
|
process.exitCode = 1;
|
|
});
|