@develit-services/bank 0.0.36 → 0.0.37

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.
@@ -233,14 +233,13 @@ const getCredentialsByAccountId = async (db, { accountId }) => {
233
233
  return cred;
234
234
  };
235
235
 
236
- const getOpenBatchByAccountIdQuery = async (db, { accountId }) => {
237
- const batch = await db.select().from(database_schema.tables.batch).where(
236
+ const getAccountOpenBatchesQuery = async (db, { accountId }) => {
237
+ return await db.select().from(database_schema.tables.batch).where(
238
238
  drizzleOrm.and(
239
239
  drizzleOrm.eq(database_schema.tables.batch.accountId, accountId),
240
240
  drizzleOrm.eq(database_schema.tables.batch.status, "OPEN")
241
241
  )
242
- ).limit(1).get();
243
- return batch;
242
+ );
244
243
  };
245
244
 
246
245
  const getOttQuery = async (db, { ott }) => {
@@ -637,35 +636,40 @@ let BankServiceBase = class extends backendSdk.develitWorker(cloudflare_workers.
637
636
  }
638
637
  );
639
638
  }
639
+ batchLimit(connectorKey) {
640
+ return 50;
641
+ }
640
642
  async addPaymentsToBatch({
641
643
  paymentsToBatch
642
644
  }) {
643
645
  return this.handleAction(null, {}, async () => {
644
646
  this.logInput({ paymentsToBatch });
645
647
  const mappedPayments = paymentsToBatch.map(
646
- (payment) => ({
647
- id: backendSdk.uuidv4(),
648
- accountId: "",
649
- refId: payment.refId,
650
- connectorKey: "MOCK",
651
- amount: payment.amount,
652
- direction: "OUTGOING",
653
- paymentType: payment.paymentType,
654
- currency: payment.currency,
655
- status: "CREATED",
656
- initiatedAt: /* @__PURE__ */ new Date(),
657
- processedAt: null,
658
- vs: payment.vs || null,
659
- ss: payment.ss || null,
660
- ks: payment.ks || null,
661
- message: payment.message || null,
662
- creditorHolderName: payment.creditorHolderName,
663
- creditorAccountNumberWithBankCode: payment.creditorAccountNumberWithBankCode,
664
- creditorIban: payment.creditorIban,
665
- debtorHolderName: payment.debtorHolderName,
666
- debtorAccountNumberWithBankCode: payment.debtorAccountNumberWithBankCode,
667
- debtorIban: payment.debtorIban
668
- })
648
+ (payment) => {
649
+ return {
650
+ id: backendSdk.uuidv4(),
651
+ accountId: "",
652
+ refId: payment.refId,
653
+ connectorKey: "MOCK",
654
+ amount: payment.amount,
655
+ direction: "OUTGOING",
656
+ paymentType: payment.paymentType,
657
+ currency: payment.currency,
658
+ status: "CREATED",
659
+ initiatedAt: /* @__PURE__ */ new Date(),
660
+ processedAt: null,
661
+ vs: payment.vs || null,
662
+ ss: payment.ss || null,
663
+ ks: payment.ks || null,
664
+ message: payment.message || null,
665
+ creditorHolderName: payment.creditorHolderName,
666
+ creditorAccountNumberWithBankCode: payment.creditorAccountNumberWithBankCode,
667
+ creditorIban: payment.creditorIban,
668
+ debtorHolderName: payment.debtorHolderName,
669
+ debtorAccountNumberWithBankCode: payment.debtorAccountNumberWithBankCode,
670
+ debtorIban: payment.debtorIban
671
+ };
672
+ }
669
673
  );
670
674
  const { supportedPayments, unsupportedPayments } = seperateSupportedPayments(
671
675
  mappedPayments,
@@ -710,22 +714,19 @@ let BankServiceBase = class extends backendSdk.develitWorker(cloudflare_workers.
710
714
  this.log({
711
715
  message: `\u{1F4B0} Processing ${newPayments.length} payments for account (${acc.iban}, ${acc.currency})`
712
716
  });
713
- const existingBatch = await getOpenBatchByAccountIdQuery(this.db, {
717
+ const openBatches = await getAccountOpenBatchesQuery(this.db, {
714
718
  accountId: acc.id
715
719
  });
716
- if (existingBatch) {
717
- this.log({
718
- message: `\u{1F504} Found existing OPEN batch for account ${acc.id}, merging ${existingBatch.payments.length} existing + ${newPayments.length} new payments`
719
- });
720
- } else {
721
- this.log({
722
- message: `\u2728 Creating new batch for account ${acc.id} with ${newPayments.length} payments`
723
- });
724
- }
720
+ const availableBatch = openBatches.find(
721
+ (batch) => batch.payments.length >= this.batchLimit(acc.connectorKey)
722
+ );
723
+ this.log({
724
+ message: availableBatch ? `\u{1F504} Found existing OPEN batches for account ${acc.id}, merging ${availableBatch.payments.length} existing + ${newPayments.length} new payments` : `\u2728 Creating new batch for account ${acc.id} with ${newPayments.length} payments`
725
+ });
725
726
  const { command } = upsertBatchCommand(this.db, {
726
- batch: existingBatch ? {
727
- ...existingBatch,
728
- payments: [...existingBatch.payments, ...newPayments]
727
+ batch: availableBatch ? {
728
+ ...availableBatch,
729
+ payments: [...availableBatch.payments, ...newPayments]
729
730
  } : {
730
731
  id: backendSdk.uuidv4(),
731
732
  authorizationUrls: [],
@@ -225,9 +225,9 @@ declare const getBatchesInputSchema: z.ZodObject<{
225
225
  limit: z.ZodNumber;
226
226
  sort: z.ZodObject<{
227
227
  column: z.ZodEnum<{
228
+ batchPaymentInitiatedAt: "batchPaymentInitiatedAt";
228
229
  createdAt: "createdAt";
229
230
  updatedAt: "updatedAt";
230
- batchPaymentInitiatedAt: "batchPaymentInitiatedAt";
231
231
  }>;
232
232
  direction: z.ZodEnum<{
233
233
  asc: "asc";
@@ -475,17 +475,18 @@ declare class BankServiceBase extends BankServiceBase_base {
475
475
  scheduled(controller: ScheduledController): Promise<void>;
476
476
  updateBatchStatuses(): Promise<void>;
477
477
  initiateBankConnector(input: initiateConnectorInput): Promise<initiateConnectorOutput>;
478
+ batchLimit(connectorKey: ConnectorKey): number;
478
479
  addPaymentsToBatch({ paymentsToBatch, }: {
479
480
  paymentsToBatch: SendPaymentInput[];
480
481
  }): Promise<IRPCResponse<{
482
+ batchPaymentInitiatedAt: Date | null;
483
+ authorizationUrls: string | string[] | null;
481
484
  status: "OPEN" | "PROCESSING" | "READY_TO_SIGN" | "WAITING_FOR_PROCESSING" | "PREPARED" | "COMPLETED" | "FAILED" | null;
482
485
  id: string;
483
486
  createdAt: Date | null;
484
487
  updatedAt: Date | null;
485
488
  deletedAt: Date | null;
486
489
  accountId: string | null;
487
- batchPaymentInitiatedAt: Date | null;
488
- authorizationUrls: string | string[] | null;
489
490
  payments: PaymentInsertType[];
490
491
  metadata: object | null;
491
492
  }[] | undefined>>;
@@ -225,9 +225,9 @@ declare const getBatchesInputSchema: z.ZodObject<{
225
225
  limit: z.ZodNumber;
226
226
  sort: z.ZodObject<{
227
227
  column: z.ZodEnum<{
228
+ batchPaymentInitiatedAt: "batchPaymentInitiatedAt";
228
229
  createdAt: "createdAt";
229
230
  updatedAt: "updatedAt";
230
- batchPaymentInitiatedAt: "batchPaymentInitiatedAt";
231
231
  }>;
232
232
  direction: z.ZodEnum<{
233
233
  asc: "asc";
@@ -475,17 +475,18 @@ declare class BankServiceBase extends BankServiceBase_base {
475
475
  scheduled(controller: ScheduledController): Promise<void>;
476
476
  updateBatchStatuses(): Promise<void>;
477
477
  initiateBankConnector(input: initiateConnectorInput): Promise<initiateConnectorOutput>;
478
+ batchLimit(connectorKey: ConnectorKey): number;
478
479
  addPaymentsToBatch({ paymentsToBatch, }: {
479
480
  paymentsToBatch: SendPaymentInput[];
480
481
  }): Promise<IRPCResponse<{
482
+ batchPaymentInitiatedAt: Date | null;
483
+ authorizationUrls: string | string[] | null;
481
484
  status: "OPEN" | "PROCESSING" | "READY_TO_SIGN" | "WAITING_FOR_PROCESSING" | "PREPARED" | "COMPLETED" | "FAILED" | null;
482
485
  id: string;
483
486
  createdAt: Date | null;
484
487
  updatedAt: Date | null;
485
488
  deletedAt: Date | null;
486
489
  accountId: string | null;
487
- batchPaymentInitiatedAt: Date | null;
488
- authorizationUrls: string | string[] | null;
489
490
  payments: PaymentInsertType[];
490
491
  metadata: object | null;
491
492
  }[] | undefined>>;
@@ -225,9 +225,9 @@ declare const getBatchesInputSchema: z.ZodObject<{
225
225
  limit: z.ZodNumber;
226
226
  sort: z.ZodObject<{
227
227
  column: z.ZodEnum<{
228
+ batchPaymentInitiatedAt: "batchPaymentInitiatedAt";
228
229
  createdAt: "createdAt";
229
230
  updatedAt: "updatedAt";
230
- batchPaymentInitiatedAt: "batchPaymentInitiatedAt";
231
231
  }>;
232
232
  direction: z.ZodEnum<{
233
233
  asc: "asc";
@@ -475,17 +475,18 @@ declare class BankServiceBase extends BankServiceBase_base {
475
475
  scheduled(controller: ScheduledController): Promise<void>;
476
476
  updateBatchStatuses(): Promise<void>;
477
477
  initiateBankConnector(input: initiateConnectorInput): Promise<initiateConnectorOutput>;
478
+ batchLimit(connectorKey: ConnectorKey): number;
478
479
  addPaymentsToBatch({ paymentsToBatch, }: {
479
480
  paymentsToBatch: SendPaymentInput[];
480
481
  }): Promise<IRPCResponse<{
482
+ batchPaymentInitiatedAt: Date | null;
483
+ authorizationUrls: string | string[] | null;
481
484
  status: "OPEN" | "PROCESSING" | "READY_TO_SIGN" | "WAITING_FOR_PROCESSING" | "PREPARED" | "COMPLETED" | "FAILED" | null;
482
485
  id: string;
483
486
  createdAt: Date | null;
484
487
  updatedAt: Date | null;
485
488
  deletedAt: Date | null;
486
489
  accountId: string | null;
487
- batchPaymentInitiatedAt: Date | null;
488
- authorizationUrls: string | string[] | null;
489
490
  payments: PaymentInsertType[];
490
491
  metadata: object | null;
491
492
  }[] | undefined>>;
@@ -229,14 +229,13 @@ const getCredentialsByAccountId = async (db, { accountId }) => {
229
229
  return cred;
230
230
  };
231
231
 
232
- const getOpenBatchByAccountIdQuery = async (db, { accountId }) => {
233
- const batch = await db.select().from(tables.batch).where(
232
+ const getAccountOpenBatchesQuery = async (db, { accountId }) => {
233
+ return await db.select().from(tables.batch).where(
234
234
  and(
235
235
  eq(tables.batch.accountId, accountId),
236
236
  eq(tables.batch.status, "OPEN")
237
237
  )
238
- ).limit(1).get();
239
- return batch;
238
+ );
240
239
  };
241
240
 
242
241
  const getOttQuery = async (db, { ott }) => {
@@ -633,35 +632,40 @@ let BankServiceBase = class extends develitWorker(WorkerEntrypoint) {
633
632
  }
634
633
  );
635
634
  }
635
+ batchLimit(connectorKey) {
636
+ return 50;
637
+ }
636
638
  async addPaymentsToBatch({
637
639
  paymentsToBatch
638
640
  }) {
639
641
  return this.handleAction(null, {}, async () => {
640
642
  this.logInput({ paymentsToBatch });
641
643
  const mappedPayments = paymentsToBatch.map(
642
- (payment) => ({
643
- id: uuidv4(),
644
- accountId: "",
645
- refId: payment.refId,
646
- connectorKey: "MOCK",
647
- amount: payment.amount,
648
- direction: "OUTGOING",
649
- paymentType: payment.paymentType,
650
- currency: payment.currency,
651
- status: "CREATED",
652
- initiatedAt: /* @__PURE__ */ new Date(),
653
- processedAt: null,
654
- vs: payment.vs || null,
655
- ss: payment.ss || null,
656
- ks: payment.ks || null,
657
- message: payment.message || null,
658
- creditorHolderName: payment.creditorHolderName,
659
- creditorAccountNumberWithBankCode: payment.creditorAccountNumberWithBankCode,
660
- creditorIban: payment.creditorIban,
661
- debtorHolderName: payment.debtorHolderName,
662
- debtorAccountNumberWithBankCode: payment.debtorAccountNumberWithBankCode,
663
- debtorIban: payment.debtorIban
664
- })
644
+ (payment) => {
645
+ return {
646
+ id: uuidv4(),
647
+ accountId: "",
648
+ refId: payment.refId,
649
+ connectorKey: "MOCK",
650
+ amount: payment.amount,
651
+ direction: "OUTGOING",
652
+ paymentType: payment.paymentType,
653
+ currency: payment.currency,
654
+ status: "CREATED",
655
+ initiatedAt: /* @__PURE__ */ new Date(),
656
+ processedAt: null,
657
+ vs: payment.vs || null,
658
+ ss: payment.ss || null,
659
+ ks: payment.ks || null,
660
+ message: payment.message || null,
661
+ creditorHolderName: payment.creditorHolderName,
662
+ creditorAccountNumberWithBankCode: payment.creditorAccountNumberWithBankCode,
663
+ creditorIban: payment.creditorIban,
664
+ debtorHolderName: payment.debtorHolderName,
665
+ debtorAccountNumberWithBankCode: payment.debtorAccountNumberWithBankCode,
666
+ debtorIban: payment.debtorIban
667
+ };
668
+ }
665
669
  );
666
670
  const { supportedPayments, unsupportedPayments } = seperateSupportedPayments(
667
671
  mappedPayments,
@@ -706,22 +710,19 @@ let BankServiceBase = class extends develitWorker(WorkerEntrypoint) {
706
710
  this.log({
707
711
  message: `\u{1F4B0} Processing ${newPayments.length} payments for account (${acc.iban}, ${acc.currency})`
708
712
  });
709
- const existingBatch = await getOpenBatchByAccountIdQuery(this.db, {
713
+ const openBatches = await getAccountOpenBatchesQuery(this.db, {
710
714
  accountId: acc.id
711
715
  });
712
- if (existingBatch) {
713
- this.log({
714
- message: `\u{1F504} Found existing OPEN batch for account ${acc.id}, merging ${existingBatch.payments.length} existing + ${newPayments.length} new payments`
715
- });
716
- } else {
717
- this.log({
718
- message: `\u2728 Creating new batch for account ${acc.id} with ${newPayments.length} payments`
719
- });
720
- }
716
+ const availableBatch = openBatches.find(
717
+ (batch) => batch.payments.length >= this.batchLimit(acc.connectorKey)
718
+ );
719
+ this.log({
720
+ message: availableBatch ? `\u{1F504} Found existing OPEN batches for account ${acc.id}, merging ${availableBatch.payments.length} existing + ${newPayments.length} new payments` : `\u2728 Creating new batch for account ${acc.id} with ${newPayments.length} payments`
721
+ });
721
722
  const { command } = upsertBatchCommand(this.db, {
722
- batch: existingBatch ? {
723
- ...existingBatch,
724
- payments: [...existingBatch.payments, ...newPayments]
723
+ batch: availableBatch ? {
724
+ ...availableBatch,
725
+ payments: [...availableBatch.payments, ...newPayments]
725
726
  } : {
726
727
  id: uuidv4(),
727
728
  authorizationUrls: [],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@develit-services/bank",
3
- "version": "0.0.36",
3
+ "version": "0.0.37",
4
4
  "author": "Develit.io s.r.o.",
5
5
  "type": "module",
6
6
  "exports": {