@develit-services/bank 0.3.60 → 0.4.1
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.cjs +9 -9
- package/dist/database/schema.d.cts +4 -5
- package/dist/database/schema.d.mts +4 -5
- package/dist/database/schema.d.ts +4 -5
- package/dist/database/schema.mjs +3 -3
- package/dist/export/worker.cjs +91 -85
- package/dist/export/worker.d.cts +23 -766
- package/dist/export/worker.d.mts +23 -766
- package/dist/export/worker.d.ts +23 -766
- package/dist/export/worker.mjs +72 -66
- package/dist/export/workflows.cjs +215 -211
- package/dist/export/workflows.d.cts +4 -4
- package/dist/export/workflows.d.mts +4 -4
- package/dist/export/workflows.d.ts +4 -4
- package/dist/export/workflows.mjs +210 -206
- package/dist/export/wrangler.d.cts +3 -1
- package/dist/export/wrangler.d.mts +3 -1
- package/dist/export/wrangler.d.ts +3 -1
- package/dist/shared/bank.B51e8oDT.mjs +104 -0
- package/dist/shared/{bank.Dh_H_5rC.d.cts → bank.BJvgLwyZ.d.cts} +2 -0
- package/dist/shared/{bank.Dh_H_5rC.d.mts → bank.BJvgLwyZ.d.mts} +2 -0
- package/dist/shared/{bank.Dh_H_5rC.d.ts → bank.BJvgLwyZ.d.ts} +2 -0
- package/dist/shared/bank.BUSlmr6r.mjs +13 -0
- package/dist/shared/{bank.CMbfx0u7.cjs → bank.BeIpkWR-.cjs} +3 -14
- package/dist/shared/bank.Bg3Pdwm4.cjs +44 -0
- package/dist/shared/bank.CDoYUKBx.d.cts +748 -0
- package/dist/shared/bank.CDoYUKBx.d.mts +748 -0
- package/dist/shared/bank.CDoYUKBx.d.ts +748 -0
- package/dist/shared/{bank.CNEv3Rac.cjs → bank.CfSZTfWS.cjs} +634 -179
- package/dist/shared/{bank.XJJV8p4b.d.cts → bank.CsJuzqZH.d.cts} +2401 -2117
- package/dist/shared/{bank.XJJV8p4b.d.mts → bank.CsJuzqZH.d.mts} +2401 -2117
- package/dist/shared/{bank.XJJV8p4b.d.ts → bank.CsJuzqZH.d.ts} +2401 -2117
- package/dist/shared/bank.DEvSNsEs.cjs +114 -0
- package/dist/shared/{bank.DgGcjhmM.mjs → bank.DinCwx0P.mjs} +627 -179
- package/dist/shared/bank.Dpx6PvkA.mjs +33 -0
- package/dist/shared/bank.c38V_FCq.cjs +15 -0
- package/dist/shared/{bank.BqGzJNC6.mjs → bank.qc8ALZwm.mjs} +4 -14
- package/dist/types.cjs +51 -33
- package/dist/types.d.cts +164 -39
- package/dist/types.d.mts +164 -39
- package/dist/types.d.ts +164 -39
- package/dist/types.mjs +4 -3
- package/package.json +7 -10
- package/dist/shared/bank.CXpc8168.cjs +0 -212
- package/dist/shared/bank.DSsVeR3F.mjs +0 -202
package/dist/database/schema.cjs
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
const
|
|
3
|
+
const payment_schema = require('../shared/bank.BeIpkWR-.cjs');
|
|
4
4
|
require('@develit-io/backend-sdk');
|
|
5
|
+
require('drizzle-orm/relations');
|
|
5
6
|
require('drizzle-orm/sqlite-core');
|
|
6
7
|
require('date-fns');
|
|
7
|
-
require('drizzle-orm/relations');
|
|
8
8
|
require('@develit-io/general-codes');
|
|
9
|
-
require('drizzle-orm');
|
|
10
9
|
require('jose');
|
|
10
|
+
require('drizzle-orm');
|
|
11
11
|
require('node:crypto');
|
|
12
12
|
require('drizzle-zod');
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
|
|
16
|
-
exports.account =
|
|
17
|
-
exports.accountCredentials =
|
|
18
|
-
exports.batch =
|
|
19
|
-
exports.ott =
|
|
20
|
-
exports.payment =
|
|
21
|
-
exports.paymentRelations =
|
|
16
|
+
exports.account = payment_schema.account;
|
|
17
|
+
exports.accountCredentials = payment_schema.accountCredentials;
|
|
18
|
+
exports.batch = payment_schema.batch;
|
|
19
|
+
exports.ott = payment_schema.ott;
|
|
20
|
+
exports.payment = payment_schema.payment;
|
|
21
|
+
exports.paymentRelations = payment_schema.paymentRelations;
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
export {
|
|
2
|
-
import 'zod';
|
|
3
|
-
import 'drizzle-zod';
|
|
1
|
+
export { as as account, at as accountCredentials, ao as batch, ar as ott, ap as payment, aq as paymentRelations } from '../shared/bank.CsJuzqZH.cjs';
|
|
4
2
|
import 'drizzle-orm/sqlite-core';
|
|
5
|
-
import '@develit-io/backend-sdk';
|
|
6
|
-
import 'drizzle-orm/d1';
|
|
7
3
|
import 'drizzle-orm';
|
|
4
|
+
import '@develit-io/backend-sdk';
|
|
5
|
+
import 'drizzle-zod';
|
|
6
|
+
import 'zod';
|
|
8
7
|
import '@develit-io/general-codes';
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
export {
|
|
2
|
-
import 'zod';
|
|
3
|
-
import 'drizzle-zod';
|
|
1
|
+
export { as as account, at as accountCredentials, ao as batch, ar as ott, ap as payment, aq as paymentRelations } from '../shared/bank.CsJuzqZH.mjs';
|
|
4
2
|
import 'drizzle-orm/sqlite-core';
|
|
5
|
-
import '@develit-io/backend-sdk';
|
|
6
|
-
import 'drizzle-orm/d1';
|
|
7
3
|
import 'drizzle-orm';
|
|
4
|
+
import '@develit-io/backend-sdk';
|
|
5
|
+
import 'drizzle-zod';
|
|
6
|
+
import 'zod';
|
|
8
7
|
import '@develit-io/general-codes';
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
export {
|
|
2
|
-
import 'zod';
|
|
3
|
-
import 'drizzle-zod';
|
|
1
|
+
export { as as account, at as accountCredentials, ao as batch, ar as ott, ap as payment, aq as paymentRelations } from '../shared/bank.CsJuzqZH.js';
|
|
4
2
|
import 'drizzle-orm/sqlite-core';
|
|
5
|
-
import '@develit-io/backend-sdk';
|
|
6
|
-
import 'drizzle-orm/d1';
|
|
7
3
|
import 'drizzle-orm';
|
|
4
|
+
import '@develit-io/backend-sdk';
|
|
5
|
+
import 'drizzle-zod';
|
|
6
|
+
import 'zod';
|
|
8
7
|
import '@develit-io/general-codes';
|
package/dist/database/schema.mjs
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { n as account, p as accountCredentials, q as batch, r as ott, s as payment, t as paymentRelations } from '../shared/bank.qc8ALZwm.mjs';
|
|
2
2
|
import '@develit-io/backend-sdk';
|
|
3
|
+
import 'drizzle-orm/relations';
|
|
3
4
|
import 'drizzle-orm/sqlite-core';
|
|
4
5
|
import 'date-fns';
|
|
5
|
-
import 'drizzle-orm/relations';
|
|
6
6
|
import '@develit-io/general-codes';
|
|
7
|
-
import 'drizzle-orm';
|
|
8
7
|
import 'jose';
|
|
8
|
+
import 'drizzle-orm';
|
|
9
9
|
import 'node:crypto';
|
|
10
10
|
import 'drizzle-zod';
|
package/dist/export/worker.cjs
CHANGED
|
@@ -3,17 +3,18 @@
|
|
|
3
3
|
const backendSdk = require('@develit-io/backend-sdk');
|
|
4
4
|
const cloudflare_workers = require('cloudflare:workers');
|
|
5
5
|
const d1 = require('drizzle-orm/d1');
|
|
6
|
-
const drizzle = require('../shared/bank.
|
|
6
|
+
const drizzle = require('../shared/bank.DEvSNsEs.cjs');
|
|
7
|
+
const mock_connector = require('../shared/bank.CfSZTfWS.cjs');
|
|
7
8
|
const zod = require('zod');
|
|
8
|
-
const
|
|
9
|
+
const payment_schema = require('../shared/bank.BeIpkWR-.cjs');
|
|
9
10
|
const generalCodes = require('@develit-io/general-codes');
|
|
10
11
|
require('date-fns');
|
|
11
|
-
const drizzleOrm = require('drizzle-orm');
|
|
12
12
|
require('jose');
|
|
13
|
+
const drizzleOrm = require('drizzle-orm');
|
|
13
14
|
require('node:crypto');
|
|
14
|
-
|
|
15
|
-
require('drizzle-orm/sqlite-core');
|
|
15
|
+
require('../shared/bank.c38V_FCq.cjs');
|
|
16
16
|
require('drizzle-orm/relations');
|
|
17
|
+
require('drizzle-orm/sqlite-core');
|
|
17
18
|
require('drizzle-zod');
|
|
18
19
|
|
|
19
20
|
const upsertAccountCommand = (db, { account }) => {
|
|
@@ -65,7 +66,7 @@ const expireOneTimeTokenCommand = (db, {
|
|
|
65
66
|
|
|
66
67
|
const createAccountCredentialsCommand = async (db, encryptionKey, { credentials }) => {
|
|
67
68
|
const id = credentials.id || backendSdk.uuidv4();
|
|
68
|
-
const encryptedValue = await
|
|
69
|
+
const encryptedValue = await drizzle.encrypt(credentials.value, encryptionKey);
|
|
69
70
|
const command = db.insert(drizzle.tables.accountCredentials).values({
|
|
70
71
|
...credentials,
|
|
71
72
|
id,
|
|
@@ -236,8 +237,8 @@ const getOttQuery = async (db, { ott }) => {
|
|
|
236
237
|
return await db.select().from(drizzle.tables.ott).where(drizzleOrm.eq(drizzle.tables.ott.oneTimeToken, ott)).get();
|
|
237
238
|
};
|
|
238
239
|
|
|
239
|
-
const seperateSupportedPayments = (
|
|
240
|
-
const [supportedPayments, unsupportedPayments] =
|
|
240
|
+
const seperateSupportedPayments = (incomingPayments, accounts) => {
|
|
241
|
+
const [supportedPayments, unsupportedPayments] = incomingPayments.reduce(
|
|
241
242
|
([valid, invalid], payment) => {
|
|
242
243
|
const isValid = accounts.some(
|
|
243
244
|
(acc) => acc.iban === payment.debtorIban && acc.currency === payment.currency
|
|
@@ -261,10 +262,10 @@ const sendPaymentInputSchema = zod.z.object({
|
|
|
261
262
|
correlationId: zod.z.string().min(1),
|
|
262
263
|
refId: zod.z.string(),
|
|
263
264
|
amount: zod.z.number().positive(),
|
|
264
|
-
paymentType: zod.z.enum(
|
|
265
|
-
chargeBearer: zod.z.enum(
|
|
265
|
+
paymentType: zod.z.enum(payment_schema.PAYMENT_TYPES),
|
|
266
|
+
chargeBearer: zod.z.enum(payment_schema.CHARGE_BEARERS).optional(),
|
|
266
267
|
executionDate: zod.z.string().optional(),
|
|
267
|
-
instructionPriority: zod.z.enum(
|
|
268
|
+
instructionPriority: zod.z.enum(payment_schema.INSTRUCTION_PRIORITIES).optional(),
|
|
268
269
|
currency: zod.z.enum(generalCodes.CURRENCY_CODES),
|
|
269
270
|
vs: zod.z.string().optional(),
|
|
270
271
|
ss: zod.z.string().optional(),
|
|
@@ -272,11 +273,12 @@ const sendPaymentInputSchema = zod.z.object({
|
|
|
272
273
|
message: zod.z.string().optional(),
|
|
273
274
|
creditor: backendSdk.bankAccountMetadataSchema,
|
|
274
275
|
debtor: backendSdk.bankAccountMetadataSchema,
|
|
275
|
-
purpose: zod.z.string().optional()
|
|
276
|
+
purpose: zod.z.string().optional(),
|
|
277
|
+
sendAsSinglePayment: zod.z.boolean().optional()
|
|
276
278
|
});
|
|
277
279
|
|
|
278
280
|
const getAuthUriInputSchema = zod.z.object({
|
|
279
|
-
connectorKey: zod.z.enum(
|
|
281
|
+
connectorKey: zod.z.enum(payment_schema.CONNECTOR_KEYS)
|
|
280
282
|
});
|
|
281
283
|
|
|
282
284
|
const authorizeAccountInputSchema = zod.z.object({
|
|
@@ -296,7 +298,7 @@ const simulateDepositInputSchema = zod.z.object({
|
|
|
296
298
|
message: zod.z.string(),
|
|
297
299
|
creditor: backendSdk.bankAccountMetadataSchema,
|
|
298
300
|
debtor: backendSdk.bankAccountMetadataSchema,
|
|
299
|
-
connectorKey: zod.z.enum(
|
|
301
|
+
connectorKey: zod.z.enum(payment_schema.CONNECTOR_KEYS)
|
|
300
302
|
});
|
|
301
303
|
|
|
302
304
|
const ALLOWED_BATCH_FILTERS = {
|
|
@@ -311,7 +313,7 @@ const getBatchesInputSchema = zod.z.object({
|
|
|
311
313
|
direction: zod.z.enum(["asc", "desc"])
|
|
312
314
|
}),
|
|
313
315
|
[ALLOWED_BATCH_FILTERS.ACCOUNT_ID]: zod.z.union([zod.z.uuid(), zod.z.uuid().array()]).optional(),
|
|
314
|
-
[ALLOWED_BATCH_FILTERS.STATUS]: zod.z.union([zod.z.enum(
|
|
316
|
+
[ALLOWED_BATCH_FILTERS.STATUS]: zod.z.union([zod.z.enum(payment_schema.BATCH_STATUSES), zod.z.enum(payment_schema.BATCH_STATUSES).array()]).optional()
|
|
315
317
|
});
|
|
316
318
|
|
|
317
319
|
const processBatchInputSchema = zod.z.object({
|
|
@@ -366,10 +368,10 @@ const getPaymentsInputSchema = zod.z.object({
|
|
|
366
368
|
[ALLOWED_PAYMENT_FILTERS.ACCOUNT_ID]: zod.z.union([zod.z.uuid(), zod.z.uuid().array()]).optional(),
|
|
367
369
|
[ALLOWED_PAYMENT_FILTERS.AMOUNT]: zod.z.union([zod.z.number(), zod.z.number().array()]).optional(),
|
|
368
370
|
[ALLOWED_PAYMENT_FILTERS.CURRENCY]: zod.z.union([zod.z.enum(generalCodes.CURRENCY_CODES), zod.z.enum(generalCodes.CURRENCY_CODES).array()]).optional(),
|
|
369
|
-
[ALLOWED_PAYMENT_FILTERS.DIRECTION]: zod.z.union([zod.z.enum(
|
|
371
|
+
[ALLOWED_PAYMENT_FILTERS.DIRECTION]: zod.z.union([zod.z.enum(payment_schema.PAYMENT_DIRECTIONS), zod.z.enum(payment_schema.PAYMENT_DIRECTIONS).array()]).optional(),
|
|
370
372
|
[ALLOWED_PAYMENT_FILTERS.FROM]: zod.z.date().optional(),
|
|
371
373
|
[ALLOWED_PAYMENT_FILTERS.TO]: zod.z.date().optional(),
|
|
372
|
-
[ALLOWED_PAYMENT_FILTERS.STATUS]: zod.z.union([zod.z.enum(
|
|
374
|
+
[ALLOWED_PAYMENT_FILTERS.STATUS]: zod.z.union([zod.z.enum(payment_schema.PAYMENT_STATUSES), zod.z.enum(payment_schema.PAYMENT_STATUSES).array()]).optional()
|
|
373
375
|
});
|
|
374
376
|
|
|
375
377
|
const syncAccountInputSchema = zod.z.object({
|
|
@@ -404,7 +406,7 @@ zod.z.object({
|
|
|
404
406
|
});
|
|
405
407
|
|
|
406
408
|
const updateAccountInputSchema = zod.z.object({
|
|
407
|
-
account:
|
|
409
|
+
account: payment_schema.accountInsertSchema
|
|
408
410
|
});
|
|
409
411
|
|
|
410
412
|
const getBankAccountsInputSchema = zod.z.object({
|
|
@@ -453,14 +455,14 @@ let BankServiceBase = class extends backendSdk.develitWorker(cloudflare_workers.
|
|
|
453
455
|
}
|
|
454
456
|
let connectedAccounts = [];
|
|
455
457
|
if (!skipAccounts) {
|
|
456
|
-
const encryptionKey = await
|
|
458
|
+
const encryptionKey = await drizzle.importAesKey(this.env.ENCRYPTION_KEY);
|
|
457
459
|
const accounts = await this._getConnectedAccounts();
|
|
458
460
|
const accountsForConnector = accounts.filter(
|
|
459
461
|
(acc) => acc.connectorKey === connectorKey
|
|
460
462
|
);
|
|
461
463
|
connectedAccounts = await Promise.all(
|
|
462
464
|
accountsForConnector.map(async (acc) => {
|
|
463
|
-
const credentials = await
|
|
465
|
+
const credentials = await drizzle.getCredentialsByAccountId(
|
|
464
466
|
this.db,
|
|
465
467
|
encryptionKey,
|
|
466
468
|
{
|
|
@@ -484,7 +486,7 @@ let BankServiceBase = class extends backendSdk.develitWorker(cloudflare_workers.
|
|
|
484
486
|
})
|
|
485
487
|
);
|
|
486
488
|
}
|
|
487
|
-
const connector =
|
|
489
|
+
const connector = mock_connector.initiateConnector({
|
|
488
490
|
bank: connectorKey,
|
|
489
491
|
connectedAccounts,
|
|
490
492
|
env: this.env
|
|
@@ -584,7 +586,7 @@ let BankServiceBase = class extends backendSdk.develitWorker(cloudflare_workers.
|
|
|
584
586
|
});
|
|
585
587
|
let statusChanged = false;
|
|
586
588
|
if (previousStatus !== currentStatus || !batch.statusResponse) {
|
|
587
|
-
await
|
|
589
|
+
await drizzle.upsertBatchCommand(this.db, {
|
|
588
590
|
batch: {
|
|
589
591
|
...batch,
|
|
590
592
|
status: currentStatus,
|
|
@@ -608,7 +610,7 @@ let BankServiceBase = class extends backendSdk.develitWorker(cloudflare_workers.
|
|
|
608
610
|
async (validatedInput) => {
|
|
609
611
|
let pendingBatches;
|
|
610
612
|
if (validatedInput?.batchId) {
|
|
611
|
-
const batch = await
|
|
613
|
+
const batch = await drizzle.getBatchByIdQuery(this.db, {
|
|
612
614
|
batchId: validatedInput.batchId
|
|
613
615
|
});
|
|
614
616
|
if (!batch) {
|
|
@@ -631,7 +633,7 @@ let BankServiceBase = class extends backendSdk.develitWorker(cloudflare_workers.
|
|
|
631
633
|
this.logError({
|
|
632
634
|
message: `Account not found for batch ${batch.id}, skipping`
|
|
633
635
|
});
|
|
634
|
-
await
|
|
636
|
+
await drizzle.upsertBatchCommand(this.db, {
|
|
635
637
|
batch: {
|
|
636
638
|
...batch,
|
|
637
639
|
status: "FAILED",
|
|
@@ -675,32 +677,9 @@ let BankServiceBase = class extends backendSdk.develitWorker(cloudflare_workers.
|
|
|
675
677
|
}) {
|
|
676
678
|
return this.handleAction(null, {}, async () => {
|
|
677
679
|
this.logInput({ paymentsToBatch });
|
|
678
|
-
const
|
|
679
|
-
(payment) => {
|
|
680
|
-
return {
|
|
681
|
-
id: backendSdk.uuidv4(),
|
|
682
|
-
correlationId: payment.correlationId,
|
|
683
|
-
refId: payment.refId,
|
|
684
|
-
amount: payment.amount,
|
|
685
|
-
direction: "OUTGOING",
|
|
686
|
-
paymentType: payment.paymentType,
|
|
687
|
-
currency: payment.currency,
|
|
688
|
-
status: "CREATED",
|
|
689
|
-
initiatedAt: /* @__PURE__ */ new Date(),
|
|
690
|
-
processedAt: null,
|
|
691
|
-
vs: payment.vs || null,
|
|
692
|
-
ss: payment.ss || null,
|
|
693
|
-
ks: payment.ks || null,
|
|
694
|
-
message: payment.message || null,
|
|
695
|
-
creditor: payment.creditor,
|
|
696
|
-
creditorIban: payment.creditor.iban || null,
|
|
697
|
-
debtor: payment.debtor,
|
|
698
|
-
debtorIban: payment.debtor.iban || null
|
|
699
|
-
};
|
|
700
|
-
}
|
|
701
|
-
);
|
|
680
|
+
const incomingPayments = paymentsToBatch.map(mock_connector.toIncomingPayment);
|
|
702
681
|
const accounts = await this._getAccounts();
|
|
703
|
-
const { supportedPayments, unsupportedPayments } = seperateSupportedPayments(
|
|
682
|
+
const { supportedPayments, unsupportedPayments } = seperateSupportedPayments(incomingPayments, accounts);
|
|
704
683
|
if (unsupportedPayments.length > 0) {
|
|
705
684
|
this.logError({ unsupportedPayments });
|
|
706
685
|
await this.pushToQueue(
|
|
@@ -722,45 +701,72 @@ let BankServiceBase = class extends backendSdk.develitWorker(cloudflare_workers.
|
|
|
722
701
|
);
|
|
723
702
|
}
|
|
724
703
|
for (const acc of accounts) {
|
|
725
|
-
const
|
|
704
|
+
const accountAssignedPayments = supportedPayments.filter(
|
|
726
705
|
(payment) => payment.debtorIban === acc.iban && payment.currency === acc.currency
|
|
727
|
-
).map((payment) => (
|
|
728
|
-
|
|
729
|
-
connectorKey: acc.connectorKey,
|
|
730
|
-
accountId: acc.id
|
|
731
|
-
}));
|
|
732
|
-
if (newPayments.length === 0) {
|
|
706
|
+
).map((payment) => mock_connector.assignAccount(payment, acc));
|
|
707
|
+
if (accountAssignedPayments.length === 0) {
|
|
733
708
|
continue;
|
|
734
709
|
}
|
|
735
710
|
this.log({
|
|
736
|
-
message: `\u{1F4B0} Processing ${
|
|
737
|
-
});
|
|
738
|
-
const openBatches = await getAccountOpenBatchesQuery(this.db, {
|
|
739
|
-
accountId: acc.id
|
|
711
|
+
message: `\u{1F4B0} Processing ${accountAssignedPayments.length} payments for account (${acc.iban}, ${acc.currency})`
|
|
740
712
|
});
|
|
741
|
-
const
|
|
742
|
-
(
|
|
713
|
+
const singlePayments = accountAssignedPayments.filter(
|
|
714
|
+
(p) => p.sendAsSinglePayment === true
|
|
743
715
|
);
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
const
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
716
|
+
const regularPayments = accountAssignedPayments.filter(
|
|
717
|
+
(p) => p.sendAsSinglePayment !== true
|
|
718
|
+
);
|
|
719
|
+
for (const singlePayment of singlePayments) {
|
|
720
|
+
const batchedPayment = mock_connector.toBatchedPayment(singlePayment);
|
|
721
|
+
const { command } = drizzle.upsertBatchCommand(this.db, {
|
|
722
|
+
batch: {
|
|
723
|
+
id: backendSdk.uuidv4(),
|
|
724
|
+
authorizationUrls: [],
|
|
725
|
+
accountId: acc.id,
|
|
726
|
+
payments: [batchedPayment],
|
|
727
|
+
status: "OPEN",
|
|
728
|
+
metadata: {
|
|
729
|
+
sizeLimit: 1
|
|
730
|
+
}
|
|
731
|
+
}
|
|
732
|
+
});
|
|
733
|
+
await command.execute();
|
|
734
|
+
this.log({
|
|
735
|
+
message: `\u2728 Created single payment batch for account ${acc.id}`
|
|
736
|
+
});
|
|
737
|
+
}
|
|
738
|
+
if (regularPayments.length > 0) {
|
|
739
|
+
const openBatches = await getAccountOpenBatchesQuery(this.db, {
|
|
740
|
+
accountId: acc.id
|
|
741
|
+
});
|
|
742
|
+
const availableBatch = openBatches.find(
|
|
743
|
+
(batch) => batch.payments.length < (batch.metadata?.sizeLimit ?? acc.batchSizeLimit)
|
|
744
|
+
);
|
|
745
|
+
this.log({
|
|
746
|
+
message: availableBatch ? `\u{1F504} Found existing OPEN batch for account ${acc.id}, merging ${availableBatch.payments.length} existing + ${regularPayments.length} new payments` : `\u2728 Creating new batch for account ${acc.id} with ${regularPayments.length} payments`
|
|
747
|
+
});
|
|
748
|
+
const batchedPayments = regularPayments.map(mock_connector.toBatchedPayment);
|
|
749
|
+
const { command } = drizzle.upsertBatchCommand(this.db, {
|
|
750
|
+
batch: availableBatch ? {
|
|
751
|
+
...availableBatch,
|
|
752
|
+
payments: [...availableBatch.payments, ...batchedPayments]
|
|
753
|
+
} : {
|
|
754
|
+
id: backendSdk.uuidv4(),
|
|
755
|
+
authorizationUrls: [],
|
|
756
|
+
accountId: acc.id,
|
|
757
|
+
payments: batchedPayments,
|
|
758
|
+
status: "OPEN",
|
|
759
|
+
metadata: {
|
|
760
|
+
sizeLimit: acc.batchSizeLimit
|
|
761
|
+
}
|
|
762
|
+
}
|
|
763
|
+
});
|
|
764
|
+
const upsertedBatch = await command.execute();
|
|
765
|
+
this.log({
|
|
766
|
+
message: `\u2705 Batch upserted successfully for account ${acc.id}`
|
|
767
|
+
});
|
|
768
|
+
return upsertedBatch;
|
|
769
|
+
}
|
|
764
770
|
}
|
|
765
771
|
});
|
|
766
772
|
}
|
|
@@ -900,7 +906,7 @@ let BankServiceBase = class extends backendSdk.develitWorker(cloudflare_workers.
|
|
|
900
906
|
accountId: acc.id
|
|
901
907
|
}).command
|
|
902
908
|
);
|
|
903
|
-
const encryptionKey = await
|
|
909
|
+
const encryptionKey = await drizzle.importAesKey(this.env.ENCRYPTION_KEY);
|
|
904
910
|
const createAccountCredentials = (await Promise.all(
|
|
905
911
|
credentials.map(
|
|
906
912
|
async (cr) => createAccountCredentialsCommand(this.db, encryptionKey, {
|
|
@@ -990,7 +996,7 @@ let BankServiceBase = class extends backendSdk.develitWorker(cloudflare_workers.
|
|
|
990
996
|
debtor,
|
|
991
997
|
debtorIban: debtor.iban
|
|
992
998
|
};
|
|
993
|
-
const { command } =
|
|
999
|
+
const { command } = drizzle.createPaymentCommand(this.db, { payment });
|
|
994
1000
|
const createdPayment = await command.execute().then(backendSdk.first);
|
|
995
1001
|
this.logQueuePush({ payment, isPaymentExecuted: true });
|
|
996
1002
|
await this.pushToQueue(this.env.QUEUE_BUS_QUEUE, {
|
|
@@ -1089,7 +1095,7 @@ let BankServiceBase = class extends backendSdk.develitWorker(cloudflare_workers.
|
|
|
1089
1095
|
{ data: input, schema: disconnectAccountInputSchema },
|
|
1090
1096
|
{ successMessage: "Account disconnected successfully" },
|
|
1091
1097
|
async ({ accountId }) => {
|
|
1092
|
-
const account = await
|
|
1098
|
+
const account = await drizzle.getAccountByIdQuery(this.db, { accountId });
|
|
1093
1099
|
if (!account) {
|
|
1094
1100
|
throw backendSdk.createInternalError(null, {
|
|
1095
1101
|
message: "Account not found",
|