UNPKG

@accounter/server

Version:

59 lines (54 loc) 2.16 kB
import { TransactionsProvider } from '@modules/transactions/providers/transactions.provider.js'; import { FinancialAccountsProvider } from '../providers/financial-accounts.provider.js'; import type { FinancialAccountsModule, IGetFinancialAccountsByAccountIDsResult } from '../types.js'; export const commonFinancialAccountFields: FinancialAccountsModule.FinancialAccountResolvers = { id: DbAccount => DbAccount.id, type: DbAccount => DbAccount.type, }; export const commonTransactionFields: | FinancialAccountsModule.ConversionTransactionResolvers | FinancialAccountsModule.CommonTransactionResolvers = { 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: IGetFinancialAccountsByAccountIDsResult | undefined = 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: | FinancialAccountsModule.LtdFinancialEntityResolvers | FinancialAccountsModule.PersonalFinancialEntityResolvers = { accounts: async (DbBusiness, _, { injector }) => { const accounts = await injector .get(FinancialAccountsProvider) .getFinancialAccountsByOwnerIdLoader.load(DbBusiness.id); return accounts; }, };