fixes for compilation #136

Open
trentlarson wants to merge 3 commits from sql-absurd-sql-further2 into sql-absurd-sql-further
  1. 2
      src/components/GiftedDialog.vue
  2. 4
      src/components/GiftedPrompts.vue
  3. 2
      src/components/MembersList.vue
  4. 2
      src/components/OnboardingDialog.vue
  5. 4
      src/db-sql/migration.ts
  6. 8
      src/db/databaseUtil.ts
  7. 4
      src/interfaces/absurd-sql.d.ts
  8. 12
      src/interfaces/database.ts
  9. 14
      src/libs/util.ts
  10. 8
      src/main.electron.ts
  11. 23
      src/services/AbsurdSqlDatabaseService.ts
  12. 19
      src/services/PlatformService.ts
  13. 6
      src/services/migrationService.ts
  14. 6
      src/services/platforms/CapacitorPlatformService.ts
  15. 34
      src/services/platforms/ElectronPlatformService.ts
  16. 4
      src/services/platforms/PyWebViewPlatformService.ts
  17. 35
      src/services/platforms/WebPlatformService.ts
  18. 2
      src/views/AccountViewView.vue
  19. 2
      src/views/ClaimCertificateView.vue
  20. 2
      src/views/ClaimReportCertificateView.vue
  21. 2
      src/views/ClaimView.vue
  22. 2
      src/views/ConfirmGiftView.vue
  23. 2
      src/views/ContactAmountsView.vue
  24. 2
      src/views/ContactEditView.vue
  25. 2
      src/views/ContactGiftingView.vue
  26. 2
      src/views/ContactImportView.vue
  27. 2
      src/views/ContactQRScanFullView.vue
  28. 2
      src/views/ContactQRScanShowView.vue
  29. 4
      src/views/ContactsView.vue
  30. 2
      src/views/DIDView.vue
  31. 2
      src/views/DiscoverView.vue
  32. 2
      src/views/GiftedDetailsView.vue
  33. 4
      src/views/HomeView.vue
  34. 2
      src/views/ImportDerivedAccountView.vue
  35. 2
      src/views/InviteOneView.vue
  36. 2
      src/views/LogView.vue
  37. 2
      src/views/NewActivityView.vue
  38. 2
      src/views/OfferDetailsView.vue
  39. 2
      src/views/ProjectViewView.vue
  40. 2
      src/views/ProjectsView.vue
  41. 4
      src/views/QuickActionBvcEndView.vue
  42. 2
      src/views/RecentOffersToUserProjectsView.vue
  43. 2
      src/views/RecentOffersToUserView.vue
  44. 2
      src/views/ShareMyContactInfoView.vue
  45. 2
      src/views/SharedPhotoView.vue
  46. 4
      src/views/TestView.vue
  47. 4
      src/views/UserProfileView.vue
  48. 3
      tsconfig.node.json

2
src/components/GiftedDialog.vue

