@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
JavaScript
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