In transition ... experimenting

This commit is contained in:
Matthew Aaron Raymer
2022-12-15 16:36:23 +08:00
parent 2c57bbf4ee
commit 9232afb5af
8 changed files with 81 additions and 8 deletions

34
src/db/index.ts Normal file
View File

@@ -0,0 +1,34 @@
import BaseDexie from "dexie";
import { encrypted, Encryption } from "@pvermeer/dexie-encrypted-addon";
import { accountsSchema, AccountsTable } from "./tables/accounts";
type DexieTables = AccountsTable;
/**
* In order to make the next line be acceptable, the program needs to have its linter suppress a rule:
* https://typescript-eslint.io/rules/no-unnecessary-type-constraint/
*
* and change *any* to *unknown*
*
* https://9to5answer.com/how-to-bypass-warning-unexpected-any-specify-a-different-type-typescript-eslint-no-explicit-any
*/
//export type Dexie<T extends any = DexieTables> = BaseDexie & T;
export type Dexie<T extends unknown = DexieTables> = BaseDexie & T;
export const db = new BaseDexie("kickStarter") as Dexie;
const schema = Object.assign({}, accountsSchema);
// if db already made, skip creation
BaseDexie.exists("kickStarter").then(function (exists) {
if (exists == false) {
// create password and place password in localStorage
const secret =
localStorage.getItem("secret") || Encryption.createRandomEncryptionKey();
if (localStorage.getItem("secret") == null) {
localStorage.setItem("secret", secret);
}
encrypted(db, { secretKey: secret });
db.version(1).stores(schema);
}
});