import Dexie, { type Table } from 'dexie'; import type { Monster, PicletInstance, Encounter, GameState } from './schema'; export class PicletDatabase extends Dexie { // Legacy table monsters!: Table; // New game tables picletInstances!: Table; encounters!: Table; gameState!: Table; constructor() { super('PicletGameDB'); this.version(1).stores({ monsters: '++id, name, createdAt' }); // Version 2: Add imageData field this.version(2).stores({ monsters: '++id, name, createdAt' }).upgrade(tx => { // No data migration needed, just schema update return tx.table('monsters').toCollection().modify(monster => { monster.imageData = monster.imageData || null; }); }); // Version 3: Add stats field this.version(3).stores({ monsters: '++id, name, createdAt' }).upgrade(tx => { // No data migration needed, just schema update return tx.table('monsters').toCollection().modify(monster => { monster.stats = monster.stats || null; }); }); // Version 4: Add new game tables this.version(4).stores({ monsters: '++id, name, createdAt', picletInstances: '++id, typeId, nickname, isInRoster, rosterPosition, caughtAt', encounters: '++id, type, createdAt', gameState: '++id, lastPlayed' }); } } export const db = new PicletDatabase();