import { MarketOrderHistory, MarketType } from "@/market"; import { usePocketBase, watchCollection } from "@/pocketbase"; import { defineStore } from "pinia"; import { RecordModel } from "pocketbase"; import { computed, onMounted, ref } from "vue"; export type ScanResult = { type: MarketType; history: MarketOrderHistory[]; buy: number, sell: number } interface MarketScan extends RecordModel { owner: string; types: number[]; }; const marketScans = 'marketScans'; export const useMarkeyScanStore = defineStore(marketScans, () => { const pb = usePocketBase(); const marketScan = ref(); const types = computed(() => marketScan.value?.types ?? []); const setTypes = async (types: number[]) => { if (marketScan.value?.id) { marketScan.value = await pb.collection(marketScans).update(marketScan.value.id, { owner: pb.authStore.model!.id, types }); } else { marketScan.value = await pb.collection(marketScans).create({ owner: pb.authStore.model!.id, types }); } } watchCollection(marketScans, '*', data => { if (data.action === 'delete') { marketScan.value = undefined; } else if (!marketScan.value || data.record.id === marketScan.value.id) { marketScan.value = data.record; } }); onMounted(async () => marketScan.value = await pb.collection(marketScans).getFirstListItem('').catch(() => undefined)); return { types, setTypes }; });