@accounter/server
Version:
41 lines • 1.85 kB
JavaScript
import { TransactionsProvider } from '../../transactions/providers/transactions.provider.js';
import { FinancialAccountsProvider } from '../providers/financial-accounts.provider.js';
export const commonFinancialAccountFields = {
id: DbAccount => DbAccount.id,
type: DbAccount => DbAccount.type,
};
export const commonTransactionFields = {
account: async (transactionId, _, { injector, adminContext: { defaultAdminBusinessId, foreignSecurities: { foreignSecuritiesBusinessId }, }, }) => {
const transaction = await injector
.get(TransactionsProvider)
.transactionByIdLoader.load(transactionId);
if (!transaction.account_id) {
throw new Error(`Transaction ID="${transactionId}" is missing account_id`);
}
let account = undefined;
if (!!foreignSecuritiesBusinessId && transaction.business_id === foreignSecuritiesBusinessId) {
const accounts = await injector
.get(FinancialAccountsProvider)
.getFinancialAccountsByOwnerIdLoader.load(defaultAdminBusinessId);
account = accounts.find(account => account.type === 'FOREIGN_SECURITIES');
}
else {
account = await injector
.get(FinancialAccountsProvider)
.getFinancialAccountByAccountIDLoader.load(transaction.account_id);
}
if (!account) {
throw new Error(`Account ID "${transaction.account_id}" is missing`);
}
return account;
},
};
export const commonFinancialEntityFields = {
accounts: async (DbBusiness, _, { injector }) => {
const accounts = await injector
.get(FinancialAccountsProvider)
.getFinancialAccountsByOwnerIdLoader.load(DbBusiness.id);
return accounts;
},
};
//# sourceMappingURL=common.js.map