diff options
Diffstat (limited to 'packages/taler-wallet-core/src')
-rw-r--r-- | packages/taler-wallet-core/src/exchanges.ts | 27 | ||||
-rw-r--r-- | packages/taler-wallet-core/src/query.ts | 22 |
2 files changed, 34 insertions, 15 deletions
diff --git a/packages/taler-wallet-core/src/exchanges.ts b/packages/taler-wallet-core/src/exchanges.ts index 5b0d3e823..dd4296d8a 100644 --- a/packages/taler-wallet-core/src/exchanges.ts +++ b/packages/taler-wallet-core/src/exchanges.ts @@ -2016,23 +2016,20 @@ export async function deleteExchange( return; } const res = await internalGetExchangeResources(wex, tx, exchangeBaseUrl); - if (res.hasResources) { - if (req.purge) { - const detRecs = - await tx.exchangeDetails.indexes.byExchangeBaseUrl.getAll(); - for (const r of detRecs) { - if (r.rowId == null) { - // Should never happen, as rowId is the primary key. - continue; - } - await tx.exchangeDetails.delete(r.rowId); - } - // FIXME: Also remove records related to transactions? - } else { - inUse = true; - return; + if (res.hasResources && !req.purge) { + inUse = true; + return; + } + const detRecs = + await tx.exchangeDetails.indexes.byExchangeBaseUrl.getAll(); + for (const r of detRecs) { + if (r.rowId == null) { + // Should never happen, as rowId is the primary key. + continue; } + await tx.exchangeDetails.delete(r.rowId); } + // FIXME: Also remove records related to transactions? await tx.exchanges.delete(exchangeBaseUrl); }, ); diff --git a/packages/taler-wallet-core/src/query.ts b/packages/taler-wallet-core/src/query.ts index 994a6a96d..d128805d2 100644 --- a/packages/taler-wallet-core/src/query.ts +++ b/packages/taler-wallet-core/src/query.ts @@ -349,6 +349,10 @@ interface IndexReadOnlyAccessor<RecordType> { query?: IDBKeyRange | IDBValidKey, count?: number, ): Promise<RecordType[]>; + getAllKeys( + query?: IDBKeyRange | IDBValidKey, + count?: number, + ): Promise<IDBValidKey[]>; count(query?: IDBValidKey): Promise<number>; } @@ -363,6 +367,10 @@ interface IndexReadWriteAccessor<RecordType> { query?: IDBKeyRange | IDBValidKey, count?: number, ): Promise<RecordType[]>; + getAllKeys( + query?: IDBKeyRange | IDBValidKey, + count?: number, + ): Promise<IDBValidKey[]>; count(query?: IDBValidKey): Promise<number>; } @@ -642,6 +650,13 @@ function makeReadContext( .getAll(query, count); return requestToPromise(req); }, + getAllKeys(query, count) { + const req = tx + .objectStore(storeName) + .index(indexName) + .getAllKeys(query, count); + return requestToPromise(req); + }, count(query) { const req = tx.objectStore(storeName).index(indexName).count(query); return requestToPromise(req); @@ -699,6 +714,13 @@ function makeWriteContext( .getAll(query, count); return requestToPromise(req); }, + getAllKeys(query, count) { + const req = tx + .objectStore(storeName) + .index(indexName) + .getAllKeys(query, count); + return requestToPromise(req); + }, count(query) { const req = tx.objectStore(storeName).index(indexName).count(query); return requestToPromise(req); |