@cranberry-money/shared-services
Version:
Platform-agnostic API services with pure functions and dependency injection. Includes auth, portfolios, instruments, countries, sectors, and more.
56 lines • 2.37 kB
JavaScript
import { TARGET_TRADE_SHEET_ENDPOINTS } from '@cranberry-money/shared-constants';
let configuredApiClient = null;
export const configureTargetTradeSheets = (apiClient) => {
configuredApiClient = apiClient;
};
const getConfiguredClient = () => {
if (!configuredApiClient) {
throw new Error('Target trade sheets service not configured. Call configureTargetTradeSheets(apiClient) before using target trade sheets functions.');
}
return configuredApiClient;
};
export const getTargetTradeSheets = (params) => {
const queryParams = {};
if (params?.portfolio) {
queryParams.portfolio = params.portfolio;
}
if (params?.start_date) {
queryParams.start_date = params.start_date;
}
if (params?.end_date) {
queryParams.end_date = params.end_date;
}
return getConfiguredClient().get(TARGET_TRADE_SHEET_ENDPOINTS.BASE, {
params: queryParams,
});
};
export const getTargetTradeSheetByUuid = (uuid) => {
return getConfiguredClient().get(`${TARGET_TRADE_SHEET_ENDPOINTS.BASE}${uuid}/`);
};
export const createTargetTradeSheet = (data) => {
return getConfiguredClient().post(TARGET_TRADE_SHEET_ENDPOINTS.BASE, data);
};
export const updateTargetTradeSheet = (uuid, data) => {
return getConfiguredClient().patch(`${TARGET_TRADE_SHEET_ENDPOINTS.BASE}${uuid}/`, data);
};
export const deleteTargetTradeSheet = (uuid) => {
return getConfiguredClient().delete(`${TARGET_TRADE_SHEET_ENDPOINTS.BASE}${uuid}/`);
};
export const approveTargetTradeSheet = (uuid) => {
return getConfiguredClient().post(`${TARGET_TRADE_SHEET_ENDPOINTS.BASE}${uuid}/approve/`);
};
export const cleanTargetTradeSheet = (uuid) => {
return getConfiguredClient().post(`${TARGET_TRADE_SHEET_ENDPOINTS.BASE}${uuid}/clean/`);
};
export const getOrCreateDraftTargetTradeSheet = async (portfolioUuid) => {
const targetTradeSheetsResponse = await getTargetTradeSheets({ portfolio: portfolioUuid });
const draftTargetTradeSheet = targetTradeSheetsResponse.data.results.find(sheet => sheet.status === 'DRAFT');
if (draftTargetTradeSheet) {
return draftTargetTradeSheet.uuid;
}
const newTargetTradeSheetResponse = await createTargetTradeSheet({
portfolio: portfolioUuid,
});
return newTargetTradeSheetResponse.data.uuid;
};
//# sourceMappingURL=targetTradeSheets.js.map