summaryrefslogtreecommitdiff
path: root/packages/db/src
diff options
context:
space:
mode:
Diffstat (limited to 'packages/db/src')
-rw-r--r--packages/db/src/core/cli/commands/execute/index.ts8
-rw-r--r--packages/db/src/core/cli/migration-queries.ts5
-rw-r--r--packages/db/src/core/integration/index.ts5
-rw-r--r--packages/db/src/runtime/utils.ts4
-rw-r--r--packages/db/src/runtime/virtual.ts5
5 files changed, 12 insertions, 15 deletions
diff --git a/packages/db/src/core/cli/commands/execute/index.ts b/packages/db/src/core/cli/commands/execute/index.ts
index 9a5a1b8e2..66ecdd774 100644
--- a/packages/db/src/core/cli/commands/execute/index.ts
+++ b/packages/db/src/core/cli/commands/execute/index.ts
@@ -1,5 +1,4 @@
import { existsSync } from 'node:fs';
-import { LibsqlError } from '@libsql/client';
import type { AstroConfig } from 'astro';
import { green } from 'kleur/colors';
import type { Arguments } from 'yargs-parser';
@@ -16,6 +15,7 @@ import {
import { bundleFile, importBundledFile } from '../../../load-file.js';
import type { DBConfig } from '../../../types.js';
import { getManagedRemoteToken } from '../../../utils.js';
+import { isDbError } from '../../../../runtime/utils.js';
export async function cmd({
astroConfig,
@@ -64,9 +64,7 @@ export async function cmd({
await mod.default();
console.info(`${green('✔')} File run successfully.`);
} catch (e) {
- if (e instanceof LibsqlError) {
- throw new Error(EXEC_ERROR(e.message));
- }
- throw e;
+ if (isDbError(e)) throw new Error(EXEC_ERROR(e.message));
+ else throw e;
}
}
diff --git a/packages/db/src/core/cli/migration-queries.ts b/packages/db/src/core/cli/migration-queries.ts
index bd6360665..db3972d09 100644
--- a/packages/db/src/core/cli/migration-queries.ts
+++ b/packages/db/src/core/cli/migration-queries.ts
@@ -1,5 +1,4 @@
import { stripVTControlCharacters } from 'node:util';
-import { LibsqlError } from '@libsql/client';
import deepDiff from 'deep-diff';
import { sql } from 'drizzle-orm';
import { SQLiteAsyncDialect } from 'drizzle-orm/sqlite-core';
@@ -8,7 +7,7 @@ import { customAlphabet } from 'nanoid';
import { hasPrimaryKey } from '../../runtime/index.js';
import { createRemoteDatabaseClient } from '../../runtime/index.js';
import { isSerializedSQL } from '../../runtime/types.js';
-import { safeFetch } from '../../runtime/utils.js';
+import { isDbError, safeFetch } from '../../runtime/utils.js';
import { MIGRATION_VERSION } from '../consts.js';
import { RENAME_COLUMN_ERROR, RENAME_TABLE_ERROR } from '../errors.js';
import {
@@ -454,7 +453,7 @@ async function getDbCurrentSnapshot(
} catch (error) {
// Don't handle errors that are not from libSQL
if (
- error instanceof LibsqlError &&
+ isDbError(error) &&
// If the schema was never pushed to the database yet the table won't exist.
// Treat a missing snapshot table as an empty table.
diff --git a/packages/db/src/core/integration/index.ts b/packages/db/src/core/integration/index.ts
index 200c7ddc2..51d3f8011 100644
--- a/packages/db/src/core/integration/index.ts
+++ b/packages/db/src/core/integration/index.ts
@@ -3,7 +3,6 @@ import { mkdir, writeFile } from 'node:fs/promises';
import { dirname } from 'node:path';
import { fileURLToPath } from 'node:url';
import type { ManagedAppToken } from '@astrojs/studio';
-import { LibsqlError } from '@libsql/client';
import type { AstroIntegration } from 'astro';
import { blue, yellow } from 'kleur/colors';
import {
@@ -15,7 +14,7 @@ import {
mergeConfig,
} from 'vite';
import parseArgs from 'yargs-parser';
-import { AstroDbError } from '../../runtime/utils.js';
+import { AstroDbError, isDbError } from '../../runtime/utils.js';
import { CONFIG_FILE_NAMES, DB_PATH, VIRTUAL_MODULE_ID } from '../consts.js';
import { EXEC_DEFAULT_EXPORT_ERROR, EXEC_ERROR } from '../errors.js';
import { resolveDbConfig } from '../load-file.js';
@@ -206,7 +205,7 @@ async function executeSeedFile({
try {
await mod.default();
} catch (e) {
- if (e instanceof LibsqlError) {
+ if (isDbError(e)) {
throw new AstroDbError(EXEC_ERROR(e.message));
}
throw e;
diff --git a/packages/db/src/runtime/utils.ts b/packages/db/src/runtime/utils.ts
index 64301c39e..74201957f 100644
--- a/packages/db/src/runtime/utils.ts
+++ b/packages/db/src/runtime/utils.ts
@@ -42,6 +42,10 @@ export class DetailedLibsqlError extends LibsqlError {
}
}
+export function isDbError(err: unknown): err is LibsqlError {
+ return err instanceof LibsqlError || (err instanceof Error && (err as any).libsqlError === true)
+}
+
function slash(path: string) {
const isExtendedLengthPath = path.startsWith('\\\\?\\');
diff --git a/packages/db/src/runtime/virtual.ts b/packages/db/src/runtime/virtual.ts
index 6f008fe0d..3da0c3549 100644
--- a/packages/db/src/runtime/virtual.ts
+++ b/packages/db/src/runtime/virtual.ts
@@ -21,10 +21,6 @@ function createColumn<S extends string, T extends Record<string, unknown>>(type:
};
}
-export function isDbError(err: unknown): err is LibsqlError {
- return err instanceof LibsqlError;
-}
-
export const column = {
number: <T extends NumberColumnOpts>(opts: T = {} as T) => {
return createColumn('number', opts) satisfies { type: 'number' };
@@ -90,3 +86,4 @@ export {
} from 'drizzle-orm';
export { alias } from 'drizzle-orm/sqlite-core';
+export { isDbError } from './utils.js';