UNPKG

@accounter/server

Version:

33 lines (30 loc) 1.76 kB
import { format } from 'date-fns'; import { TransactionDirection } from '@shared/gql-types'; import { formatFinancialAmount } from '@shared/helpers'; import { TimelessDateString } from '@shared/types'; import { effectiveDateSupplement } from '../helpers/effective-date.helper.js'; import { TransactionsProvider } from '../providers/transactions.provider.js'; import type { TransactionsModule } from '../types.js'; export const commonTransactionFields: | TransactionsModule.ConversionTransactionResolvers | TransactionsModule.FeeTransactionResolvers | TransactionsModule.WireTransactionResolvers | TransactionsModule.CommonTransactionResolvers = { id: DbTransaction => DbTransaction.id, referenceId: DbTransaction => DbTransaction.source_id, referenceKey: DbTransaction => DbTransaction.source_reference, eventDate: DbTransaction => format(DbTransaction.event_date, 'yyyy-MM-dd') as TimelessDateString, effectiveDate: DbTransaction => effectiveDateSupplement(DbTransaction), direction: DbTransaction => parseFloat(DbTransaction.amount) > 0 ? TransactionDirection.Credit : TransactionDirection.Debit, amount: DbTransaction => formatFinancialAmount(DbTransaction.amount, DbTransaction.currency), sourceDescription: DbTransaction => DbTransaction.source_description ?? '', balance: DbTransaction => formatFinancialAmount(DbTransaction.current_balance), createdAt: DbTransaction => DbTransaction.created_at, updatedAt: DbTransaction => DbTransaction.updated_at, isFee: DbTransaction => DbTransaction.is_fee, }; export const commonChargeFields: TransactionsModule.ChargeResolvers = { transactions: (DbCharge, _, { injector }) => injector.get(TransactionsProvider).getTransactionsByChargeIDLoader.load(DbCharge.id), };