import {defineStore} from "pinia"; import {computed, ref} from "vue"; import {acquisitionApi} from "@/mammon"; import {AcquisitionResponse, AcquisitionResponseSourceEnum} from "@/generated/mammon"; export type AcquiredTypeSource = 'bo' | 'so' | 'prod' | 'misc'; export type RawAcquiredType = { id: string; type: number; quantity: number; remaining: number; price: number; date: Date; source: AcquisitionResponseSourceEnum; } const toAcquiredType = (a: AcquisitionResponse): RawAcquiredType => ({ id: a.acquisitionId, type: a.marketTypeId, quantity: a.quantity, remaining: a.remaining, price: a.unitCost, date: new Date(a.datetime), source: a.source, }); export const useAcquiredTypesStore = defineStore('market-acquisition', () => { const acquiredTypes = ref([]); const types = computed(() => acquiredTypes.value.filter(item => item.remaining > 0)); // Display-only: the backend exposes no write endpoint yet, so buy/sell are no-ops. const addAcquiredType = async (_type: number, _quantity: number, _price: number, _source?: AcquiredTypeSource) => {}; const removeAcquiredType = async (_id: string, _quantity: number) => {}; const refresh = () => acquisitionApi.findAllAcquisitions() .then(response => acquiredTypes.value = response.data.map(toAcquiredType)); refresh(); return { acquiredTypes: types, addAcquiredType, removeAcquiredType, refresh }; });