UNPKG

@cranberry-money/shared-services

Version:

Platform-agnostic API services with pure functions and dependency injection. Includes auth, portfolios, instruments, countries, sectors, and more.

58 lines 2.41 kB
import { PORTFOLIO_ENDPOINTS, ASSET_HOLDING_ENDPOINTS, ASSET_HOLDING_SNAPSHOT_ENDPOINTS, } from '@cranberry-money/shared-constants'; let configuredApiClient = null; export const configurePortfolioHoldings = (apiClient) => { configuredApiClient = apiClient; }; const getConfiguredClient = () => { if (!configuredApiClient) { throw new Error('Portfolio holdings service not configured. Call configurePortfolioHoldings(apiClient) before using portfolio holdings functions.'); } return configuredApiClient; }; export const getAssetHoldings = (filters) => { const params = {}; if (filters?.portfolio_id) params.portfolio_id = filters.portfolio_id; if (filters?.portfolio_uuid) params.portfolio_uuid = filters.portfolio_uuid; if (filters?.instrument) params.instrument = filters.instrument; if (filters?.min_quantity) params.min_quantity = filters.min_quantity.toString(); if (filters?.max_quantity) params.max_quantity = filters.max_quantity.toString(); if (filters?.order_by) params.order_by = filters.order_by; return getConfiguredClient().get(ASSET_HOLDING_ENDPOINTS.BASE, { params }); }; export const getPortfolioHoldings = (portfolioUuid, order_by) => { const params = {}; if (order_by) params.order_by = order_by; return getConfiguredClient().get(`${PORTFOLIO_ENDPOINTS.BASE}${portfolioUuid}/holdings/`, { params }); }; export const getAssetHoldingByUuid = (uuid) => { return getConfiguredClient().get(`${ASSET_HOLDING_ENDPOINTS.BASE}${uuid}/`); }; export const getAssetHoldingSnapshots = (filters) => { const params = {}; if (filters?.asset_holding_id) params.asset_holding_id = filters.asset_holding_id; if (filters?.portfolio_id) params.portfolio_id = filters.portfolio_id; if (filters?.reason) params.reason = filters.reason; if (filters?.start_date) params.start_date = filters.start_date; if (filters?.end_date) params.end_date = filters.end_date; if (filters?.order_by) params.order_by = filters.order_by; return getConfiguredClient().get(ASSET_HOLDING_SNAPSHOT_ENDPOINTS.BASE, { params, }); }; export const getAssetHoldingSnapshotById = (id) => { return getConfiguredClient().get(`${ASSET_HOLDING_SNAPSHOT_ENDPOINTS.BASE}${id}/`); }; //# sourceMappingURL=portfolioHoldings.js.map