Matthew Aaron Raymer
2 years ago
8 changed files with 7 additions and 119 deletions
@ -1,27 +0,0 @@ |
|||||
/** |
|
||||
* Field names used by the tables for the DB objects. |
|
||||
*/ |
|
||||
export enum Field { |
|
||||
// Setting
|
|
||||
KEY = "key", |
|
||||
VALUE = "value", |
|
||||
// Log
|
|
||||
SEVERITY = "severity", |
|
||||
LABEL = "label", |
|
||||
ERROR = "error", |
|
||||
// Accounts
|
|
||||
NAME = "name", |
|
||||
DESCRIPTION = "description", |
|
||||
ID = "id", |
|
||||
IDENTITY = "indentity", |
|
||||
CREATED_TIMESTAMP = "createdTimestamp", |
|
||||
STATUS = "status", |
|
||||
} |
|
||||
|
|
||||
export enum Severity { |
|
||||
DEBUG = "Debug", |
|
||||
INFO = "Info", |
|
||||
WARN = "Warning", |
|
||||
ERROR = "Error", |
|
||||
CRITICAL = "Critical", |
|
||||
} |
|
@ -1,6 +0,0 @@ |
|||||
/** |
|
||||
* Dexie table names used by the DexieWrapper service. |
|
||||
*/ |
|
||||
export enum AppTable { |
|
||||
ACCOUNTS = "Accounts-Table", |
|
||||
} |
|
@ -1,9 +0,0 @@ |
|||||
import type { Field } from "@/constants/model"; |
|
||||
|
|
||||
export interface IDBAccount { |
|
||||
[Field.ID]?: string; |
|
||||
[Field.IDENTITY]: string; |
|
||||
[Field.NAME]: string; |
|
||||
[Field.DESCRIPTION]: string; |
|
||||
[Field.CREATED_TIMESTAMP]: number; |
|
||||
} |
|
@ -1,34 +0,0 @@ |
|||||
import Dexie, { type Table } from "dexie"; |
|
||||
import { encrypted, Encryption } from "@pvermeer/dexie-encrypted-addon"; |
|
||||
|
|
||||
import { AppString } from "@/constants/app"; |
|
||||
import { AppTable } from "../constants/table"; |
|
||||
import { Field } from "@/constants/model"; |
|
||||
import { IDBAccount } from "@/models/Account"; |
|
||||
|
|
||||
export class DexieWrapper extends Dexie { |
|
||||
[AppTable.ACCOUNTS]!: Table<IDBAccount>; |
|
||||
|
|
||||
constructor(name: string, secret: string) { |
|
||||
super(name, { autoOpen: true }); |
|
||||
encrypted(this, { secretKey: secret }); |
|
||||
this.version(1).stores({ |
|
||||
[AppTable.ACCOUNTS]: `#&${Field.ID}, $${Field.IDENTITY}`, |
|
||||
}); |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
const secret = |
|
||||
localStorage.getItem("secret") || Encryption.createRandomEncryptionKey(); |
|
||||
|
|
||||
if (localStorage.getItem("secret") == null) { |
|
||||
localStorage.setItem("secret", secret); |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
* Preconfigured DexieWrapper |
|
||||
*/ |
|
||||
export const dexieWrapper = new DexieWrapper( |
|
||||
`${AppString.APP_NAME} v${AppString.VERSION}`, |
|
||||
secret |
|
||||
); |
|
@ -1,41 +0,0 @@ |
|||||
import type { IndexableType } from "dexie"; |
|
||||
import { AppTable } from "@/constants/table"; |
|
||||
import { Field } from "@/constants/model"; |
|
||||
import { dexieWrapper } from "@/services/DexieWrapper"; |
|
||||
import type { IDBAccount } from "@/models/Account"; |
|
||||
|
|
||||
export default function useDBAccounts() { |
|
||||
/** |
|
||||
* Gets all data from the Logs table. |
|
||||
* @returns IDBAccount[] |
|
||||
*/ |
|
||||
async function getAccountsTable(): Promise<IDBAccount[]> { |
|
||||
return await dexieWrapper.table(AppTable.ACCOUNTS).toArray(); |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
* Adds an Account to the database. |
|
||||
* @param name |
|
||||
* @param description |
|
||||
* @param identity |
|
||||
* @returns Id of new Account |
|
||||
*/ |
|
||||
async function addAccount( |
|
||||
name: string, |
|
||||
description: string, |
|
||||
identity: string |
|
||||
): Promise<IndexableType> { |
|
||||
const account: IDBAccount = { |
|
||||
[Field.CREATED_TIMESTAMP]: new Date().getTime(), |
|
||||
[Field.NAME]: name, |
|
||||
[Field.DESCRIPTION]: description, |
|
||||
[Field.IDENTITY]: identity, |
|
||||
}; |
|
||||
return await dexieWrapper.table(AppTable.ACCOUNTS).add(account); |
|
||||
} |
|
||||
|
|
||||
return { |
|
||||
getAccountsTable, |
|
||||
addAccount, |
|
||||
}; |
|
||||
} |
|
Loading…
Reference in new issue