create store name onupgradeneeded

This commit is contained in:
Georges-Antoine Assi
2025-03-13 21:55:48 -04:00
parent 392a2f2241
commit 8e2e148e90
2 changed files with 30 additions and 13 deletions

View File

@@ -34,10 +34,15 @@ interface DiffMonitor {
off: (event: EventType, listener: EventsListener | ErrorsListener) => void;
}
export default async function createIndexedDBDiffMonitor(
dbName: string,
intervalMs: number = 1000,
): Promise<DiffMonitor> {
export default async function createIndexedDBDiffMonitor({
dbName,
storeName,
intervalMs = 1000,
}: {
dbName: string;
storeName?: string;
intervalMs?: number;
}): Promise<DiffMonitor> {
let lastSnapshot: DBSnapshot | null = null;
let changes: Change[] = [];
let intervalId: number | null = null;
@@ -87,10 +92,10 @@ export default async function createIndexedDBDiffMonitor(
};
try {
for (const storeName of Array.from(db.objectStoreNames)) {
const tx = db.transaction(storeName, "readonly");
const store = tx.objectStore(storeName);
snapshot.stores[storeName] = await getAllFromStore(store);
for (const sn of Array.from(db.objectStoreNames)) {
const tx = db.transaction(sn, "readonly");
const store = tx.objectStore(sn);
snapshot.stores[sn] = await getAllFromStore(store);
}
db.close();
@@ -99,6 +104,14 @@ export default async function createIndexedDBDiffMonitor(
reject(error);
}
};
request.onupgradeneeded = () => {
if (!storeName) return;
const db = request.result;
if (!db.objectStoreNames.contains(storeName)) {
db.createObjectStore(storeName);
}
};
});
}

View File

@@ -225,11 +225,15 @@ window.EJS_onGameStart = async () => {
};
}, 10);
const savesMonitor = await createIndexedDBDiffMonitor("/data/saves", 2000);
const statesMonitor = await createIndexedDBDiffMonitor(
"EmulatorJS-states",
2000,
);
const savesMonitor = await createIndexedDBDiffMonitor({
dbName: "/data/saves",
intervalMs: 2000,
});
const statesMonitor = await createIndexedDBDiffMonitor({
dbName: "EmulatorJS-states",
storeName: "states",
intervalMs: 2000,
});
// Start monitoring
savesMonitor.start();