diff options
author | Özgür Kesim <oec-taler@kesim.org> | 2023-08-30 12:56:35 +0200 |
---|---|---|
committer | Özgür Kesim <oec-taler@kesim.org> | 2023-08-30 12:56:35 +0200 |
commit | e02a4eb990c8c54662fbb658695312bdfce492e0 (patch) | |
tree | 16e66fd6840f5ca420ea4ce90006b0826e12ec4e /packages/taler-wallet-core/src/util/query.ts | |
parent | d42a06607b90c540fa3eb87daa3b4aacbfdd19a7 (diff) | |
parent | 557213f9c4fd834fadb189799073dc64cdb00a07 (diff) |
Merge branch 'master' into age-withdraw
Diffstat (limited to 'packages/taler-wallet-core/src/util/query.ts')
-rw-r--r-- | packages/taler-wallet-core/src/util/query.ts | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/packages/taler-wallet-core/src/util/query.ts b/packages/taler-wallet-core/src/util/query.ts index 527cbdf63..71f80f8aa 100644 --- a/packages/taler-wallet-core/src/util/query.ts +++ b/packages/taler-wallet-core/src/util/query.ts @@ -429,6 +429,46 @@ export type GetReadOnlyAccess<BoundStores> = { : unknown; }; +export type StoreNames<StoreMap> = StoreMap extends { + [P in keyof StoreMap]: StoreWithIndexes<infer SN1, infer SD1, infer IM1>; +} + ? keyof StoreMap + : unknown; + +export type DbReadOnlyTransaction< + StoreMap, + Stores extends StoreNames<StoreMap> & string, +> = StoreMap extends { + [P in Stores]: StoreWithIndexes<infer SN1, infer SD1, infer IM1>; +} + ? { + [P in Stores]: StoreMap[P] extends StoreWithIndexes< + infer SN, + infer SD, + infer IM + > + ? StoreReadOnlyAccessor<GetRecordType<SD>, IM> + : unknown; + } + : unknown; + +export type DbReadWriteTransaction< + StoreMap, + Stores extends StoreNames<StoreMap> & string, +> = StoreMap extends { + [P in Stores]: StoreWithIndexes<infer SN1, infer SD1, infer IM1>; +} + ? { + [P in Stores]: StoreMap[P] extends StoreWithIndexes< + infer SN, + infer SD, + infer IM + > + ? StoreReadWriteAccessor<GetRecordType<SD>, IM> + : unknown; + } + : unknown; + export type GetReadWriteAccess<BoundStores> = { [P in keyof BoundStores]: BoundStores[P] extends StoreWithIndexes< infer SN, |