import { APIObject, APIStoreOptions, URLBuilder } from '@rokoli/bnb' import { defineStore } from 'pinia' import { APICreate, APIListUnpaginated, APIRemove, APIRetrieve, APIUpdate, createExtendableAPI, } from '@rokoli/bnb/drf' import { useOnAuthBehaviour } from '@/stores/auth' export function createUnpaginatedAPIStore<T extends APIObject>( storeId: string, endpoint: URLBuilder, options?: APIStoreOptions, behaviour?: { syncOnAuth: boolean }, ) { return defineStore(storeId, () => { const { api, base } = createExtendableAPI<T>(endpoint, options) const listOperations = APIListUnpaginated(api) if (behaviour?.syncOnAuth) { useOnAuthBehaviour(() => void listOperations.list()) } return { ...base, ...listOperations, ...APIRetrieve(api), ...APICreate(api), ...APIUpdate(api), ...APIRemove(api), } }) }