Files
dbx/apps/desktop/src/lib/databaseFileDetection.ts
T

19 lines
828 B
TypeScript

import * as api from "@/lib/api";
export const SQLITE_DATABASE_FILE_EXTENSIONS = ["db", "db3", "sqlite", "sqlite3", "sqlitedb"];
const SQLITE_DATABASE_EXTENSION_SET = new Set(SQLITE_DATABASE_FILE_EXTENSIONS.map((extension) => `.${extension}`));
export function databaseTypeFromKnownExtension(path: string): "sqlite" | "duckdb" | null {
const lower = path.toLowerCase();
if (lower.endsWith(".duckdb")) return "duckdb";
if ([...SQLITE_DATABASE_EXTENSION_SET].some((extension) => lower.endsWith(extension))) return "sqlite";
return null;
}
export async function detectDatabaseFileType(path: string): Promise<"sqlite" | "duckdb" | null> {
const knownType = databaseTypeFromKnownExtension(path);
if (knownType) return knownType;
return (await api.isSqliteDatabaseFile(path).catch(() => false)) ? "sqlite" : null;
}