UNPKG

@accounter/server

Version:

102 lines 3.88 kB
import { __decorate, __metadata } from "tslib"; import DataLoader from 'dataloader'; import { Injectable, Scope } from 'graphql-modules'; import { DBProvider } from '../../app-providers/db.provider.js'; import { sql } from '@pgtyped/runtime'; const getBankDepositTransactionsByIds = sql ` SELECT * FROM accounter_schema.transactions_bank_deposits WHERE id IN $$transactionIds;`; const getTransactionsByBankDeposits = sql ` SELECT * FROM accounter_schema.transactions_bank_deposits LEFT JOIN accounter_schema.transactions USING (id) WHERE deposit_id IN $$depositIds;`; const getDepositTransactionsByTransactionId = sql ` SELECT * FROM accounter_schema.transactions_bank_deposits LEFT JOIN accounter_schema.transactions USING (id) WHERE deposit_id IN ( SELECT deposit_id FROM accounter_schema.transactions_bank_deposits WHERE id = $transactionId );`; const getDepositTransactionsByChargeId = sql ` SELECT * FROM accounter_schema.transactions_bank_deposits LEFT JOIN accounter_schema.transactions USING (id) WHERE deposit_id IN ( SELECT deposit_id FROM accounter_schema.transactions_bank_deposits LEFT JOIN accounter_schema.transactions USING (id) WHERE charge_id = $chargeId ) AND charge_id <> $chargeId;`; const updateBankDepositTransaction = sql ` UPDATE accounter_schema.transactions_bank_deposits SET deposit_id = COALESCE( $depositId, deposit_id, NULL ) WHERE id = $transactionId RETURNING *; `; const addBankDepositTransaction = sql ` INSERT INTO accounter_schema.transactions_bank_deposits (id, deposit_id) VALUES $$bankDepositTransactions(id, depositId) ON CONFLICT DO NOTHING RETURNING *;`; const deleteBankDepositTransactionsByIds = sql ` DELETE FROM accounter_schema.transactions_bank_deposits WHERE id IN $$transactionIds;`; let BankDepositTransactionsProvider = class BankDepositTransactionsProvider { dbProvider; constructor(dbProvider) { this.dbProvider = dbProvider; } async batchBankDepositTransactionsByIds(ids) { const transactions = await getBankDepositTransactionsByIds.run({ transactionIds: ids, }, this.dbProvider); return ids.map(id => transactions.find(t => t.id === id)); } getBankDepositTransactionByIdLoader = new DataLoader((keys) => this.batchBankDepositTransactionsByIds(keys), { cache: false }); async batchTransactionsByBankDeposits(depositIds) { const transactions = await getTransactionsByBankDeposits.run({ depositIds, }, this.dbProvider); return depositIds.map(id => transactions.filter(t => t.deposit_id === id)); } getTransactionsByBankDepositLoader = new DataLoader((keys) => this.batchTransactionsByBankDeposits(keys), { cache: false }); getDepositTransactionsByTransactionId(transactionId) { return getDepositTransactionsByTransactionId.run({ transactionId }, this.dbProvider); } getDepositTransactionsByChargeId(chargeId) { return getDepositTransactionsByChargeId.run({ chargeId }, this.dbProvider); } updateBankDepositTransaction(params) { return updateBankDepositTransaction.run(params, this.dbProvider); } addBankDepositTransaction(params) { return addBankDepositTransaction.run(params, this.dbProvider); } deleteBankDepositTransactionsByIds(params) { return deleteBankDepositTransactionsByIds.run(params, this.dbProvider); } }; BankDepositTransactionsProvider = __decorate([ Injectable({ scope: Scope.Singleton, global: true, }), __metadata("design:paramtypes", [DBProvider]) ], BankDepositTransactionsProvider); export { BankDepositTransactionsProvider }; //# sourceMappingURL=bank-deposit-transactions.provider.js.map