Skip to content

Commit 45b023e

Browse files
committed
refactor: improve code readability by formatting multi-line queries and string handling
1 parent feca957 commit 45b023e

File tree

9 files changed

+41
-27
lines changed

9 files changed

+41
-27
lines changed

src/components/charts/tooltipPlugin.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,8 @@ export function tooltipPlugin(xLabels: string[]): uPlot.Plugin {
5757
typeof s.stroke === "function"
5858
? (s.stroke as (self: uPlot, seriesIdx: number) => string)(u, i)
5959
: s.stroke;
60-
const safeLabel = escapeHtml(s.label ?? "");
61-
const safeColor = escapeHtml(String(color ?? ""));
60+
const safeLabel = typeof s.label === "string" ? escapeHtml(s.label) : "";
61+
const safeColor = typeof color === "string" ? escapeHtml(color) : "";
6262
html += `<div class="uplot-tooltip-row">
6363
<span class="uplot-tooltip-dot" style="background:${safeColor}"></span>
6464
<span class="uplot-tooltip-label">${safeLabel}</span>

src/components/layout/Sidebar.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -391,7 +391,9 @@ export default function Sidebar({ isExplorerOpen, onToggleExplorer }: SidebarPro
391391
setTheme(newTheme);
392392
const profileId = useDuckStore.getState().currentProfileId;
393393
if (profileId) {
394-
setSetting(profileId, "theme", "mode", JSON.stringify(newTheme)).catch(() => {});
394+
setSetting(profileId, "theme", "mode", JSON.stringify(newTheme)).catch(
395+
() => {}
396+
);
395397
}
396398
}}
397399
>

src/services/duckdb/schemaFetcher.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,9 @@ export const fetchWasmDatabases = async (
2020
// eslint-disable-next-line @typescript-eslint/no-explicit-any
2121
tablesResult.toArray().map(async (tbl: any) => {
2222
const tableName = tbl.table_name.toString();
23-
const columnsResult = await connection.query(`DESCRIBE ${sqlEscapeIdentifier(dbName)}.${sqlEscapeIdentifier(tableName)}`);
23+
const columnsResult = await connection.query(
24+
`DESCRIBE ${sqlEscapeIdentifier(dbName)}.${sqlEscapeIdentifier(tableName)}`
25+
);
2426
// eslint-disable-next-line @typescript-eslint/no-explicit-any
2527
const columns: ColumnInfo[] = columnsResult.toArray().map((col: any) => ({
2628
name: col.column_name.toString(),

src/services/duckdb/wasmConnection.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,9 @@ export const loadEmbeddedDatabases = async (
194194

195195
// Attach the database (derive alias from filename without extension)
196196
const dbAlias = fileName.replace(/\.db$/i, "").replace(/[^a-zA-Z0-9_]/g, "_");
197-
await connection.query(`ATTACH DATABASE '${sqlEscapeString(fileName)}' AS ${sqlEscapeIdentifier(dbAlias)}`);
197+
await connection.query(
198+
`ATTACH DATABASE '${sqlEscapeString(fileName)}' AS ${sqlEscapeIdentifier(dbAlias)}`
199+
);
198200

199201
console.info(`Successfully loaded embedded database: ${dbConfig.name} as ${dbAlias}`);
200202
} catch (error) {

src/services/persistence/crypto.ts

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ const PBKDF2_ITERATIONS = 100_000;
1919
// ─── Base64 helpers (avoids stack overflow with large arrays) ────────────────
2020

2121
function uint8ArrayToBase64(bytes: Uint8Array): string {
22-
let binary = '';
22+
let binary = "";
2323
for (let i = 0; i < bytes.length; i++) {
2424
binary += String.fromCharCode(bytes[i]);
2525
}
@@ -96,10 +96,12 @@ export async function loadKeyForProfile(
9696
resolve(null);
9797
return;
9898
}
99-
importKey(record.key).then((key) => {
100-
const salt = record.salt ? new Uint8Array(record.salt) : undefined;
101-
resolve({ key, salt });
102-
}).catch(reject);
99+
importKey(record.key)
100+
.then((key) => {
101+
const salt = record.salt ? new Uint8Array(record.salt) : undefined;
102+
resolve({ key, salt });
103+
})
104+
.catch(reject);
103105
};
104106
tx.onerror = () => {
105107
db.close();
@@ -206,8 +208,11 @@ export async function exportKey(key: CryptoKey): Promise<string> {
206208

207209
export async function importKey(exported: string): Promise<CryptoKey> {
208210
const raw = base64ToUint8Array(exported);
209-
return crypto.subtle.importKey("raw", raw, { name: ALGORITHM, length: KEY_LENGTH }, true, [
210-
"encrypt",
211-
"decrypt",
212-
]);
211+
return crypto.subtle.importKey(
212+
"raw",
213+
raw.buffer as ArrayBuffer,
214+
{ name: ALGORITHM, length: KEY_LENGTH },
215+
true,
216+
["encrypt", "decrypt"]
217+
);
213218
}

src/services/persistence/repositories/profileRepository.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,9 @@ export async function updateLastActive(id: string): Promise<void> {
156156
const now = new Date().toISOString();
157157
if (isUsingOpfs()) {
158158
const conn = getSystemConnection();
159-
await conn.query(`UPDATE profiles SET last_active = ${sqlQuote(now)} WHERE id = ${sqlQuote(id)}`);
159+
await conn.query(
160+
`UPDATE profiles SET last_active = ${sqlQuote(now)} WHERE id = ${sqlQuote(id)}`
161+
);
160162
} else {
161163
const existing = (await fallbackGet("profiles", id)) as Profile | null;
162164
if (existing) {

src/services/persistence/repositories/savedQueryRepository.ts

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -86,20 +86,19 @@ export async function updateSavedQuery(
8686
const conn = getSystemConnection();
8787
const setClauses: string[] = [`updated_at = ${sqlQuote(now)}`];
8888
if (updates.name !== undefined) setClauses.push(`name = ${sqlQuote(updates.name)}`);
89-
if (updates.sql_text !== undefined)
90-
setClauses.push(`sql_text = ${sqlQuote(updates.sql_text)}`);
89+
if (updates.sql_text !== undefined) setClauses.push(`sql_text = ${sqlQuote(updates.sql_text)}`);
9190
if (updates.description !== undefined)
9291
setClauses.push(
9392
updates.description
9493
? `description = ${sqlQuote(updates.description)}`
9594
: `description = NULL`
9695
);
9796
if (updates.tags !== undefined)
98-
setClauses.push(
99-
updates.tags ? `tags = ${sqlQuote(updates.tags)}` : `tags = NULL`
100-
);
97+
setClauses.push(updates.tags ? `tags = ${sqlQuote(updates.tags)}` : `tags = NULL`);
10198
if (updates.folder !== undefined) setClauses.push(`folder = ${sqlQuote(updates.folder)}`);
102-
await conn.query(`UPDATE saved_queries SET ${setClauses.join(", ")} WHERE id = ${sqlQuote(id)}`);
99+
await conn.query(
100+
`UPDATE saved_queries SET ${setClauses.join(", ")} WHERE id = ${sqlQuote(id)}`
101+
);
103102
} else {
104103
const existing = (await fallbackGet("saved_queries", id)) as SavedQuery | null;
105104
if (existing) {

src/store/index.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,7 @@ export * from "./types";
2222
// Re-export cloud storage types for use in components
2323
export type { CloudConnection, CloudSupportStatus } from "@/lib/cloudStorage";
2424

25-
const storeCreator = (
26-
...a: Parameters<StateCreator<DuckStoreState>>
27-
) => ({
25+
const storeCreator: StateCreator<DuckStoreState, [["zustand/devtools", never]]> = (...a) => ({
2826
...createDuckdbSlice(...a),
2927
...createConnectionSlice(...a),
3028
...createQuerySlice(...a),
@@ -36,7 +34,7 @@ const storeCreator = (
3634
});
3735

3836
export const useDuckStore = create<DuckStoreState>()(
39-
import.meta.env.DEV ? devtools(storeCreator) : storeCreator
37+
devtools(storeCreator, { enabled: import.meta.env.DEV })
4038
);
4139

4240
// ─── Auto-save: debounced writes to system DB ────────────────────────────────

src/store/slices/schemaSlice.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,9 @@ export const createSchemaSlice: StateCreator<
100100
}
101101
const wasmConnection = validateConnection(connection);
102102
set({ isLoading: true });
103-
await wasmConnection.query(`DROP TABLE IF EXISTS ${sqlEscapeIdentifier(database)}.${sqlEscapeIdentifier(tableName)}`);
103+
await wasmConnection.query(
104+
`DROP TABLE IF EXISTS ${sqlEscapeIdentifier(database)}.${sqlEscapeIdentifier(tableName)}`
105+
);
104106
await get().fetchDatabasesAndTablesInfo();
105107
set({ isLoading: false });
106108
} catch (error) {
@@ -139,7 +141,9 @@ export const createSchemaSlice: StateCreator<
139141
await db.registerFileBuffer(fileName, buffer);
140142
// Handle DuckDB database files (.duckdb, .db, .ddb)
141143
if (fileType === "duckdb" || fileType === "db" || fileType === "ddb") {
142-
await connection.query(`ATTACH DATABASE '${sqlEscapeString(fileName)}' AS ${sqlEscapeIdentifier(tableName)}`);
144+
await connection.query(
145+
`ATTACH DATABASE '${sqlEscapeString(fileName)}' AS ${sqlEscapeIdentifier(tableName)}`
146+
);
143147
await get().fetchDatabasesAndTablesInfo();
144148
return;
145149
}

0 commit comments

Comments
 (0)