aboutsummaryrefslogtreecommitdiff
path: root/packages/taler-wallet-core/src/db.ts
diff options
context:
space:
mode:
authorFlorian Dold <florian@dold.me>2023-09-08 13:33:21 +0200
committerFlorian Dold <florian@dold.me>2023-09-08 13:33:21 +0200
commit4898f50db777a68cd2ddd0c1e323ef55033f4af7 (patch)
tree82b241ffc35413c6653d781e381f3d47f7ffd544 /packages/taler-wallet-core/src/db.ts
parent2ae952cdfa8f38a650be8e4438c21bace2f24c19 (diff)
downloadwallet-core-4898f50db777a68cd2ddd0c1e323ef55033f4af7.tar.xz
wallet-core: more DB cleanup
Diffstat (limited to 'packages/taler-wallet-core/src/db.ts')
-rw-r--r--packages/taler-wallet-core/src/db.ts63
1 files changed, 26 insertions, 37 deletions
diff --git a/packages/taler-wallet-core/src/db.ts b/packages/taler-wallet-core/src/db.ts
index 3db7ae9b5..3a8109320 100644
--- a/packages/taler-wallet-core/src/db.ts
+++ b/packages/taler-wallet-core/src/db.ts
@@ -28,56 +28,53 @@ import {
} from "@gnu-taler/idb-bridge";
import {
AgeCommitmentProof,
- AmountJson,
AmountString,
+ Amounts,
+ AttentionInfo,
+ Codec,
CoinEnvelope,
+ CoinPublicKeyString,
CoinRefreshRequest,
CoinStatus,
- MerchantContractTerms,
+ DenomSelectionState,
DenominationInfo,
DenominationPubKey,
- DenomSelectionState,
EddsaPublicKeyString,
EddsaSignatureString,
ExchangeAuditor,
ExchangeGlobalFees,
+ HashCodeString,
InternationalizedString,
- Location,
+ Logger,
+ MerchantContractTerms,
MerchantInfo,
PayCoinSelection,
PeerContractTerms,
- Product,
RefreshReason,
TalerErrorDetail,
+ TalerPreciseTimestamp,
TalerProtocolDuration,
TalerProtocolTimestamp,
TransactionIdStr,
UnblindedSignature,
WireInfo,
- HashCodeString,
- Amounts,
- AttentionInfo,
- Logger,
- CoinPublicKeyString,
- TalerPreciseTimestamp,
codecForAny,
- Codec,
} from "@gnu-taler/taler-util";
+import { RetryInfo, TaskIdentifiers } from "./operations/common.js";
import {
DbAccess,
DbReadOnlyTransaction,
DbReadWriteTransaction,
- describeContents,
- describeIndex,
- describeStore,
GetReadWriteAccess,
IndexDescriptor,
- openDatabase,
StoreDescriptor,
StoreNames,
StoreWithIndexes,
+ describeContents,
+ describeIndex,
+ describeStore,
+ openDatabase,
} from "./util/query.js";
-import { RetryInfo, TaskIdentifiers } from "./operations/common.js";
/**
* This file contains the database schema of the Taler wallet together
@@ -109,6 +106,9 @@ import { RetryInfo, TaskIdentifiers } from "./operations/common.js";
store.
- More object stores should have an "id" primary key,
as this makes referencing less expensive.
+ - Coin selections should probably go into a separate object store.
+ - Some records should be split up into an extra "details" record
+ that we don't always need to iterate over.
*/
/**
@@ -323,12 +323,14 @@ export interface DenomFees {
* Denomination record as stored in the wallet's database.
*/
export interface DenominationRecord {
+ /**
+ * Currency of the denomination.
+ *
+ * Stored separately as we have an index on it.
+ */
currency: string;
- // FIXME: Use binary encoding of amount instead?
- amountVal: number;
-
- amountFrac: number;
+ value: AmountString;
/**
* The denomination public key.
@@ -407,14 +409,6 @@ export interface DenominationRecord {
}
export namespace DenominationRecord {
- export function getValue(d: DenominationRecord): AmountJson {
- return {
- currency: d.currency,
- fraction: d.amountFrac,
- value: d.amountVal,
- };
- }
-
export function toDenomInfo(d: DenominationRecord): DenominationInfo {
return {
denomPub: d.denomPub,
@@ -427,7 +421,7 @@ export namespace DenominationRecord {
stampExpireLegal: d.stampExpireLegal,
stampExpireWithdraw: d.stampExpireWithdraw,
stampStart: d.stampStart,
- value: Amounts.stringify(DenominationRecord.getValue(d)),
+ value: Amounts.stringify(d.value),
exchangeBaseUrl: d.exchangeBaseUrl,
};
}
@@ -1056,9 +1050,6 @@ export interface AllowedExchangeInfo {
* processing in the wallet.
*/
export interface WalletContractData {
- products?: Product[];
- summaryI18n: { [lang_tag: string]: string } | undefined;
-
/**
* Fulfillment URL, or the empty string if the order has no fulfillment URL.
*
@@ -1076,6 +1067,7 @@ export interface WalletContractData {
orderId: string;
merchantBaseUrl: string;
summary: string;
+ summaryI18n: { [lang_tag: string]: string } | undefined;
autoRefund: TalerProtocolDuration | undefined;
maxWireFee: AmountString;
wireFeeAmortization: number;
@@ -1087,8 +1079,6 @@ export interface WalletContractData {
wireInfoHash: string;
maxDepositFee: AmountString;
minimumAge?: number;
- deliveryDate: TalerProtocolTimestamp | undefined;
- deliveryLocation: Location | undefined;
}
export enum PurchaseStatus {
@@ -2095,8 +2085,7 @@ export interface OperationRetryRecord {
*/
export interface CoinAvailabilityRecord {
currency: string;
- amountVal: number;
- amountFrac: number;
+ value: AmountString;
denomPubHash: string;
exchangeBaseUrl: string;