under-falling-skies/src/lib/store/api.js

33 lines
773 B
JavaScript
Raw Normal View History

2023-01-12 19:20:54 +00:00
import Dexie, { liveQuery } from 'dexie';
import { writable } from 'svelte/store';
const seedCampaign = {
battles: [],
};
export function genApi(options = {}) {
const storage = new Dexie('Campaigns', options.dexie ?? {});
storage.version(1).stores({
campaigns: '++id,name',
});
const campaigns = liveQuery(async () => {
const c = [];
await storage.campaigns
.toCollection()
.each(({ id, name }) => c.push({ id, name }));
return c;
});
return {
campaigns,
storage,
event: {
addCampaign: (name) =>
storage.campaigns.add({ name, ...seedCampaign }),
deleteCampaign: (id) => storage.campaigns.delete(id),
},
};
}