@ -154,7 +154,7 @@ export default class GiftedDialog extends Vue {
this.activeDid = settings.activeDid || ""; this.activeDid = settings.activeDid || "";
const platformService = PlatformServiceFactory.getInstance(); const platformService = PlatformServiceFactory.getInstance();
const result = await platformService.dbQuery(`SELECT * FROM contacts`); const result = await platformService.dbQueryRaw(`SELECT * FROM contacts`);
if (result) { if (result) {
this.allContacts = databaseUtil.mapQueryResultToValues( this.allContacts = databaseUtil.mapQueryResultToValues(
result, result,

4
src/components/GiftedPrompts.vue

@ -130,7 +130,7 @@ export default class GivenPrompts extends Vue {
this.callbackOnFullGiftInfo = callbackOnFullGiftInfo; this.callbackOnFullGiftInfo = callbackOnFullGiftInfo;
const platformService = PlatformServiceFactory.getInstance(); const platformService = PlatformServiceFactory.getInstance();
const result = await platformService.dbQuery( const result = await platformService.dbQueryRaw(
"SELECT COUNT(*) FROM contacts", "SELECT COUNT(*) FROM contacts",
); );
if (result) { if (result) {
@ -240,7 +240,7 @@ export default class GivenPrompts extends Vue {
} else { } else {
// get the contact at that offset // get the contact at that offset
const platformService = PlatformServiceFactory.getInstance(); const platformService = PlatformServiceFactory.getInstance();
const result = await platformService.dbQuery( const result = await platformService.dbQueryRaw(
"SELECT * FROM contacts LIMIT 1 OFFSET ?", "SELECT * FROM contacts LIMIT 1 OFFSET ?",
[someContactDbIndex], [someContactDbIndex],
); );

2
src/components/MembersList.vue

@ -361,7 +361,7 @@ export default class MembersList extends Vue {
async loadContacts() { async loadContacts() {
const platformService = PlatformServiceFactory.getInstance(); const platformService = PlatformServiceFactory.getInstance();
const result = await platformService.dbQuery("SELECT * FROM contacts"); const result = await platformService.dbQueryRaw("SELECT * FROM contacts");
if (result) { if (result) {
this.contacts = databaseUtil.mapQueryResultToValues( this.contacts = databaseUtil.mapQueryResultToValues(
result, result,

2
src/components/OnboardingDialog.vue

@ -241,7 +241,7 @@ export default class OnboardingDialog extends Vue {
this.activeDid = settings.activeDid || ""; this.activeDid = settings.activeDid || "";
this.isRegistered = !!settings.isRegistered; this.isRegistered = !!settings.isRegistered;
const platformService = PlatformServiceFactory.getInstance(); const platformService = PlatformServiceFactory.getInstance();
const dbContacts = await platformService.dbQuery("SELECT * FROM contacts"); const dbContacts = await platformService.dbQueryRaw("SELECT * FROM contacts");
if (dbContacts) { if (dbContacts) {
this.numContacts = dbContacts.values.length; this.numContacts = dbContacts.values.length;
const firstContact = dbContacts.values[0]; const firstContact = dbContacts.values[0];

4
src/db-sql/migration.ts

@ -1,5 +1,5 @@
import migrationService from "../services/migrationService"; import migrationService from "../services/migrationService";
import type { QueryExecResult } from "../interfaces/database"; import type { QueryExecResultRaw } from "../interfaces/database";
import { DEFAULT_ENDORSER_API_SERVER } from "@/constants/app"; import { DEFAULT_ENDORSER_API_SERVER } from "@/constants/app";
import { arrayBufferToBase64 } from "@/libs/crypto"; import { arrayBufferToBase64 } from "@/libs/crypto";
@ -127,7 +127,7 @@ export async function registerMigrations(): Promise<void> {
} }
export async function runMigrations( export async function runMigrations(
sqlExec: (sql: string, params?: unknown[]) => Promise<Array<QueryExecResult>>, sqlExec: (sql: string, params?: unknown[]) => Promise<Array<QueryExecResultRaw>>,
): Promise<void> { ): Promise<void> {
await registerMigrations(); await registerMigrations();
await migrationService.runMigrations(sqlExec); await migrationService.runMigrations(sqlExec);

8
src/db/databaseUtil.ts

@ -7,7 +7,7 @@ import { PlatformServiceFactory } from "@/services/PlatformServiceFactory";
import { MASTER_SETTINGS_KEY, Settings } from "./tables/settings"; import { MASTER_SETTINGS_KEY, Settings } from "./tables/settings";
import { logger } from "@/utils/logger"; import { logger } from "@/utils/logger";
import { DEFAULT_ENDORSER_API_SERVER } from "@/constants/app"; import { DEFAULT_ENDORSER_API_SERVER } from "@/constants/app";
import { QueryExecResult } from "@/interfaces/database"; import { QueryExecResultRaw } from "@/interfaces/database";
export async function updateDefaultSettings( export async function updateDefaultSettings(
settingsChanges: Settings, settingsChanges: Settings,
@ -80,7 +80,7 @@ const DEFAULT_SETTINGS: Settings = {
// retrieves default settings // retrieves default settings
export async function retrieveSettingsForDefaultAccount(): Promise<Settings> { export async function retrieveSettingsForDefaultAccount(): Promise<Settings> {
const platform = PlatformServiceFactory.getInstance(); const platform = PlatformServiceFactory.getInstance();
const result = await platform.dbQuery("SELECT * FROM settings WHERE id = ?", [ const result = await platform.dbQueryRaw("SELECT * FROM settings WHERE id = ?", [
MASTER_SETTINGS_KEY, MASTER_SETTINGS_KEY,
]); ]);
if (!result) { if (!result) {
@ -104,7 +104,7 @@ export async function retrieveSettingsForActiveAccount(): Promise<Settings> {
return defaultSettings; return defaultSettings;
} else { } else {
const platform = PlatformServiceFactory.getInstance(); const platform = PlatformServiceFactory.getInstance();
const result = await platform.dbQuery( const result = await platform.dbQueryRaw(
"SELECT * FROM settings WHERE accountDid = ?", "SELECT * FROM settings WHERE accountDid = ?",
[defaultSettings.activeDid], [defaultSettings.activeDid],
); );
@ -236,7 +236,7 @@ export function generateUpdateStatement(
} }
export function mapQueryResultToValues( export function mapQueryResultToValues(
record: QueryExecResult | undefined, record: QueryExecResultRaw | undefined,
): Array<Record<string, unknown>> { ): Array<Record<string, unknown>> {
if (!record) { if (!record) {
return []; return [];

4
src/interfaces/absurd-sql.d.ts

@ -1,4 +1,4 @@
import type { QueryExecResult, SqlValue } from "./database"; import type { QueryExecResultRaw, SqlValue } from "./database";
declare module "@jlongster/sql.js" { declare module "@jlongster/sql.js" {
interface SQL { interface SQL {
@ -49,7 +49,7 @@ declare module "absurd-sql/dist/indexeddb-main-thread" {
} }
export interface SQLiteDatabase { export interface SQLiteDatabase {
exec: (sql: string, params?: unknown[]) => Promise<QueryExecResult[]>; exec: (sql: string, params?: unknown[]) => Promise<QueryExecResultRaw[]>;
close: () => Promise<void>; close: () => Promise<void>;
} }

12
src/interfaces/database.ts

@ -1,17 +1,21 @@
export type SqlValue = string | number | null | Uint8Array; export type SqlValue = string | number | null | Uint8Array;
export interface QueryExecResult { export interface QueryExecResultRaw {
columns: Array<string>; columns: Array<string>;
values: Array<Array<SqlValue>>; values: Array<Array<SqlValue>>;
} }
export interface DatabaseService { export interface DatabaseService {
initialize(): Promise<void>; initialize(): Promise<void>;
query(sql: string, params?: unknown[]): Promise<QueryExecResult[]>; query(sql: string, params?: unknown[]): Promise<QueryExecResultRaw[]>;
run( run(
sql: string, sql: string,
params?: unknown[], params?: unknown[],
): Promise<{ changes: number; lastId?: number }>; ): Promise<{ changes: number; lastId?: number }>;
getOneRow(sql: string, params?: unknown[]): Promise<unknown[] | undefined>;
getAll(sql: string, params?: unknown[]): Promise<unknown[][]>; // Change this to return QueryExecResultRaw[] so that we can create objects with the right keys
// getOneRow(sql: string, params?: unknown[]): Promise<unknown[] | undefined>;
// Change this to return QueryExecResultRaw[] so that we can create objects with the right keys
// getAll(sql: string, params?: unknown[]): Promise<unknown[][]>;
} }

14
src/libs/util.ts

@ -479,7 +479,7 @@ export type AccountKeyInfo = Account & KeyMetaWithPrivate;
export const retrieveAccountCount = async (): Promise<number> => { export const retrieveAccountCount = async (): Promise<number> => {
let result = 0; let result = 0;
const platformService = PlatformServiceFactory.getInstance(); const platformService = PlatformServiceFactory.getInstance();
const dbResult = await platformService.dbQuery( const dbResult = await platformService.dbQueryRaw(
`SELECT COUNT(*) FROM accounts`, `SELECT COUNT(*) FROM accounts`,
); );
if (dbResult?.values?.[0]?.[0]) { if (dbResult?.values?.[0]?.[0]) {
@ -496,7 +496,7 @@ export const retrieveAccountCount = async (): Promise<number> => {
export const retrieveAccountDids = async (): Promise<string[]> => { export const retrieveAccountDids = async (): Promise<string[]> => {
const platformService = PlatformServiceFactory.getInstance(); const platformService = PlatformServiceFactory.getInstance();
const dbAccounts = await platformService.dbQuery(`SELECT did FROM accounts`); const dbAccounts = await platformService.dbQueryRaw(`SELECT did FROM accounts`);
let allDids = let allDids =
databaseUtil databaseUtil
.mapQueryResultToValues(dbAccounts) .mapQueryResultToValues(dbAccounts)
@ -522,7 +522,7 @@ export const retrieveAccountMetadata = async (
): Promise<Account | undefined> => { ): Promise<Account | undefined> => {
let result: Account | undefined = undefined; let result: Account | undefined = undefined;
const platformService = PlatformServiceFactory.getInstance(); const platformService = PlatformServiceFactory.getInstance();
const dbAccount = await platformService.dbQuery( const dbAccount = await platformService.dbQueryRaw(
`SELECT * FROM accounts WHERE did = ?`, `SELECT * FROM accounts WHERE did = ?`,
[activeDid], [activeDid],
); );
@ -563,7 +563,7 @@ export const retrieveFullyDecryptedAccount = async (
): Promise<Account | undefined> => { ): Promise<Account | undefined> => {
let result: Account | undefined = undefined; let result: Account | undefined = undefined;
const platformService = PlatformServiceFactory.getInstance(); const platformService = PlatformServiceFactory.getInstance();
const dbSecrets = await platformService.dbQuery( const dbSecrets = await platformService.dbQueryRaw(
`SELECT secretBase64 from secret`, `SELECT secretBase64 from secret`,
); );
if ( if (
@ -577,7 +577,7 @@ export const retrieveFullyDecryptedAccount = async (
} }
const secretBase64 = dbSecrets.values[0][0] as string; const secretBase64 = dbSecrets.values[0][0] as string;
const secret = base64ToArrayBuffer(secretBase64); const secret = base64ToArrayBuffer(secretBase64);
const dbAccount = await platformService.dbQuery( const dbAccount = await platformService.dbQueryRaw(
`SELECT * FROM accounts WHERE did = ?`, `SELECT * FROM accounts WHERE did = ?`,
[activeDid], [activeDid],
); );
@ -611,7 +611,7 @@ export const retrieveFullyDecryptedAccount = async (
export const retrieveAllAccountsMetadata = async (): Promise<Account[]> => { export const retrieveAllAccountsMetadata = async (): Promise<Account[]> => {
const platformService = PlatformServiceFactory.getInstance(); const platformService = PlatformServiceFactory.getInstance();
const dbAccounts = await platformService.dbQuery(`SELECT * FROM accounts`); const dbAccounts = await platformService.dbQueryRaw(`SELECT * FROM accounts`);
const accounts = databaseUtil.mapQueryResultToValues(dbAccounts) as Account[]; const accounts = databaseUtil.mapQueryResultToValues(dbAccounts) as Account[];
let result = accounts.map((account) => { let result = accounts.map((account) => {
// eslint-disable-next-line @typescript-eslint/no-unused-vars // eslint-disable-next-line @typescript-eslint/no-unused-vars
@ -643,7 +643,7 @@ export async function saveNewIdentity(
try { try {
// add to the new sql db // add to the new sql db
const platformService = PlatformServiceFactory.getInstance(); const platformService = PlatformServiceFactory.getInstance();
const secrets = await platformService.dbQuery( const secrets = await platformService.dbQueryRaw(
`SELECT secretBase64 FROM secret`, `SELECT secretBase64 FROM secret`,
); );
if (!secrets?.values?.length || !secrets.values[0]?.length) { if (!secrets?.values?.length || !secrets.values[0]?.length) {

8
src/main.electron.ts

@ -19,14 +19,14 @@ const app = initializeApp();
const sqliteReady = new Promise<void>((resolve, reject) => { const sqliteReady = new Promise<void>((resolve, reject) => {
if (!window.electron?.ipcRenderer) { if (!window.electron?.ipcRenderer) {
logger.error("[Main Electron] IPC renderer not available"); logger.error("[Main Electron] IPC renderer not available");
reject(new Error("IPC renderer not available")); reject(new Error("[Main Electron] IPC renderer not available"));
return; return;
} }
// Set a timeout to prevent hanging // Set a timeout to prevent hanging
const timeout = setTimeout(() => { const timeout = setTimeout(() => {
reject(new Error("SQLite initialization timeout")); reject(new Error("[Main Electron] SQLite initialization timeout"));
}, 30000); // 30 second timeout }, 5000); // 30 second timeout
window.electron.ipcRenderer.once('sqlite-ready', () => { window.electron.ipcRenderer.once('sqlite-ready', () => {
clearTimeout(timeout); clearTimeout(timeout);
@ -39,7 +39,7 @@ const sqliteReady = new Promise<void>((resolve, reject) => {
clearTimeout(timeout); clearTimeout(timeout);
const status = args[0] as { status: string; error?: string }; const status = args[0] as { status: string; error?: string };
if (status.status === 'error') { if (status.status === 'error') {
reject(new Error(status.error || 'Database initialization failed')); reject(new Error(status.error || '[Main Electron] Database initialization failed'));
} }
}); });
}); });

23
src/services/AbsurdSqlDatabaseService.ts

@ -3,7 +3,7 @@ import { SQLiteFS } from "absurd-sql";
import IndexedDBBackend from "absurd-sql/dist/indexeddb-backend"; import IndexedDBBackend from "absurd-sql/dist/indexeddb-backend";
import { runMigrations } from "../db-sql/migration"; import { runMigrations } from "../db-sql/migration";
import type { DatabaseService, QueryExecResult } from "../interfaces/database"; import type { DatabaseService, QueryExecResultRaw } from "../interfaces/database";
import { logger } from "@/utils/logger"; import { logger } from "@/utils/logger";
interface QueuedOperation { interface QueuedOperation {
@ -15,7 +15,7 @@ interface QueuedOperation {
} }
interface AbsurdSqlDatabase { interface AbsurdSqlDatabase {
exec: (sql: string, params?: unknown[]) => Promise<QueryExecResult[]>; exec: (sql: string, params?: unknown[]) => Promise<QueryExecResultRaw[]>;
run: ( run: (
sql: string, sql: string,
params?: unknown[], params?: unknown[],
@ -123,7 +123,7 @@ class AbsurdSqlDatabaseService implements DatabaseService {
if (!operation) continue; if (!operation) continue;
try { try {
let queryResult: QueryExecResult[] = []; let queryResult: QueryExecResultRaw[] = [];
let result: unknown; let result: unknown;
switch (operation.type) { switch (operation.type) {
case "run": case "run":
@ -218,22 +218,9 @@ class AbsurdSqlDatabaseService implements DatabaseService {
} }
// Note that the resulting array may be empty if there are no results from the query // Note that the resulting array may be empty if there are no results from the query
async query(sql: string, params: unknown[] = []): Promise<QueryExecResult[]> { async query(sql: string, params: unknown[] = []): Promise<QueryExecResultRaw[]> {
await this.waitForInitialization(); await this.waitForInitialization();
return this.queueOperation<QueryExecResult[]>("query", sql, params); return this.queueOperation<QueryExecResultRaw[]>("query", sql, params);
}
async getOneRow(
sql: string,
params: unknown[] = [],
): Promise<unknown[] | undefined> {
await this.waitForInitialization();
return this.queueOperation<unknown[] | undefined>("getOneRow", sql, params);
}
async getAll(sql: string, params: unknown[] = []): Promise<unknown[][]> {
await this.waitForInitialization();
return this.queueOperation<unknown[][]>("getAll", sql, params);
} }
} }

19
src/services/PlatformService.ts

@ -1,12 +1,9 @@
import { QueryExecResult } from "@/interfaces/database"; import { QueryExecResultRaw } from "@/interfaces/database";
/** /**
* Query execution result interface * Query execution result interface
*/ */
export interface QueryExecResult<T = unknown> { export type QueryExecResult<T = unknown> = T[];
columns: string[];
values: T[];
}
/** /**
* Represents the result of an image capture or selection operation. * Represents the result of an image capture or selection operation.
@ -110,12 +107,20 @@ export interface PlatformService {
handleDeepLink(url: string): Promise<void>; handleDeepLink(url: string): Promise<void>;
/** /**
* Execute a database query and return the results * Execute a database query and return the well-typed results
* @param sql SQL query to execute
* @param params Query parameters
* @returns Query results with array of values
*/
// dbQuery<T = unknown>(sql: string, params?: unknown[]): Promise<QueryExecResult<T>>;
/**
* Execute a database query and return the raw results
* @param sql SQL query to execute * @param sql SQL query to execute
* @param params Query parameters * @param params Query parameters
* @returns Query results with columns and values * @returns Query results with columns and values
*/ */
dbQuery<T = unknown>(sql: string, params?: unknown[]): Promise<QueryExecResult<T>>; dbQueryRaw(sql: string, params?: unknown[]): Promise<QueryExecResultRaw | undefined>;
/** /**
* Executes a create/update/delete on the database. * Executes a create/update/delete on the database.

6
src/services/migrationService.ts

@ -1,5 +1,5 @@
import { logger } from "@/utils/logger"; import { logger } from "@/utils/logger";
import { QueryExecResult } from "../interfaces/database"; import { QueryExecResultRaw } from "../interfaces/database";
interface Migration { interface Migration {
name: string; name: string;
@ -27,7 +27,7 @@ export class MigrationService {
sqlExec: ( sqlExec: (
sql: string, sql: string,
params?: unknown[], params?: unknown[],
) => Promise<Array<QueryExecResult>>, ) => Promise<Array<QueryExecResultRaw>>,
): Promise<void> { ): Promise<void> {
// Create migrations table if it doesn't exist // Create migrations table if it doesn't exist
await sqlExec(` await sqlExec(`
@ -39,7 +39,7 @@ export class MigrationService {
`); `);
// Get list of executed migrations // Get list of executed migrations
const result: QueryExecResult[] = await sqlExec( const result: QueryExecResultRaw[] = await sqlExec(
"SELECT name FROM migrations;", "SELECT name FROM migrations;",
); );
let executedMigrations: Set<unknown> = new Set(); let executedMigrations: Set<unknown> = new Set();

6
src/services/platforms/CapacitorPlatformService.ts

@ -13,7 +13,7 @@ import {
Changes, Changes,
} from "@capacitor-community/sqlite"; } from "@capacitor-community/sqlite";
import { logger } from "../../utils/logger"; import { logger } from "../../utils/logger";
import { QueryExecResult, SqlValue } from "@/interfaces/database"; import { QueryExecResultRaw, SqlValue } from "@/interfaces/database";
import { DEFAULT_ENDORSER_API_SERVER } from "@/constants/app"; import { DEFAULT_ENDORSER_API_SERVER } from "@/constants/app";
interface Migration { interface Migration {
@ -657,9 +657,9 @@ export class CapacitorPlatformService implements PlatformService {
} }
/** /**
* @see PlatformService.dbQuery * @see PlatformService.dbQueryRaw
*/ */
async dbQuery(sql: string, params?: unknown[]): Promise<QueryExecResult> { async dbQueryRaw(sql: string, params?: unknown[]): Promise<QueryExecResultRaw> {
await this.initializeDatabase(); await this.initializeDatabase();
if (!this.db) { if (!this.db) {
throw new Error("Database not initialized"); throw new Error("Database not initialized");

34
src/services/platforms/ElectronPlatformService.ts

@ -2,11 +2,10 @@ import {
ImageResult, ImageResult,
PlatformService, PlatformService,
PlatformCapabilities, PlatformCapabilities,
QueryExecResult,
} from "../PlatformService"; } from "../PlatformService";
import { logger } from "../../utils/logger"; import { logger } from "../../utils/logger";
import { DEFAULT_ENDORSER_API_SERVER } from "@/constants/app"; import { DEFAULT_ENDORSER_API_SERVER } from "@/constants/app";
import { DatabaseConnectionPool } from "../database/ConnectionPool"; import { QueryExecResultRaw, SqlValue } from "@/interfaces/database";
// Type for the electron window object // Type for the electron window object
declare global { declare global {
@ -57,12 +56,12 @@ export class ElectronPlatformService implements PlatformService {
this.sqliteReadyPromise = new Promise<void>((resolve, reject) => { this.sqliteReadyPromise = new Promise<void>((resolve, reject) => {
if (!window.electron?.ipcRenderer) { if (!window.electron?.ipcRenderer) {
logger.warn('[ElectronPlatformService] IPC renderer not available'); logger.warn('[ElectronPlatformService] IPC renderer not available');
reject(new Error('IPC renderer not available')); reject(new Error('[ElectronPlatformService] IPC renderer not available'));
return; return;
} }
const timeout = setTimeout(() => { const timeout = setTimeout(() => {
reject(new Error('SQLite initialization timeout')); reject(new Error('[ElectronPlatformService] SQLite initialization timeout'));
}, 30000); }, 5000);
window.electron.ipcRenderer.once('sqlite-ready', () => { window.electron.ipcRenderer.once('sqlite-ready', () => {
clearTimeout(timeout); clearTimeout(timeout);
logger.info('[ElectronPlatformService] Received SQLite ready signal'); logger.info('[ElectronPlatformService] Received SQLite ready signal');
@ -74,7 +73,7 @@ export class ElectronPlatformService implements PlatformService {
const status = args[0] as { status: string; error?: string }; const status = args[0] as { status: string; error?: string };
if (status.status === 'error') { if (status.status === 'error') {
this.dbFatalError = true; this.dbFatalError = true;
reject(new Error(status.error || 'Database initialization failed')); reject(new Error(status.error || '[ElectronPlatformService] Database initialization failed'));
} }
}); });
}); });
@ -325,10 +324,21 @@ export class ElectronPlatformService implements PlatformService {
throw new Error("Not implemented"); throw new Error("Not implemented");
} }
/** // /**
* @see PlatformService.dbQuery // * @see PlatformService.dbQueryRaw
*/ // */
async dbQuery<T = unknown>(sql: string, params: unknown[] = []): Promise<QueryExecResult<T>> { // async dbQuery<T = unknown>(sql: string, params: unknown[] = []): Promise<QueryExecResult<T>> {
// await this.initializeDatabase();
// if (this.dbFatalError) throw new Error("Database is in a fatal error state. Please restart the app.");
// const result = await this.sqlite.query({
// database: this.dbName,
// statement: sql,
// values: params
// });
// return (result.values || []) as T[];
// }
async dbQueryRaw(sql: string, params?: unknown[]): Promise<QueryExecResultRaw> {
await this.initializeDatabase(); await this.initializeDatabase();
if (this.dbFatalError) throw new Error("Database is in a fatal error state. Please restart the app."); if (this.dbFatalError) throw new Error("Database is in a fatal error state. Please restart the app.");
const result = await this.sqlite.query({ const result = await this.sqlite.query({
@ -336,10 +346,10 @@ export class ElectronPlatformService implements PlatformService {
statement: sql, statement: sql,
values: params values: params
}); });
const columns = result.values?.[0] ? Object.keys(result.values[0]) : []; const columns = Object.keys(result.values?.[0] || {});
return { return {
columns, columns,
values: (result.values || []).map((row: Record<string, unknown>) => row as T) values: result.values.map((row: Record<string, any>) => columns.map((column) => row[column] as SqlValue))
}; };
} }

4
src/services/platforms/PyWebViewPlatformService.ts

@ -4,7 +4,7 @@ import {
PlatformCapabilities, PlatformCapabilities,
} from "../PlatformService"; } from "../PlatformService";
import { logger } from "../../utils/logger"; import { logger } from "../../utils/logger";
import { QueryExecResult } from "@/interfaces/database"; import { QueryExecResultRaw } from "@/interfaces/database";
/** /**
* Platform service implementation for PyWebView platform. * Platform service implementation for PyWebView platform.
@ -111,7 +111,7 @@ export class PyWebViewPlatformService implements PlatformService {
throw new Error("Not implemented"); throw new Error("Not implemented");
} }
dbQuery(sql: string, params?: unknown[]): Promise<QueryExecResult> { dbQueryRaw(sql: string, params?: unknown[]): Promise<QueryExecResultRaw> {
throw new Error("Not implemented for " + sql + " with params " + params); throw new Error("Not implemented for " + sql + " with params " + params);
} }
dbExec( dbExec(

35
src/services/platforms/WebPlatformService.ts

@ -4,7 +4,7 @@ import {
PlatformCapabilities, PlatformCapabilities,
} from "../PlatformService"; } from "../PlatformService";
import { logger } from "../../utils/logger"; import { logger } from "../../utils/logger";
import { QueryExecResult } from "@/interfaces/database"; import { QueryExecResultRaw } from "@/interfaces/database";
import databaseService from "../AbsurdSqlDatabaseService"; import databaseService from "../AbsurdSqlDatabaseService";
/** /**
@ -362,32 +362,39 @@ export class WebPlatformService implements PlatformService {
throw new Error("File system access not available in web platform"); throw new Error("File system access not available in web platform");
} }
// /**
// * @see PlatformService.dbQuery
// */
// async dbQuery<T = unknown>(sql: string, params: unknown[] = []): Promise<QueryExecResult<T>> {
// const result = await databaseService.query(sql, params);
// const columns = result[0]?.columns || [];
// const values = result[0]?.values || [];
// return values.map((row: SqlValue[]) => {
// const obj: Record<string, SqlValue> = {};
// columns.forEach((column, index) => {
// obj[column] = row[index];
// });
// return obj as T;
// });
// }
/** /**
* @see PlatformService.dbQuery * @see PlatformService.dbQueryRaw
*/ */
dbQuery( async dbQueryRaw(
sql: string, sql: string,
params?: unknown[], params?: unknown[],
): Promise<QueryExecResult | undefined> { ): Promise<QueryExecResultRaw | undefined> {
return databaseService.query(sql, params).then((result) => result[0]); return databaseService.query(sql, params).then((result) => result[0]);
} }
/** /**
* @see PlatformService.dbExec * @see PlatformService.dbExec
*/ */
dbExec( async dbExec(
sql: string, sql: string,
params?: unknown[], params?: unknown[],
): Promise<{ changes: number; lastId?: number }> { ): Promise<{ changes: number; lastId?: number }> {
return databaseService.run(sql, params); return databaseService.run(sql, params);
} }
async dbGetOneRow(
sql: string,
params?: unknown[],
): Promise<unknown[] | undefined> {
return databaseService
.query(sql, params)
.then((result: QueryExecResult[]) => result[0]?.values[0]);
}
} }

2
src/views/AccountViewView.vue

@ -1352,7 +1352,7 @@ export default class AccountViewView extends Vue {
async processIdentity() { async processIdentity() {
let account: Account | undefined = undefined; let account: Account | undefined = undefined;
const platformService = PlatformServiceFactory.getInstance(); const platformService = PlatformServiceFactory.getInstance();
const dbAccount = await platformService.dbQuery( const dbAccount = await platformService.dbQueryRaw(
"SELECT * FROM accounts WHERE did = ?", "SELECT * FROM accounts WHERE did = ?",
[this.activeDid], [this.activeDid],
); );

2
src/views/ClaimCertificateView.vue

@ -91,7 +91,7 @@ export default class ClaimCertificateView extends Vue {
confirmerIds: Array<string>, confirmerIds: Array<string>,
) { ) {
const platformService = PlatformServiceFactory.getInstance(); const platformService = PlatformServiceFactory.getInstance();
const dbAllContacts = await platformService.dbQuery( const dbAllContacts = await platformService.dbQueryRaw(
"SELECT * FROM contacts", "SELECT * FROM contacts",
); );
let allContacts = databaseUtil.mapQueryResultToValues( let allContacts = databaseUtil.mapQueryResultToValues(

2
src/views/ClaimReportCertificateView.vue

@ -73,7 +73,7 @@ export default class ClaimReportCertificateView extends Vue {
claimData: endorserServer.GenericCredWrapper<endorserServer.GenericVerifiableCredential>, claimData: endorserServer.GenericCredWrapper<endorserServer.GenericVerifiableCredential>,
) { ) {
const platformService = PlatformServiceFactory.getInstance(); const platformService = PlatformServiceFactory.getInstance();
const dbAllContacts = await platformService.dbQuery( const dbAllContacts = await platformService.dbQueryRaw(
"SELECT * FROM contacts", "SELECT * FROM contacts",
); );
let allContacts = databaseUtil.mapQueryResultToValues( let allContacts = databaseUtil.mapQueryResultToValues(

2
src/views/ClaimView.vue

@ -623,7 +623,7 @@ export default class ClaimView extends Vue {
this.activeDid = settings.activeDid || ""; this.activeDid = settings.activeDid || "";
this.apiServer = settings.apiServer || ""; this.apiServer = settings.apiServer || "";
const platformService = PlatformServiceFactory.getInstance(); const platformService = PlatformServiceFactory.getInstance();
const dbAllContacts = await platformService.dbQuery( const dbAllContacts = await platformService.dbQueryRaw(
"SELECT * FROM contacts", "SELECT * FROM contacts",
); );
this.allContacts = databaseUtil.mapQueryResultToValues( this.allContacts = databaseUtil.mapQueryResultToValues(

2
src/views/ConfirmGiftView.vue

@ -537,7 +537,7 @@ export default class ConfirmGiftView extends Vue {
this.activeDid = settings.activeDid || ""; this.activeDid = settings.activeDid || "";
this.apiServer = settings.apiServer || ""; this.apiServer = settings.apiServer || "";
const platformService = PlatformServiceFactory.getInstance(); const platformService = PlatformServiceFactory.getInstance();
const dbAllContacts = await platformService.dbQuery( const dbAllContacts = await platformService.dbQueryRaw(
"SELECT * FROM contacts", "SELECT * FROM contacts",
); );
this.allContacts = databaseUtil.mapQueryResultToValues( this.allContacts = databaseUtil.mapQueryResultToValues(

2
src/views/ContactAmountsView.vue

@ -157,7 +157,7 @@ export default class ContactAmountssView extends Vue {
try { try {
const contactDid = this.$route.query["contactDid"] as string; const contactDid = this.$route.query["contactDid"] as string;
const platformService = PlatformServiceFactory.getInstance(); const platformService = PlatformServiceFactory.getInstance();
const dbContact = await platformService.dbQuery( const dbContact = await platformService.dbQueryRaw(
"SELECT * FROM contacts WHERE did = ?", "SELECT * FROM contacts WHERE did = ?",
[contactDid], [contactDid],
); );

2
src/views/ContactEditView.vue

@ -223,7 +223,7 @@ export default class ContactEditView extends Vue {
async created() { async created() {
const contactDid = this.$route.params.did; const contactDid = this.$route.params.did;
const platformService = PlatformServiceFactory.getInstance(); const platformService = PlatformServiceFactory.getInstance();
const dbContact = await platformService.dbQuery( const dbContact = await platformService.dbQueryRaw(
"SELECT * FROM contacts WHERE did = ?", "SELECT * FROM contacts WHERE did = ?",
[contactDid], [contactDid],
); );

2
src/views/ContactGiftingView.vue

@ -108,7 +108,7 @@ export default class ContactGiftingView extends Vue {
this.activeDid = settings.activeDid || ""; this.activeDid = settings.activeDid || "";
const platformService = PlatformServiceFactory.getInstance(); const platformService = PlatformServiceFactory.getInstance();
const dbAllContacts = await platformService.dbQuery( const dbAllContacts = await platformService.dbQueryRaw(
"SELECT * FROM contacts ORDER BY name", "SELECT * FROM contacts ORDER BY name",
); );
this.allContacts = databaseUtil.mapQueryResultToValues( this.allContacts = databaseUtil.mapQueryResultToValues(

2
src/views/ContactImportView.vue

@ -412,7 +412,7 @@ export default class ContactImportView extends Vue {
this.contactsSelected = new Array(this.contactsImporting.length).fill(true); this.contactsSelected = new Array(this.contactsImporting.length).fill(true);
const platformService = PlatformServiceFactory.getInstance(); const platformService = PlatformServiceFactory.getInstance();
const dbAllContacts = await platformService.dbQuery( const dbAllContacts = await platformService.dbQueryRaw(
"SELECT * FROM contacts", "SELECT * FROM contacts",
); );
let baseContacts = databaseUtil.mapQueryResultToValues( let baseContacts = databaseUtil.mapQueryResultToValues(

2
src/views/ContactQRScanFullView.vue

@ -443,7 +443,7 @@ export default class ContactQRScan extends Vue {
// Check if contact already exists // Check if contact already exists
const platformService = PlatformServiceFactory.getInstance(); const platformService = PlatformServiceFactory.getInstance();
const dbAllContacts = await platformService.dbQuery( const dbAllContacts = await platformService.dbQueryRaw(
"SELECT * FROM contacts WHERE did = ?", "SELECT * FROM contacts WHERE did = ?",
[contact.did], [contact.did],
); );

2
src/views/ContactQRScanShowView.vue

@ -770,7 +770,7 @@ export default class ContactQRScanShow extends Vue {
// Check if contact already exists // Check if contact already exists
const platformService = PlatformServiceFactory.getInstance(); const platformService = PlatformServiceFactory.getInstance();
const dbAllContacts = await platformService.dbQuery( const dbAllContacts = await platformService.dbQueryRaw(
"SELECT * FROM contacts WHERE did = ?", "SELECT * FROM contacts WHERE did = ?",
[contact.did], [contact.did],
); );

4
src/views/ContactsView.vue

@ -468,7 +468,7 @@ export default class ContactsView extends Vue {
} }
const platformService = PlatformServiceFactory.getInstance(); const platformService = PlatformServiceFactory.getInstance();
const dbAllContacts = await platformService.dbQuery( const dbAllContacts = await platformService.dbQueryRaw(
"SELECT * FROM contacts ORDER BY name", "SELECT * FROM contacts ORDER BY name",
); );
this.contacts = databaseUtil.mapQueryResultToValues( this.contacts = databaseUtil.mapQueryResultToValues(
@ -846,7 +846,7 @@ export default class ContactsView extends Vue {
} }
const platformService = PlatformServiceFactory.getInstance(); const platformService = PlatformServiceFactory.getInstance();
const dbAllContacts = await platformService.dbQuery( const dbAllContacts = await platformService.dbQueryRaw(
"SELECT * FROM contacts ORDER BY name", "SELECT * FROM contacts ORDER BY name",
); );
this.contacts = databaseUtil.mapQueryResultToValues( this.contacts = databaseUtil.mapQueryResultToValues(

2
src/views/DIDView.vue

@ -376,7 +376,7 @@ export default class DIDView extends Vue {
if (!this.viewingDid) return; if (!this.viewingDid) return;
const platformService = PlatformServiceFactory.getInstance(); const platformService = PlatformServiceFactory.getInstance();
const dbContacts = await platformService.dbQuery( const dbContacts = await platformService.dbQueryRaw(
"SELECT * FROM contacts WHERE did = ?", "SELECT * FROM contacts WHERE did = ?",
[this.viewingDid], [this.viewingDid],
); );

2
src/views/DiscoverView.vue

@ -407,7 +407,7 @@ export default class DiscoverView extends Vue {
this.searchBox = settings.searchBoxes?.[0] || null; this.searchBox = settings.searchBoxes?.[0] || null;
const platformService = PlatformServiceFactory.getInstance(); const platformService = PlatformServiceFactory.getInstance();
const dbContacts = await platformService.dbQuery("SELECT * FROM contacts"); const dbContacts = await platformService.dbQueryRaw("SELECT * FROM contacts");
this.allContacts = databaseUtil.mapQueryResultToValues(dbContacts) as unknown as Contact[]; this.allContacts = databaseUtil.mapQueryResultToValues(dbContacts) as unknown as Contact[];
if (USE_DEXIE_DB) { if (USE_DEXIE_DB) {
this.allContacts = await db.contacts.toArray(); this.allContacts = await db.contacts.toArray();

2
src/views/GiftedDetailsView.vue

@ -440,7 +440,7 @@ export default class GiftedDetails extends Vue {
(this.recipientDid && !this.recipientName) (this.recipientDid && !this.recipientName)
) { ) {
const platformService = PlatformServiceFactory.getInstance(); const platformService = PlatformServiceFactory.getInstance();
const dbContacts = await platformService.dbQuery( const dbContacts = await platformService.dbQueryRaw(
"SELECT * FROM contacts", "SELECT * FROM contacts",
); );
let allContacts = databaseUtil.mapQueryResultToValues( let allContacts = databaseUtil.mapQueryResultToValues(

4
src/views/HomeView.vue

@ -530,7 +530,7 @@ export default class HomeView extends Vue {
this.apiServer = settings.apiServer || ""; this.apiServer = settings.apiServer || "";
this.activeDid = settings.activeDid || ""; this.activeDid = settings.activeDid || "";
const platformService = PlatformServiceFactory.getInstance(); const platformService = PlatformServiceFactory.getInstance();
const dbContacts = await platformService.dbQuery( const dbContacts = await platformService.dbQueryRaw(
"SELECT * FROM contacts", "SELECT * FROM contacts",
); );
this.allContacts = databaseUtil.mapQueryResultToValues( this.allContacts = databaseUtil.mapQueryResultToValues(
@ -666,7 +666,7 @@ export default class HomeView extends Vue {
*/ */
private async loadContacts() { private async loadContacts() {
const platformService = PlatformServiceFactory.getInstance(); const platformService = PlatformServiceFactory.getInstance();
const dbContacts = await platformService.dbQuery("SELECT * FROM contacts"); const dbContacts = await platformService.dbQueryRaw("SELECT * FROM contacts");
this.allContacts = databaseUtil.mapQueryResultToValues( this.allContacts = databaseUtil.mapQueryResultToValues(
dbContacts, dbContacts,
) as unknown as Contact[]; ) as unknown as Contact[];

2
src/views/ImportDerivedAccountView.vue

@ -129,7 +129,7 @@ export default class ImportAccountView extends Vue {
[]; [];
const platformService = PlatformServiceFactory.getInstance(); const platformService = PlatformServiceFactory.getInstance();
const qmarks = selectedArray.map(() => "?").join(","); const qmarks = selectedArray.map(() => "?").join(",");
const queryResult = await platformService.dbQuery( const queryResult = await platformService.dbQueryRaw(
`SELECT * FROM accounts WHERE did IN (${qmarks})`, `SELECT * FROM accounts WHERE did IN (${qmarks})`,
selectedArray, selectedArray,
); );

2
src/views/InviteOneView.vue

@ -193,7 +193,7 @@ export default class InviteOneView extends Vue {
this.invites = response.data.data; this.invites = response.data.data;
const platformService = PlatformServiceFactory.getInstance(); const platformService = PlatformServiceFactory.getInstance();
const queryResult = await platformService.dbQuery( const queryResult = await platformService.dbQueryRaw(
"SELECT * FROM contacts", "SELECT * FROM contacts",
); );
let baseContacts = databaseUtil.mapQueryResultToValues( let baseContacts = databaseUtil.mapQueryResultToValues(

2
src/views/LogView.vue

@ -81,7 +81,7 @@ export default class LogView extends Vue {
let allLogs: Log[] = []; let allLogs: Log[] = [];
const platformService = PlatformServiceFactory.getInstance(); const platformService = PlatformServiceFactory.getInstance();
const queryResult = await platformService.dbQuery( const queryResult = await platformService.dbQueryRaw(
"SELECT * FROM logs ORDER BY date DESC", "SELECT * FROM logs ORDER BY date DESC",
); );
this.logs = databaseUtil.mapQueryResultToValues( this.logs = databaseUtil.mapQueryResultToValues(

2
src/views/NewActivityView.vue

@ -208,7 +208,7 @@ export default class NewActivityView extends Vue {
settings.lastAckedOfferToUserProjectsJwtId || ""; settings.lastAckedOfferToUserProjectsJwtId || "";
const platformService = PlatformServiceFactory.getInstance(); const platformService = PlatformServiceFactory.getInstance();
const queryResult = await platformService.dbQuery( const queryResult = await platformService.dbQueryRaw(
"SELECT * FROM contacts", "SELECT * FROM contacts",
); );
this.allContacts = databaseUtil.mapQueryResultToValues( this.allContacts = databaseUtil.mapQueryResultToValues(

2
src/views/OfferDetailsView.vue

@ -418,7 +418,7 @@ export default class OfferDetailsView extends Vue {
if (this.recipientDid && !this.recipientName) { if (this.recipientDid && !this.recipientName) {
let allContacts: Contact[] = []; let allContacts: Contact[] = [];
const platformService = PlatformServiceFactory.getInstance(); const platformService = PlatformServiceFactory.getInstance();
const queryResult = await platformService.dbQuery( const queryResult = await platformService.dbQueryRaw(
"SELECT * FROM contacts", "SELECT * FROM contacts",
); );
allContacts = databaseUtil.mapQueryResultToValues( allContacts = databaseUtil.mapQueryResultToValues(

2
src/views/ProjectViewView.vue

@ -787,7 +787,7 @@ export default class ProjectViewView extends Vue {
this.activeDid = settings.activeDid || ""; this.activeDid = settings.activeDid || "";
this.apiServer = settings.apiServer || ""; this.apiServer = settings.apiServer || "";
const platformService = PlatformServiceFactory.getInstance(); const platformService = PlatformServiceFactory.getInstance();
const queryResult = await platformService.dbQuery("SELECT * FROM contacts"); const queryResult = await platformService.dbQueryRaw("SELECT * FROM contacts");
this.allContacts = databaseUtil.mapQueryResultToValues( this.allContacts = databaseUtil.mapQueryResultToValues(
queryResult, queryResult,
) as unknown as Contact[]; ) as unknown as Contact[];

2
src/views/ProjectsView.vue

@ -336,7 +336,7 @@ export default class ProjectsView extends Vue {
this.givenName = settings.firstName || ""; this.givenName = settings.firstName || "";
const platformService = PlatformServiceFactory.getInstance(); const platformService = PlatformServiceFactory.getInstance();
const queryResult = await platformService.dbQuery( const queryResult = await platformService.dbQueryRaw(
"SELECT * FROM contacts", "SELECT * FROM contacts",
); );
this.allContacts = databaseUtil.mapQueryResultToValues( this.allContacts = databaseUtil.mapQueryResultToValues(

4
src/views/QuickActionBvcEndView.vue

@ -201,7 +201,7 @@ export default class QuickActionBvcBeginView extends Vue {
this.activeDid = settings.activeDid || ""; this.activeDid = settings.activeDid || "";
const platformService = PlatformServiceFactory.getInstance(); const platformService = PlatformServiceFactory.getInstance();
const contactQueryResult = await platformService.dbQuery( const contactQueryResult = await platformService.dbQueryRaw(
"SELECT * FROM contacts", "SELECT * FROM contacts",
); );
this.allContacts = databaseUtil.mapQueryResultToValues( this.allContacts = databaseUtil.mapQueryResultToValues(
@ -229,7 +229,7 @@ export default class QuickActionBvcBeginView extends Vue {
suppressMilliseconds: true, suppressMilliseconds: true,
}) || ""; }) || "";
const queryResult = await platformService.dbQuery( const queryResult = await platformService.dbQueryRaw(
"SELECT did FROM accounts", "SELECT did FROM accounts",
); );
this.allMyDids = this.allMyDids =

2
src/views/RecentOffersToUserProjectsView.vue

@ -128,7 +128,7 @@ export default class RecentOffersToUserView extends Vue {
settings.lastAckedOfferToUserProjectsJwtId || ""; settings.lastAckedOfferToUserProjectsJwtId || "";
const contactQueryResult = const contactQueryResult =
await PlatformServiceFactory.getInstance().dbQuery( await PlatformServiceFactory.getInstance().dbQueryRaw(
"SELECT * FROM contacts", "SELECT * FROM contacts",
); );
this.allContacts = databaseUtil.mapQueryResultToValues( this.allContacts = databaseUtil.mapQueryResultToValues(

2
src/views/RecentOffersToUserView.vue

@ -119,7 +119,7 @@ export default class RecentOffersToUserView extends Vue {
this.lastAckedOfferToUserJwtId = settings.lastAckedOfferToUserJwtId || ""; this.lastAckedOfferToUserJwtId = settings.lastAckedOfferToUserJwtId || "";
const contactQueryResult = const contactQueryResult =
await PlatformServiceFactory.getInstance().dbQuery( await PlatformServiceFactory.getInstance().dbQueryRaw(
"SELECT * FROM contacts", "SELECT * FROM contacts",
); );
this.allContacts = databaseUtil.mapQueryResultToValues( this.allContacts = databaseUtil.mapQueryResultToValues(

2
src/views/ShareMyContactInfoView.vue

@ -78,7 +78,7 @@ export default class ShareMyContactInfoView extends Vue {
const account = await retrieveFullyDecryptedAccount(activeDid); const account = await retrieveFullyDecryptedAccount(activeDid);
const platformService = PlatformServiceFactory.getInstance(); const platformService = PlatformServiceFactory.getInstance();
const contactQueryResult = await platformService.dbQuery( const contactQueryResult = await platformService.dbQueryRaw(
"SELECT COUNT(*) FROM contacts", "SELECT COUNT(*) FROM contacts",
); );
let numContacts = let numContacts =

2
src/views/SharedPhotoView.vue

@ -111,7 +111,7 @@ export default class SharedPhotoView extends Vue {
this.activeDid = settings.activeDid; this.activeDid = settings.activeDid;
const platformService = PlatformServiceFactory.getInstance(); const platformService = PlatformServiceFactory.getInstance();
const tempQuery = await platformService.dbQuery( const tempQuery = await platformService.dbQueryRaw(
"SELECT * FROM temp WHERE id = ?", "SELECT * FROM temp WHERE id = ?",
[SHARED_PHOTO_BASE64_KEY], [SHARED_PHOTO_BASE64_KEY],
); );

4
src/views/TestView.vue

@ -425,7 +425,7 @@ export default class Help extends Vue {
this.fileName = (file as File).name; this.fileName = (file as File).name;
const platformService = PlatformServiceFactory.getInstance(); const platformService = PlatformServiceFactory.getInstance();
const tempQuery = await platformService.dbQuery( const tempQuery = await platformService.dbQueryRaw(
"SELECT * FROM temp WHERE id = ?", "SELECT * FROM temp WHERE id = ?",
[SHARED_PHOTO_BASE64_KEY], [SHARED_PHOTO_BASE64_KEY],
); );
@ -602,7 +602,7 @@ export default class Help extends Vue {
try { try {
const isSelect = this.sqlQuery.trim().toLowerCase().startsWith("select"); const isSelect = this.sqlQuery.trim().toLowerCase().startsWith("select");
if (isSelect) { if (isSelect) {
this.sqlResult = await platformService.dbQuery(this.sqlQuery); this.sqlResult = await platformService.dbQueryRaw(this.sqlQuery);
} else { } else {
this.sqlResult = await platformService.dbExec(this.sqlQuery); this.sqlResult = await platformService.dbExec(this.sqlQuery);
} }

4
src/views/UserProfileView.vue

@ -140,7 +140,7 @@ export default class UserProfileView extends Vue {
async mounted() { async mounted() {
const platformService = PlatformServiceFactory.getInstance(); const platformService = PlatformServiceFactory.getInstance();
const settingsQuery = await platformService.dbQuery( const settingsQuery = await platformService.dbQueryRaw(
"SELECT * FROM settings", "SELECT * FROM settings",
); );
let settings = databaseUtil.mapQueryResultToValues( let settings = databaseUtil.mapQueryResultToValues(
@ -153,7 +153,7 @@ export default class UserProfileView extends Vue {
this.partnerApiServer = this.partnerApiServer =
settings[0]?.partnerApiServer || this.partnerApiServer; settings[0]?.partnerApiServer || this.partnerApiServer;
const contactQuery = await platformService.dbQuery( const contactQuery = await platformService.dbQueryRaw(
"SELECT * FROM contacts", "SELECT * FROM contacts",
); );
this.allContacts = databaseUtil.mapQueryResultToValues( this.allContacts = databaseUtil.mapQueryResultToValues(

3
tsconfig.node.json

@ -5,8 +5,7 @@
"module": "ESNext", "module": "ESNext",
"moduleResolution": "bundler", "moduleResolution": "bundler",
"allowSyntheticDefaultImports": true, "allowSyntheticDefaultImports": true,
"allowImportingTsExtensions": true, "allowImportingTsExtensions": true
"noEmit": true
}, },
"include": ["vite.config.*"] "include": ["vite.config.*"]
} }
Loading…
Cancel
Save