@develit-services/bank 4.1.0 → 4.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/database/schema.d.cts +1 -1
- package/dist/database/schema.d.mts +1 -1
- package/dist/database/schema.d.ts +1 -1
- package/dist/export/worker.cjs +99 -2
- package/dist/export/worker.d.cts +15 -14
- package/dist/export/worker.d.mts +15 -14
- package/dist/export/worker.d.ts +15 -14
- package/dist/export/worker.mjs +99 -2
- package/dist/export/workflows.cjs +102 -87
- package/dist/export/workflows.mjs +102 -87
- package/dist/export/wrangler.d.cts +2 -1
- package/dist/export/wrangler.d.mts +2 -1
- package/dist/export/wrangler.d.ts +2 -1
- package/dist/shared/{bank.C0JeMUxQ.d.cts → bank.BOI0GA-f.d.cts} +5 -3
- package/dist/shared/{bank.C0JeMUxQ.d.mts → bank.BOI0GA-f.d.mts} +5 -3
- package/dist/shared/{bank.C0JeMUxQ.d.ts → bank.BOI0GA-f.d.ts} +5 -3
- package/dist/shared/{bank.xrNekjj9.cjs → bank.C2QV_SMx.cjs} +24 -4
- package/dist/shared/{bank.BxZARqNE.mjs → bank.CL02VO9K.mjs} +24 -4
- package/dist/shared/{bank.CjPpPiJF.d.mts → bank.CT-uUhZB.d.mts} +1 -1
- package/dist/shared/{bank.DNFep60v.cjs → bank.Cfu7ZqyP.cjs} +1 -1
- package/dist/shared/{bank.DflRiCrT.d.ts → bank.DDmes7Gx.d.ts} +1 -1
- package/dist/shared/{bank.CwB3cDIG.d.cts → bank.DUd_XvqB.d.cts} +1 -1
- package/dist/shared/{bank.BydmpvCs.d.ts → bank.Dq24vYU7.d.cts} +1 -0
- package/dist/shared/{bank.BydmpvCs.d.cts → bank.Dq24vYU7.d.mts} +1 -0
- package/dist/shared/{bank.BydmpvCs.d.mts → bank.Dq24vYU7.d.ts} +1 -0
- package/dist/shared/{bank.BScD3GXI.mjs → bank.qcrBpYcu.mjs} +1 -1
- package/dist/types.cjs +1 -1
- package/dist/types.d.cts +5 -5
- package/dist/types.d.mts +5 -5
- package/dist/types.d.ts +5 -5
- package/dist/types.mjs +1 -1
- package/package.json +1 -1
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
const backendSdk = require('@develit-io/backend-sdk');
|
|
4
|
-
const ott_zod = require('../shared/bank.
|
|
4
|
+
const ott_zod = require('../shared/bank.C2QV_SMx.cjs');
|
|
5
5
|
const batchLifecycle = require('../shared/bank.NF8bZBy0.cjs');
|
|
6
6
|
const drizzleOrm = require('drizzle-orm');
|
|
7
|
-
const credentialsResolver = require('../shared/bank.
|
|
7
|
+
const credentialsResolver = require('../shared/bank.Cfu7ZqyP.cjs');
|
|
8
8
|
const cloudflare_workers = require('cloudflare:workers');
|
|
9
9
|
const cloudflare_workflows = require('cloudflare:workflows');
|
|
10
10
|
const d1 = require('drizzle-orm/d1');
|
|
@@ -305,6 +305,10 @@ function createWorkflowLogger(instanceId) {
|
|
|
305
305
|
};
|
|
306
306
|
}
|
|
307
307
|
|
|
308
|
+
function getStepCount(ctx) {
|
|
309
|
+
return ctx.step?.count ?? 0;
|
|
310
|
+
}
|
|
311
|
+
|
|
308
312
|
async function pushToQueue(queue, message) {
|
|
309
313
|
if (!Array.isArray(message)) {
|
|
310
314
|
await queue.send(message, { contentType: "v8" });
|
|
@@ -325,6 +329,10 @@ class BankSyncAccountPayments extends cloudflare_workers.WorkflowEntrypoint {
|
|
|
325
329
|
if (!accountId) {
|
|
326
330
|
throw new cloudflare_workflows.NonRetryableError(`Haven't obtained accountId to load.`);
|
|
327
331
|
}
|
|
332
|
+
const workflowStartedAt = await step.do(
|
|
333
|
+
"capture workflow start time",
|
|
334
|
+
async () => Date.now()
|
|
335
|
+
);
|
|
328
336
|
while (true) {
|
|
329
337
|
const now = /* @__PURE__ */ new Date();
|
|
330
338
|
const account = await step.do("load account", async () => {
|
|
@@ -390,99 +398,106 @@ class BankSyncAccountPayments extends cloudflare_workers.WorkflowEntrypoint {
|
|
|
390
398
|
const paymentsToProcess = payments.filter(
|
|
391
399
|
(p) => ott_zod.isPaymentCompleted(p.parsed)
|
|
392
400
|
);
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
401
|
+
const lastSyncBankRefIds = account.lastSyncMetadata?.lastSyncBankRefIds || [];
|
|
402
|
+
const paymentsToInsert = paymentsToProcess.filter(
|
|
403
|
+
(p) => !lastSyncBankRefIds.includes(p.parsed.bankRefId)
|
|
404
|
+
);
|
|
405
|
+
await step.do(
|
|
406
|
+
"process new payments and update lastSyncAt",
|
|
407
|
+
async (ctx) => {
|
|
408
|
+
const eventsToEmit = [];
|
|
409
|
+
const bankRefIds = paymentsToInsert.map((p) => p.parsed.bankRefId).filter((id) => id != null);
|
|
410
|
+
const BANK_REF_ID_CHUNK_SIZE = 90;
|
|
411
|
+
const matchingRequests = [];
|
|
412
|
+
for (let i = 0; i < bankRefIds.length; i += BANK_REF_ID_CHUNK_SIZE) {
|
|
413
|
+
const chunkIds = bankRefIds.slice(i, i + BANK_REF_ID_CHUNK_SIZE);
|
|
414
|
+
const rows = await db.select().from(ott_zod.tables.paymentRequest).where(
|
|
404
415
|
drizzleOrm.and(
|
|
405
|
-
drizzleOrm.inArray(ott_zod.tables.paymentRequest.bankRefId,
|
|
416
|
+
drizzleOrm.inArray(ott_zod.tables.paymentRequest.bankRefId, chunkIds),
|
|
406
417
|
drizzleOrm.eq(ott_zod.tables.paymentRequest.accountId, account.id),
|
|
407
|
-
drizzleOrm.eq(
|
|
408
|
-
ott_zod.tables.paymentRequest.connectorKey,
|
|
409
|
-
account.connectorKey
|
|
410
|
-
)
|
|
418
|
+
drizzleOrm.eq(ott_zod.tables.paymentRequest.connectorKey, account.connectorKey)
|
|
411
419
|
)
|
|
412
|
-
) : [];
|
|
413
|
-
const requestByBankRefId = Object.fromEntries(
|
|
414
|
-
matchingRequests.map((r) => [r.bankRefId, r])
|
|
415
420
|
);
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
421
|
+
matchingRequests.push(...rows);
|
|
422
|
+
}
|
|
423
|
+
const requestByBankRefId = Object.fromEntries(
|
|
424
|
+
matchingRequests.map((r) => [r.bankRefId, r])
|
|
425
|
+
);
|
|
426
|
+
const enrichedPayments = paymentsToInsert.map((p) => {
|
|
427
|
+
const req = p.parsed.bankRefId && requestByBankRefId[p.parsed.bankRefId] || null;
|
|
428
|
+
if (!req) return p;
|
|
429
|
+
return {
|
|
430
|
+
...p,
|
|
431
|
+
parsed: {
|
|
432
|
+
...p.parsed,
|
|
433
|
+
// queue-bus: transaction matching (DBU doesn't echo these in statements)
|
|
434
|
+
vs: p.parsed.vs ?? req.vs,
|
|
435
|
+
ss: p.parsed.ss ?? req.ss,
|
|
436
|
+
ks: p.parsed.ks ?? req.ks,
|
|
437
|
+
message: p.parsed.message ?? req.message,
|
|
438
|
+
// queue-bus: party creation
|
|
439
|
+
creditor: {
|
|
440
|
+
...p.parsed.creditor,
|
|
441
|
+
holderName: p.parsed.creditor?.holderName ?? req.creditor?.holderName
|
|
442
|
+
},
|
|
443
|
+
debtor: {
|
|
444
|
+
...p.parsed.debtor,
|
|
445
|
+
holderName: p.parsed.debtor?.holderName ?? req.debtor?.holderName
|
|
439
446
|
}
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
447
|
+
// NOT enriched: chargeBearer, instructionPriority, refId, batchId,
|
|
448
|
+
// createdAt, address, swiftBic — no downstream consumer in payment table
|
|
449
|
+
}
|
|
450
|
+
};
|
|
451
|
+
});
|
|
452
|
+
const createCommands = enrichedPayments.map(
|
|
453
|
+
(p) => credentialsResolver.createPaymentCommand(db, { payment: p.parsed }).command
|
|
454
|
+
);
|
|
455
|
+
eventsToEmit.push(
|
|
456
|
+
...enrichedPayments.map((p) => ({
|
|
457
|
+
eventType: "BANK_PAYMENT",
|
|
458
|
+
eventSignal: "paymentFetched",
|
|
459
|
+
bankPayment: p.parsed,
|
|
460
|
+
metadata: {
|
|
461
|
+
correlationId: p.parsed.correlationId,
|
|
462
|
+
entityId: p.parsed.id,
|
|
463
|
+
timestamp: /* @__PURE__ */ new Date()
|
|
464
|
+
}
|
|
465
|
+
}))
|
|
466
|
+
);
|
|
467
|
+
const lastSyncMetadata = {
|
|
468
|
+
payments: payments.length,
|
|
469
|
+
paymentsToProcess: paymentsToProcess.length,
|
|
470
|
+
paymentsInserted: paymentsToInsert.length,
|
|
471
|
+
lastSyncBankRefIds: paymentsToProcess.filter((p) => p.parsed.status === "BOOKED").map((p) => p.parsed.bankRefId),
|
|
472
|
+
lastSyncPayments: lastSyncBankRefIds.length,
|
|
473
|
+
eventsEmitted: eventsToEmit.length,
|
|
474
|
+
iterationCount: getStepCount(ctx),
|
|
475
|
+
workflowStartedAt
|
|
476
|
+
};
|
|
477
|
+
const updateLastSyncCommand = updateAccountLastSyncCommand(db, {
|
|
478
|
+
accountId: account.id,
|
|
479
|
+
lastSyncAt: now,
|
|
480
|
+
lastSyncMetadata
|
|
481
|
+
}).command;
|
|
482
|
+
if (createCommands.length) {
|
|
483
|
+
await db.batch(
|
|
484
|
+
backendSdk.asNonEmpty([updateLastSyncCommand, ...createCommands])
|
|
444
485
|
);
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
entityId: p.parsed.id,
|
|
453
|
-
timestamp: /* @__PURE__ */ new Date()
|
|
454
|
-
}
|
|
455
|
-
}))
|
|
486
|
+
} else {
|
|
487
|
+
await updateLastSyncCommand;
|
|
488
|
+
}
|
|
489
|
+
if (eventsToEmit.length) {
|
|
490
|
+
await pushToQueue(
|
|
491
|
+
this.env.QUEUE_BUS_QUEUE,
|
|
492
|
+
eventsToEmit
|
|
456
493
|
);
|
|
457
|
-
const lastSyncMetadata = {
|
|
458
|
-
payments: payments.length,
|
|
459
|
-
paymentsToProcess: paymentsToProcess.length,
|
|
460
|
-
paymentsInserted: paymentsToInsert.length,
|
|
461
|
-
lastSyncBankRefIds: paymentsToProcess.filter((p) => p.parsed.status === "BOOKED").map((p) => p.parsed.bankRefId),
|
|
462
|
-
lastSyncPayments: lastSyncBankRefIds.length,
|
|
463
|
-
eventsEmitted: eventsToEmit.length
|
|
464
|
-
};
|
|
465
|
-
const updateLastSyncCommand = updateAccountLastSyncCommand(db, {
|
|
466
|
-
accountId: account.id,
|
|
467
|
-
lastSyncAt: now,
|
|
468
|
-
lastSyncMetadata
|
|
469
|
-
}).command;
|
|
470
|
-
if (eventsToEmit.length) {
|
|
471
|
-
await db.batch(
|
|
472
|
-
backendSdk.asNonEmpty([updateLastSyncCommand, ...createCommands])
|
|
473
|
-
);
|
|
474
|
-
await pushToQueue(
|
|
475
|
-
this.env.QUEUE_BUS_QUEUE,
|
|
476
|
-
eventsToEmit
|
|
477
|
-
);
|
|
478
|
-
}
|
|
479
|
-
return {
|
|
480
|
-
...lastSyncMetadata,
|
|
481
|
-
newLastSyncAt: now
|
|
482
|
-
};
|
|
483
494
|
}
|
|
484
|
-
|
|
485
|
-
|
|
495
|
+
return {
|
|
496
|
+
...lastSyncMetadata,
|
|
497
|
+
newLastSyncAt: now
|
|
498
|
+
};
|
|
499
|
+
}
|
|
500
|
+
);
|
|
486
501
|
await step.sleep(
|
|
487
502
|
"Sleep for next sync",
|
|
488
503
|
`${account.syncIntervalS} seconds`
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { first, uuidv4, asNonEmpty } from '@develit-io/backend-sdk';
|
|
2
|
-
import { B as tables, G as relations, v as toBatchedPaymentFromPaymentRequest, z as toPreparedPayment, H as initiateConnector, m as isPaymentCompleted } from '../shared/bank.
|
|
2
|
+
import { B as tables, G as relations, v as toBatchedPaymentFromPaymentRequest, z as toPreparedPayment, H as initiateConnector, m as isPaymentCompleted } from '../shared/bank.CL02VO9K.mjs';
|
|
3
3
|
import { i as isBatchAuthorized, b as isBatchFailed, d as isBatchProcessing } from '../shared/bank.XqSw509X.mjs';
|
|
4
4
|
import { eq, and, inArray } from 'drizzle-orm';
|
|
5
|
-
import { g as getBatchByIdQuery, a as getPaymentRequestsByBatchIdQuery, c as checksum, u as upsertBatchCommand, b as getAccountByIdQuery, d as createCredentialsResolver, e as updatePaymentRequestStatusCommand, f as createPaymentCommand } from '../shared/bank.
|
|
5
|
+
import { g as getBatchByIdQuery, a as getPaymentRequestsByBatchIdQuery, c as checksum, u as upsertBatchCommand, b as getAccountByIdQuery, d as createCredentialsResolver, e as updatePaymentRequestStatusCommand, f as createPaymentCommand } from '../shared/bank.qcrBpYcu.mjs';
|
|
6
6
|
import { WorkflowEntrypoint } from 'cloudflare:workers';
|
|
7
7
|
import { NonRetryableError } from 'cloudflare:workflows';
|
|
8
8
|
import { drizzle } from 'drizzle-orm/d1';
|
|
@@ -303,6 +303,10 @@ function createWorkflowLogger(instanceId) {
|
|
|
303
303
|
};
|
|
304
304
|
}
|
|
305
305
|
|
|
306
|
+
function getStepCount(ctx) {
|
|
307
|
+
return ctx.step?.count ?? 0;
|
|
308
|
+
}
|
|
309
|
+
|
|
306
310
|
async function pushToQueue(queue, message) {
|
|
307
311
|
if (!Array.isArray(message)) {
|
|
308
312
|
await queue.send(message, { contentType: "v8" });
|
|
@@ -323,6 +327,10 @@ class BankSyncAccountPayments extends WorkflowEntrypoint {
|
|
|
323
327
|
if (!accountId) {
|
|
324
328
|
throw new NonRetryableError(`Haven't obtained accountId to load.`);
|
|
325
329
|
}
|
|
330
|
+
const workflowStartedAt = await step.do(
|
|
331
|
+
"capture workflow start time",
|
|
332
|
+
async () => Date.now()
|
|
333
|
+
);
|
|
326
334
|
while (true) {
|
|
327
335
|
const now = /* @__PURE__ */ new Date();
|
|
328
336
|
const account = await step.do("load account", async () => {
|
|
@@ -388,99 +396,106 @@ class BankSyncAccountPayments extends WorkflowEntrypoint {
|
|
|
388
396
|
const paymentsToProcess = payments.filter(
|
|
389
397
|
(p) => isPaymentCompleted(p.parsed)
|
|
390
398
|
);
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
399
|
+
const lastSyncBankRefIds = account.lastSyncMetadata?.lastSyncBankRefIds || [];
|
|
400
|
+
const paymentsToInsert = paymentsToProcess.filter(
|
|
401
|
+
(p) => !lastSyncBankRefIds.includes(p.parsed.bankRefId)
|
|
402
|
+
);
|
|
403
|
+
await step.do(
|
|
404
|
+
"process new payments and update lastSyncAt",
|
|
405
|
+
async (ctx) => {
|
|
406
|
+
const eventsToEmit = [];
|
|
407
|
+
const bankRefIds = paymentsToInsert.map((p) => p.parsed.bankRefId).filter((id) => id != null);
|
|
408
|
+
const BANK_REF_ID_CHUNK_SIZE = 90;
|
|
409
|
+
const matchingRequests = [];
|
|
410
|
+
for (let i = 0; i < bankRefIds.length; i += BANK_REF_ID_CHUNK_SIZE) {
|
|
411
|
+
const chunkIds = bankRefIds.slice(i, i + BANK_REF_ID_CHUNK_SIZE);
|
|
412
|
+
const rows = await db.select().from(tables.paymentRequest).where(
|
|
402
413
|
and(
|
|
403
|
-
inArray(tables.paymentRequest.bankRefId,
|
|
414
|
+
inArray(tables.paymentRequest.bankRefId, chunkIds),
|
|
404
415
|
eq(tables.paymentRequest.accountId, account.id),
|
|
405
|
-
eq(
|
|
406
|
-
tables.paymentRequest.connectorKey,
|
|
407
|
-
account.connectorKey
|
|
408
|
-
)
|
|
416
|
+
eq(tables.paymentRequest.connectorKey, account.connectorKey)
|
|
409
417
|
)
|
|
410
|
-
) : [];
|
|
411
|
-
const requestByBankRefId = Object.fromEntries(
|
|
412
|
-
matchingRequests.map((r) => [r.bankRefId, r])
|
|
413
418
|
);
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
419
|
+
matchingRequests.push(...rows);
|
|
420
|
+
}
|
|
421
|
+
const requestByBankRefId = Object.fromEntries(
|
|
422
|
+
matchingRequests.map((r) => [r.bankRefId, r])
|
|
423
|
+
);
|
|
424
|
+
const enrichedPayments = paymentsToInsert.map((p) => {
|
|
425
|
+
const req = p.parsed.bankRefId && requestByBankRefId[p.parsed.bankRefId] || null;
|
|
426
|
+
if (!req) return p;
|
|
427
|
+
return {
|
|
428
|
+
...p,
|
|
429
|
+
parsed: {
|
|
430
|
+
...p.parsed,
|
|
431
|
+
// queue-bus: transaction matching (DBU doesn't echo these in statements)
|
|
432
|
+
vs: p.parsed.vs ?? req.vs,
|
|
433
|
+
ss: p.parsed.ss ?? req.ss,
|
|
434
|
+
ks: p.parsed.ks ?? req.ks,
|
|
435
|
+
message: p.parsed.message ?? req.message,
|
|
436
|
+
// queue-bus: party creation
|
|
437
|
+
creditor: {
|
|
438
|
+
...p.parsed.creditor,
|
|
439
|
+
holderName: p.parsed.creditor?.holderName ?? req.creditor?.holderName
|
|
440
|
+
},
|
|
441
|
+
debtor: {
|
|
442
|
+
...p.parsed.debtor,
|
|
443
|
+
holderName: p.parsed.debtor?.holderName ?? req.debtor?.holderName
|
|
437
444
|
}
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
445
|
+
// NOT enriched: chargeBearer, instructionPriority, refId, batchId,
|
|
446
|
+
// createdAt, address, swiftBic — no downstream consumer in payment table
|
|
447
|
+
}
|
|
448
|
+
};
|
|
449
|
+
});
|
|
450
|
+
const createCommands = enrichedPayments.map(
|
|
451
|
+
(p) => createPaymentCommand(db, { payment: p.parsed }).command
|
|
452
|
+
);
|
|
453
|
+
eventsToEmit.push(
|
|
454
|
+
...enrichedPayments.map((p) => ({
|
|
455
|
+
eventType: "BANK_PAYMENT",
|
|
456
|
+
eventSignal: "paymentFetched",
|
|
457
|
+
bankPayment: p.parsed,
|
|
458
|
+
metadata: {
|
|
459
|
+
correlationId: p.parsed.correlationId,
|
|
460
|
+
entityId: p.parsed.id,
|
|
461
|
+
timestamp: /* @__PURE__ */ new Date()
|
|
462
|
+
}
|
|
463
|
+
}))
|
|
464
|
+
);
|
|
465
|
+
const lastSyncMetadata = {
|
|
466
|
+
payments: payments.length,
|
|
467
|
+
paymentsToProcess: paymentsToProcess.length,
|
|
468
|
+
paymentsInserted: paymentsToInsert.length,
|
|
469
|
+
lastSyncBankRefIds: paymentsToProcess.filter((p) => p.parsed.status === "BOOKED").map((p) => p.parsed.bankRefId),
|
|
470
|
+
lastSyncPayments: lastSyncBankRefIds.length,
|
|
471
|
+
eventsEmitted: eventsToEmit.length,
|
|
472
|
+
iterationCount: getStepCount(ctx),
|
|
473
|
+
workflowStartedAt
|
|
474
|
+
};
|
|
475
|
+
const updateLastSyncCommand = updateAccountLastSyncCommand(db, {
|
|
476
|
+
accountId: account.id,
|
|
477
|
+
lastSyncAt: now,
|
|
478
|
+
lastSyncMetadata
|
|
479
|
+
}).command;
|
|
480
|
+
if (createCommands.length) {
|
|
481
|
+
await db.batch(
|
|
482
|
+
asNonEmpty([updateLastSyncCommand, ...createCommands])
|
|
442
483
|
);
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
entityId: p.parsed.id,
|
|
451
|
-
timestamp: /* @__PURE__ */ new Date()
|
|
452
|
-
}
|
|
453
|
-
}))
|
|
484
|
+
} else {
|
|
485
|
+
await updateLastSyncCommand;
|
|
486
|
+
}
|
|
487
|
+
if (eventsToEmit.length) {
|
|
488
|
+
await pushToQueue(
|
|
489
|
+
this.env.QUEUE_BUS_QUEUE,
|
|
490
|
+
eventsToEmit
|
|
454
491
|
);
|
|
455
|
-
const lastSyncMetadata = {
|
|
456
|
-
payments: payments.length,
|
|
457
|
-
paymentsToProcess: paymentsToProcess.length,
|
|
458
|
-
paymentsInserted: paymentsToInsert.length,
|
|
459
|
-
lastSyncBankRefIds: paymentsToProcess.filter((p) => p.parsed.status === "BOOKED").map((p) => p.parsed.bankRefId),
|
|
460
|
-
lastSyncPayments: lastSyncBankRefIds.length,
|
|
461
|
-
eventsEmitted: eventsToEmit.length
|
|
462
|
-
};
|
|
463
|
-
const updateLastSyncCommand = updateAccountLastSyncCommand(db, {
|
|
464
|
-
accountId: account.id,
|
|
465
|
-
lastSyncAt: now,
|
|
466
|
-
lastSyncMetadata
|
|
467
|
-
}).command;
|
|
468
|
-
if (eventsToEmit.length) {
|
|
469
|
-
await db.batch(
|
|
470
|
-
asNonEmpty([updateLastSyncCommand, ...createCommands])
|
|
471
|
-
);
|
|
472
|
-
await pushToQueue(
|
|
473
|
-
this.env.QUEUE_BUS_QUEUE,
|
|
474
|
-
eventsToEmit
|
|
475
|
-
);
|
|
476
|
-
}
|
|
477
|
-
return {
|
|
478
|
-
...lastSyncMetadata,
|
|
479
|
-
newLastSyncAt: now
|
|
480
|
-
};
|
|
481
492
|
}
|
|
482
|
-
|
|
483
|
-
|
|
493
|
+
return {
|
|
494
|
+
...lastSyncMetadata,
|
|
495
|
+
newLastSyncAt: now
|
|
496
|
+
};
|
|
497
|
+
}
|
|
498
|
+
);
|
|
484
499
|
await step.sleep(
|
|
485
500
|
"Sleep for next sync",
|
|
486
501
|
`${account.syncIntervalS} seconds`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { B as BankServiceWranglerConfig } from '../shared/bank.
|
|
1
|
+
import { B as BankServiceWranglerConfig } from '../shared/bank.Dq24vYU7.cjs';
|
|
2
2
|
|
|
3
3
|
declare function defineBankServiceWrangler(config: BankServiceWranglerConfig): {
|
|
4
4
|
vars: {
|
|
@@ -15,6 +15,7 @@ declare function defineBankServiceWrangler(config: BankServiceWranglerConfig): {
|
|
|
15
15
|
DBUCS_APPLICATION_CODE: string;
|
|
16
16
|
DBUCS_TX_AUTH_URI: string;
|
|
17
17
|
REDIRECT_URI: string;
|
|
18
|
+
SYNC_WORKFLOW_RESET_AFTER_ITERATIONS: string;
|
|
18
19
|
ENVIRONMENT: string;
|
|
19
20
|
};
|
|
20
21
|
services: {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { B as BankServiceWranglerConfig } from '../shared/bank.
|
|
1
|
+
import { B as BankServiceWranglerConfig } from '../shared/bank.Dq24vYU7.mjs';
|
|
2
2
|
|
|
3
3
|
declare function defineBankServiceWrangler(config: BankServiceWranglerConfig): {
|
|
4
4
|
vars: {
|
|
@@ -15,6 +15,7 @@ declare function defineBankServiceWrangler(config: BankServiceWranglerConfig): {
|
|
|
15
15
|
DBUCS_APPLICATION_CODE: string;
|
|
16
16
|
DBUCS_TX_AUTH_URI: string;
|
|
17
17
|
REDIRECT_URI: string;
|
|
18
|
+
SYNC_WORKFLOW_RESET_AFTER_ITERATIONS: string;
|
|
18
19
|
ENVIRONMENT: string;
|
|
19
20
|
};
|
|
20
21
|
services: {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { B as BankServiceWranglerConfig } from '../shared/bank.
|
|
1
|
+
import { B as BankServiceWranglerConfig } from '../shared/bank.Dq24vYU7.js';
|
|
2
2
|
|
|
3
3
|
declare function defineBankServiceWrangler(config: BankServiceWranglerConfig): {
|
|
4
4
|
vars: {
|
|
@@ -15,6 +15,7 @@ declare function defineBankServiceWrangler(config: BankServiceWranglerConfig): {
|
|
|
15
15
|
DBUCS_APPLICATION_CODE: string;
|
|
16
16
|
DBUCS_TX_AUTH_URI: string;
|
|
17
17
|
REDIRECT_URI: string;
|
|
18
|
+
SYNC_WORKFLOW_RESET_AFTER_ITERATIONS: string;
|
|
18
19
|
ENVIRONMENT: string;
|
|
19
20
|
};
|
|
20
21
|
services: {
|
|
@@ -28,6 +28,8 @@ interface LastSyncMetadata {
|
|
|
28
28
|
lastSyncPayments: number;
|
|
29
29
|
lastSyncBankRefIds: string[];
|
|
30
30
|
eventsEmitted: number;
|
|
31
|
+
iterationCount?: number;
|
|
32
|
+
workflowStartedAt?: number;
|
|
31
33
|
}
|
|
32
34
|
type ConnectorConfig = Record<string, string | number | boolean | null>;
|
|
33
35
|
|
|
@@ -2125,7 +2127,7 @@ declare const batch: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
|
|
|
2125
2127
|
name: string;
|
|
2126
2128
|
tableName: "batch";
|
|
2127
2129
|
dataType: "string enum";
|
|
2128
|
-
data: "AUTHORIZED" | "
|
|
2130
|
+
data: "AUTHORIZED" | "PROCESSING" | "READY_TO_SIGN" | "COMPLETED" | "FAILED";
|
|
2129
2131
|
driverParam: string;
|
|
2130
2132
|
notNull: false;
|
|
2131
2133
|
hasDefault: false;
|
|
@@ -2396,7 +2398,7 @@ declare const payment: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
|
|
|
2396
2398
|
name: string;
|
|
2397
2399
|
tableName: "payment";
|
|
2398
2400
|
dataType: "string enum";
|
|
2399
|
-
data: "
|
|
2401
|
+
data: "PROCESSING" | "PENDING" | "BOOKED" | "CANCELLED" | "REJECTED" | "SCHEDULED" | "HOLD" | "INFO";
|
|
2400
2402
|
driverParam: string;
|
|
2401
2403
|
notNull: true;
|
|
2402
2404
|
hasDefault: false;
|
|
@@ -2795,7 +2797,7 @@ declare const paymentRequest: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
|
|
|
2795
2797
|
name: string;
|
|
2796
2798
|
tableName: "payment_request";
|
|
2797
2799
|
dataType: "string enum";
|
|
2798
|
-
data: "AUTHORIZED" | "
|
|
2800
|
+
data: "AUTHORIZED" | "COMPLETED" | "BOOKED" | "REJECTED" | "OPENED" | "SETTLED" | "CLOSED";
|
|
2799
2801
|
driverParam: string;
|
|
2800
2802
|
notNull: true;
|
|
2801
2803
|
hasDefault: false;
|
|
@@ -28,6 +28,8 @@ interface LastSyncMetadata {
|
|
|
28
28
|
lastSyncPayments: number;
|
|
29
29
|
lastSyncBankRefIds: string[];
|
|
30
30
|
eventsEmitted: number;
|
|
31
|
+
iterationCount?: number;
|
|
32
|
+
workflowStartedAt?: number;
|
|
31
33
|
}
|
|
32
34
|
type ConnectorConfig = Record<string, string | number | boolean | null>;
|
|
33
35
|
|
|
@@ -2125,7 +2127,7 @@ declare const batch: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
|
|
|
2125
2127
|
name: string;
|
|
2126
2128
|
tableName: "batch";
|
|
2127
2129
|
dataType: "string enum";
|
|
2128
|
-
data: "AUTHORIZED" | "
|
|
2130
|
+
data: "AUTHORIZED" | "PROCESSING" | "READY_TO_SIGN" | "COMPLETED" | "FAILED";
|
|
2129
2131
|
driverParam: string;
|
|
2130
2132
|
notNull: false;
|
|
2131
2133
|
hasDefault: false;
|
|
@@ -2396,7 +2398,7 @@ declare const payment: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
|
|
|
2396
2398
|
name: string;
|
|
2397
2399
|
tableName: "payment";
|
|
2398
2400
|
dataType: "string enum";
|
|
2399
|
-
data: "
|
|
2401
|
+
data: "PROCESSING" | "PENDING" | "BOOKED" | "CANCELLED" | "REJECTED" | "SCHEDULED" | "HOLD" | "INFO";
|
|
2400
2402
|
driverParam: string;
|
|
2401
2403
|
notNull: true;
|
|
2402
2404
|
hasDefault: false;
|
|
@@ -2795,7 +2797,7 @@ declare const paymentRequest: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
|
|
|
2795
2797
|
name: string;
|
|
2796
2798
|
tableName: "payment_request";
|
|
2797
2799
|
dataType: "string enum";
|
|
2798
|
-
data: "AUTHORIZED" | "
|
|
2800
|
+
data: "AUTHORIZED" | "COMPLETED" | "BOOKED" | "REJECTED" | "OPENED" | "SETTLED" | "CLOSED";
|
|
2799
2801
|
driverParam: string;
|
|
2800
2802
|
notNull: true;
|
|
2801
2803
|
hasDefault: false;
|
|
@@ -28,6 +28,8 @@ interface LastSyncMetadata {
|
|
|
28
28
|
lastSyncPayments: number;
|
|
29
29
|
lastSyncBankRefIds: string[];
|
|
30
30
|
eventsEmitted: number;
|
|
31
|
+
iterationCount?: number;
|
|
32
|
+
workflowStartedAt?: number;
|
|
31
33
|
}
|
|
32
34
|
type ConnectorConfig = Record<string, string | number | boolean | null>;
|
|
33
35
|
|
|
@@ -2125,7 +2127,7 @@ declare const batch: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
|
|
|
2125
2127
|
name: string;
|
|
2126
2128
|
tableName: "batch";
|
|
2127
2129
|
dataType: "string enum";
|
|
2128
|
-
data: "AUTHORIZED" | "
|
|
2130
|
+
data: "AUTHORIZED" | "PROCESSING" | "READY_TO_SIGN" | "COMPLETED" | "FAILED";
|
|
2129
2131
|
driverParam: string;
|
|
2130
2132
|
notNull: false;
|
|
2131
2133
|
hasDefault: false;
|
|
@@ -2396,7 +2398,7 @@ declare const payment: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
|
|
|
2396
2398
|
name: string;
|
|
2397
2399
|
tableName: "payment";
|
|
2398
2400
|
dataType: "string enum";
|
|
2399
|
-
data: "
|
|
2401
|
+
data: "PROCESSING" | "PENDING" | "BOOKED" | "CANCELLED" | "REJECTED" | "SCHEDULED" | "HOLD" | "INFO";
|
|
2400
2402
|
driverParam: string;
|
|
2401
2403
|
notNull: true;
|
|
2402
2404
|
hasDefault: false;
|
|
@@ -2795,7 +2797,7 @@ declare const paymentRequest: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
|
|
|
2795
2797
|
name: string;
|
|
2796
2798
|
tableName: "payment_request";
|
|
2797
2799
|
dataType: "string enum";
|
|
2798
|
-
data: "AUTHORIZED" | "
|
|
2800
|
+
data: "AUTHORIZED" | "COMPLETED" | "BOOKED" | "REJECTED" | "OPENED" | "SETTLED" | "CLOSED";
|
|
2799
2801
|
driverParam: string;
|
|
2800
2802
|
notNull: true;
|
|
2801
2803
|
hasDefault: false;
|