@accounter/server
Version:
102 lines • 3.88 kB
JavaScript
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