From d947b90df330d8e3598fd95ccacb8d511923ead8 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Sat, 17 Aug 2019 01:03:55 +0200 Subject: idb-bridge: indexes belong to object stores --- packages/idb-bridge/src/BridgeIDBFactory.ts | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) (limited to 'packages/idb-bridge/src/BridgeIDBFactory.ts') diff --git a/packages/idb-bridge/src/BridgeIDBFactory.ts b/packages/idb-bridge/src/BridgeIDBFactory.ts index e37ee2b26..0fbcd7630 100644 --- a/packages/idb-bridge/src/BridgeIDBFactory.ts +++ b/packages/idb-bridge/src/BridgeIDBFactory.ts @@ -44,7 +44,7 @@ export class BridgeIDBFactory { queueTask(async () => { const databases = await this.backend.getDatabases(); - const dbInfo = databases.find((x) => x.name == name); + const dbInfo = databases.find(x => x.name == name); if (!dbInfo) { // Database already doesn't exist, success! const event = new BridgeIDBVersionChangeEvent("success", { @@ -58,7 +58,10 @@ export class BridgeIDBFactory { try { const dbconn = await this.backend.connectDatabase(name); - const backendTransaction = await this.backend.enterVersionChange(dbconn, 0); + const backendTransaction = await this.backend.enterVersionChange( + dbconn, + 0, + ); await this.backend.deleteDatabase(backendTransaction, name); await this.backend.commit(backendTransaction); await this.backend.close(dbconn); @@ -120,6 +123,11 @@ export class BridgeIDBFactory { const requestedVersion = version; + BridgeIDBFactory.enableTracing && + console.log( + `TRACE: existing version ${existingVersion}, requested version ${requestedVersion}`, + ); + if (existingVersion > requestedVersion) { request._finishWithError(new VersionError()); return; @@ -127,6 +135,18 @@ export class BridgeIDBFactory { const db = new BridgeIDBDatabase(this.backend, dbconn); + if (existingVersion == requestedVersion) { + request.result = db; + request.readyState = "done"; + + const event2 = new FakeEvent("success", { + bubbles: false, + cancelable: false, + }); + event2.eventPath = [request]; + request.dispatchEvent(event2); + } + if (existingVersion < requestedVersion) { // http://www.w3.org/TR/2015/REC-IndexedDB-20150108/#dfn-steps-for-running-a-versionchange-transaction @@ -146,7 +166,10 @@ export class BridgeIDBFactory { request.dispatchEvent(event); } - const backendTransaction = await this.backend.enterVersionChange(dbconn, requestedVersion); + const backendTransaction = await this.backend.enterVersionChange( + dbconn, + requestedVersion, + ); db._runningVersionchangeTransaction = true; const transaction = db._internalTransaction( -- cgit v1.2.3