add SQL DB access to everywhere we are using the DB, up to the "C" files

This commit is contained in:
2025-05-27 01:27:04 -06:00
parent 81d4f0c762
commit 7de4125eb7
24 changed files with 511 additions and 119 deletions

View File

@@ -190,10 +190,11 @@ import { QrcodeStream } from "vue-qrcode-reader";
import QuickNav from "../components/QuickNav.vue";
import UserNameDialog from "../components/UserNameDialog.vue";
import { NotificationIface } from "../constants/app";
import { NotificationIface, USE_DEXIE_DB } from "../constants/app";
import { db, retrieveSettingsForActiveAccount } from "../db/index";
import { Contact } from "../db/tables/contacts";
import { MASTER_SETTINGS_KEY } from "../db/tables/settings";
import * as databaseUtil from "../db/databaseUtil";
import { getContactJwtFromJwtUrl } from "../libs/crypto";
import {
generateEndorserJwtUrlForAccount,
@@ -206,6 +207,7 @@ import { Router } from "vue-router";
import { logger } from "../utils/logger";
import { QRScannerFactory } from "@/services/QRScanner/QRScannerFactory";
import { CameraState } from "@/services/QRScanner/types";
import { PlatformServiceFactory } from "@/services/PlatformServiceFactory";
interface QRScanResult {
rawValue?: string;
@@ -591,7 +593,14 @@ export default class ContactQRScanShow extends Vue {
);
if (regResult.success) {
contact.registered = true;
db.contacts.update(contact.did, { registered: true });
const platformService = PlatformServiceFactory.getInstance();
await platformService.dbExec(
"UPDATE contacts SET registered = ? WHERE did = ?",
[true, contact.did],
);
if (USE_DEXIE_DB) {
await db.contacts.update(contact.did, { registered: true });
}
logger.info("Contact registration successful", { did: contact.did });
this.$notify(
@@ -759,13 +768,22 @@ export default class ContactQRScanShow extends Vue {
async addNewContact(contact: Contact) {
try {
logger.info("Opening database connection for new contact");
await db.open();
// Check if contact already exists
const existingContacts = await db.contacts.toArray();
const existingContact = existingContacts.find(
(c) => c.did === contact.did,
const platformService = PlatformServiceFactory.getInstance();
const dbAllContacts = await platformService.dbQuery(
"SELECT * FROM contacts WHERE did = ?",
[contact.did],
);
const existingContacts = databaseUtil.mapQueryResultToValues(
dbAllContacts,
) as unknown as Contact[];
let existingContact: Contact | undefined = existingContacts[0];
if (USE_DEXIE_DB) {
await db.open();
const existingContacts = await db.contacts.toArray();
existingContact = existingContacts.find((c) => c.did === contact.did);
}
if (existingContact) {
logger.info("Contact already exists", { did: contact.did });
@@ -782,7 +800,16 @@ export default class ContactQRScanShow extends Vue {
}
// Add new contact
await db.contacts.add(contact);
// @ts-expect-error because we're just using the value to store to the DB
contact.contactMethods = JSON.stringify(contact.contactMethods);
const { sql, params } = databaseUtil.generateInsertStatement(
contact as unknown as Record<string, unknown>,
"contacts",
);
await platformService.dbExec(sql, params);
if (USE_DEXIE_DB) {
await db.contacts.add(contact);
}
if (this.activeDid) {
logger.info("Setting contact visibility", { did: contact.did });
@@ -816,17 +843,31 @@ export default class ContactQRScanShow extends Vue {
text: "Do you want to register them?",
onCancel: async (stopAsking?: boolean) => {
if (stopAsking) {
await db.settings.update(MASTER_SETTINGS_KEY, {
hideRegisterPromptOnNewContact: stopAsking,
});
const platformService = PlatformServiceFactory.getInstance();
await platformService.dbExec(
"UPDATE settings SET hideRegisterPromptOnNewContact = ? WHERE key = ?",
[stopAsking, MASTER_SETTINGS_KEY],
);
if (USE_DEXIE_DB) {
await db.settings.update(MASTER_SETTINGS_KEY, {
hideRegisterPromptOnNewContact: stopAsking,
});
}
this.hideRegisterPromptOnNewContact = stopAsking;
}
},
onNo: async (stopAsking?: boolean) => {
if (stopAsking) {
await db.settings.update(MASTER_SETTINGS_KEY, {
hideRegisterPromptOnNewContact: stopAsking,
});
const platformService = PlatformServiceFactory.getInstance();
await platformService.dbExec(
"UPDATE settings SET hideRegisterPromptOnNewContact = ? WHERE key = ?",
[stopAsking, MASTER_SETTINGS_KEY],
);
if (USE_DEXIE_DB) {
await db.settings.update(MASTER_SETTINGS_KEY, {
hideRegisterPromptOnNewContact: stopAsking,
});
}
this.hideRegisterPromptOnNewContact = stopAsking;
}
},