From 442ca789bb5f9d6b4a4ce611f42d64af3664fa9b Mon Sep 17 00:00:00 2001 From: theanmolsharma Date: Sat, 6 Jan 2024 13:55:08 +0530 Subject: [PATCH] feat: updated wallet-db Signed-off-by: theanmolsharma --- src/wallet/db/db.interface.ts | 12 +++++++++++ src/wallet/db/level/db.ts | 38 ++++++++++++++++++++++++++++++++++- src/wallet/db/level/layout.ts | 2 ++ 3 files changed, 51 insertions(+), 1 deletion(-) diff --git a/src/wallet/db/db.interface.ts b/src/wallet/db/db.interface.ts index 011f6b0..323c290 100644 --- a/src/wallet/db/db.interface.ts +++ b/src/wallet/db/db.interface.ts @@ -1,4 +1,16 @@ export type DbInterface = { + open(): Promise; + close(): Promise; + getStatus(): string; getVersion(): Promise; setVersion(version: number): Promise; + getSeed(): Promise; + setSeed(seed: string): Promise; + saveAddress(address: string, path: string): Promise; + getAddress(address: string): Promise; + hasAddress(address: string): Promise; + getReceiveDepth(): Promise; + setReceiveDepth(depth: number): Promise; + getChangeDepth(): Promise; + setChangeDepth(depth: number): Promise; }; diff --git a/src/wallet/db/level/db.ts b/src/wallet/db/level/db.ts index 7892200..36459b8 100644 --- a/src/wallet/db/level/db.ts +++ b/src/wallet/db/level/db.ts @@ -34,6 +34,42 @@ export class WalletDB implements DbInterface { } public async setVersion(version: number): Promise { - this.db.put(wdb.V, version.toString()); + await this.db.put(wdb.V, version.toString()); + } + + public async getSeed(): Promise { + return await this.db.get(wdb.M); + } + + public async setSeed(set: string): Promise { + await this.db.put(wdb.M, set); + } + + public async saveAddress(address: string, path: string): Promise { + await this.db.sublevel(wdb.A).put(address, path); + } + + public async getAddress(address: string): Promise { + return await this.db.sublevel(wdb.A).get(address); + } + + async hasAddress(address: string): Promise { + return (await this.db.sublevel(wdb.A).get(address)) !== undefined; + } + + async getReceiveDepth(): Promise { + return parseInt(await this.db.sublevel(wdb.A).get('receiveDepth')); + } + + async setReceiveDepth(depth: number): Promise { + await this.db.sublevel(wdb.A).put('receiveDepth', depth.toString()); + } + + async getChangeDepth(): Promise { + return parseInt(await this.db.sublevel(wdb.A).get('changeDepth')); + } + + async setChangeDepth(depth: number): Promise { + await this.db.sublevel(wdb.A).put('changeDepth', depth.toString()); } } diff --git a/src/wallet/db/level/layout.ts b/src/wallet/db/level/layout.ts index f55278d..6aa40be 100644 --- a/src/wallet/db/level/layout.ts +++ b/src/wallet/db/level/layout.ts @@ -1,4 +1,6 @@ // Database layout export const wdb = { V: 'V', // Version + M: 'M', // Master key + A: 'A', // Address };