@accounter/server
Version:
60 lines • 2.04 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 getFeeTransactionsByIds = sql `
SELECT *
FROM accounter_schema.transactions_fees
WHERE id IN $$transactionIds;`;
const updateFeeTransaction = sql `
UPDATE accounter_schema.transactions_fees
SET
is_recurring = COALESCE(
$isRecurring,
is_recurring,
NULL
)
WHERE
id = $transactionId
RETURNING *;
`;
const addFeeTransaction = sql `
INSERT INTO accounter_schema.transactions_fees (id, is_recurring)
VALUES $$feeTransactions(id, isRecurring)
ON CONFLICT DO NOTHING
RETURNING *;`;
const deleteFeeTransactionsByIds = sql `
DELETE FROM accounter_schema.transactions_fees
WHERE id IN $$transactionIds;`;
let FeeTransactionsProvider = class FeeTransactionsProvider {
dbProvider;
constructor(dbProvider) {
this.dbProvider = dbProvider;
}
async batchFeeTransactionsByIds(ids) {
const transactions = await getFeeTransactionsByIds.run({
transactionIds: ids,
}, this.dbProvider);
return ids.map(id => transactions.find(charge => charge.id === id));
}
getFeeTransactionByIdLoader = new DataLoader((keys) => this.batchFeeTransactionsByIds(keys), { cache: false });
updateFeeTransaction(params) {
return updateFeeTransaction.run(params, this.dbProvider);
}
addFeeTransaction(params) {
return addFeeTransaction.run(params, this.dbProvider);
}
deleteFeeTransactionsByIds(params) {
return deleteFeeTransactionsByIds.run(params, this.dbProvider);
}
};
FeeTransactionsProvider = __decorate([
Injectable({
scope: Scope.Singleton,
global: true,
}),
__metadata("design:paramtypes", [DBProvider])
], FeeTransactionsProvider);
export { FeeTransactionsProvider };
//# sourceMappingURL=fee-transactions.provider.js.map