UNPKG

@accounter/server

Version:
56 lines 2.96 kB
import { GraphQLError } from 'graphql'; import { BusinessesProvider } from '../../financial-entities/providers/businesses.provider.js'; import { SecurityBusinessesProvider } from '../providers/security-businesses.provider.js'; export const securityBusinessesResolvers = { Query: { allSecurityBusinesses: async (_, __, { injector }) => { const securityBusinesses = await injector .get(SecurityBusinessesProvider) .getAllSecurityBusinesses(); const businesses = await injector .get(BusinessesProvider) .getBusinessByIdLoader.loadMany(securityBusinesses.map(security => security.id)); // A security row whose business vanished is a broken FK, not a reason to fail the query. return businesses.filter((business) => business != null && !(business instanceof Error)); }, }, LtdFinancialEntity: { securityInfo: async (business, _, { injector }) => (await injector .get(SecurityBusinessesProvider) .getSecurityBusinessByIdLoader.load(business.id)) ?? null, }, SecurityBusiness: { id: securityBusiness => securityBusiness.id, business: async (securityBusiness, _, { injector }) => { const business = await injector .get(BusinessesProvider) .getBusinessByIdLoader.load(securityBusiness.id); if (!business) { throw new GraphQLError(`Business ID="${securityBusiness.id}" not found`); } return business; }, isin: securityBusiness => securityBusiness.isin, identifiers: async (securityBusiness, _, { injector }) => injector .get(SecurityBusinessesProvider) .getIdentifiersByBusinessIdLoader.load(securityBusiness.id), symbol: securityBusiness => securityBusiness.symbol, engName: securityBusiness => securityBusiness.eng_name, hebName: securityBusiness => securityBusiness.heb_name, exchange: securityBusiness => securityBusiness.exchange, // The column is accounter_schema.currency, whose values are the GraphQL enum's — the same // cast the financial-accounts resolvers use for their currency columns. currencyCode: securityBusiness => securityBusiness.currency_code, itemType: securityBusiness => securityBusiness.item_type, stockType: securityBusiness => securityBusiness.stock_type, isEtf: securityBusiness => securityBusiness.is_etf, isForeign: securityBusiness => securityBusiness.is_foreign, issuerCountryCode: securityBusiness => securityBusiness.issuer_country_code, }, SecurityIdentifier: { id: identifier => identifier.id, type: identifier => identifier.identifier_type, value: identifier => identifier.identifier_value, }, }; //# sourceMappingURL=security-businesses.resolver.js.map