summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Matthew Phillips <matthew@skypack.dev> 2024-03-27 09:04:39 -0400
committerGravatar GitHub <noreply@github.com> 2024-03-27 09:04:39 -0400
commit764d67fc3f399d62b6a97a2ee698dca03b9f0557 (patch)
tree89fe3a3e9ddff899a0f9c9adef04458d87a71cb0
parentbb7707e1715fc3f496e4c3f07834221c8da62ff6 (diff)
downloadastro-764d67fc3f399d62b6a97a2ee698dca03b9f0557.tar.gz
astro-764d67fc3f399d62b6a97a2ee698dca03b9f0557.tar.zst
astro-764d67fc3f399d62b6a97a2ee698dca03b9f0557.zip
Prevent importing db core from db runtime (#10568)
* Prevent importing db core from db runtime * Move runtime errors into runtime * Add changeset
-rw-r--r--.changeset/sixty-eels-camp.md5
-rw-r--r--.eslintrc.cjs18
-rw-r--r--packages/db/src/core/errors.ts32
-rw-r--r--packages/db/src/runtime/errors.ts33
-rw-r--r--packages/db/src/runtime/queries.ts2
-rw-r--r--packages/db/src/runtime/seed-local.ts2
6 files changed, 58 insertions, 34 deletions
diff --git a/.changeset/sixty-eels-camp.md b/.changeset/sixty-eels-camp.md
new file mode 100644
index 000000000..7fbd0d961
--- /dev/null
+++ b/.changeset/sixty-eels-camp.md
@@ -0,0 +1,5 @@
+---
+"@astrojs/db": patch
+---
+
+Prevent runtime from importing core code
diff --git a/.eslintrc.cjs b/.eslintrc.cjs
index 552033711..f3401b2d2 100644
--- a/.eslintrc.cjs
+++ b/.eslintrc.cjs
@@ -136,5 +136,23 @@ module.exports = {
'arrow-body-style': ['error', 'never'],
},
},
+
+ {
+ files: ['packages/db/src/runtime/**/*.ts'],
+ rules: {
+ 'no-restricted-imports': 'off',
+ '@typescript-eslint/no-restricted-imports': [
+ 'error',
+ {
+ patterns: [
+ {
+ group: ['../core/*'],
+ allowTypeImports: true,
+ }
+ ]
+ }
+ ]
+ }
+ }
],
};
diff --git a/packages/db/src/core/errors.ts b/packages/db/src/core/errors.ts
index 198c86b78..64ff271d8 100644
--- a/packages/db/src/core/errors.ts
+++ b/packages/db/src/core/errors.ts
@@ -37,46 +37,14 @@ export const SHELL_QUERY_MISSING_ERROR = `${red(
'▶ Please provide a query to execute using the --query flag.'
)}\n`;
-export const SEED_ERROR = (error: string) => {
- return `${red(`Error while seeding database:`)}\n\n${error}`;
-};
-
export const EXEC_ERROR = (error: string) => {
return `${red(`Error while executing file:`)}\n\n${error}`;
};
-export const SEED_DEFAULT_EXPORT_ERROR = (fileName: string) => {
- return SEED_ERROR(`Missing default function export in ${bold(fileName)}`);
-};
-
export const EXEC_DEFAULT_EXPORT_ERROR = (fileName: string) => {
return EXEC_ERROR(`Missing default function export in ${bold(fileName)}`);
};
-export const REFERENCE_DNE_ERROR = (columnName: string) => {
- return `Column ${bold(
- columnName
- )} references a table that does not exist. Did you apply the referenced table to the \`tables\` object in your db config?`;
-};
-
-export const FOREIGN_KEY_DNE_ERROR = (tableName: string) => {
- return `Table ${bold(
- tableName
- )} references a table that does not exist. Did you apply the referenced table to the \`tables\` object in your db config?`;
-};
-
-export const FOREIGN_KEY_REFERENCES_LENGTH_ERROR = (tableName: string) => {
- return `Foreign key on ${bold(
- tableName
- )} is misconfigured. \`columns\` and \`references\` must be the same length.`;
-};
-
-export const FOREIGN_KEY_REFERENCES_EMPTY_ERROR = (tableName: string) => {
- return `Foreign key on ${bold(
- tableName
- )} is misconfigured. \`references\` array cannot be empty.`;
-};
-
export const INTEGRATION_TABLE_CONFLICT_ERROR = (
integrationName: string,
tableName: string,
diff --git a/packages/db/src/runtime/errors.ts b/packages/db/src/runtime/errors.ts
new file mode 100644
index 000000000..2026e57e9
--- /dev/null
+++ b/packages/db/src/runtime/errors.ts
@@ -0,0 +1,33 @@
+import { bold, red } from 'kleur/colors';
+
+export const FOREIGN_KEY_DNE_ERROR = (tableName: string) => {
+ return `Table ${bold(
+ tableName
+ )} references a table that does not exist. Did you apply the referenced table to the \`tables\` object in your db config?`;
+};
+
+export const FOREIGN_KEY_REFERENCES_LENGTH_ERROR = (tableName: string) => {
+ return `Foreign key on ${bold(
+ tableName
+ )} is misconfigured. \`columns\` and \`references\` must be the same length.`;
+};
+
+export const FOREIGN_KEY_REFERENCES_EMPTY_ERROR = (tableName: string) => {
+ return `Foreign key on ${bold(
+ tableName
+ )} is misconfigured. \`references\` array cannot be empty.`;
+};
+
+export const REFERENCE_DNE_ERROR = (columnName: string) => {
+ return `Column ${bold(
+ columnName
+ )} references a table that does not exist. Did you apply the referenced table to the \`tables\` object in your db config?`;
+};
+
+export const SEED_ERROR = (error: string) => {
+ return `${red(`Error while seeding database:`)}\n\n${error}`;
+};
+
+export const SEED_DEFAULT_EXPORT_ERROR = (fileName: string) => {
+ return SEED_ERROR(`Missing default function export in ${bold(fileName)}`);
+};
diff --git a/packages/db/src/runtime/queries.ts b/packages/db/src/runtime/queries.ts
index 08e2f5e29..01fefb745 100644
--- a/packages/db/src/runtime/queries.ts
+++ b/packages/db/src/runtime/queries.ts
@@ -6,7 +6,7 @@ import {
FOREIGN_KEY_REFERENCES_EMPTY_ERROR,
FOREIGN_KEY_REFERENCES_LENGTH_ERROR,
REFERENCE_DNE_ERROR,
-} from '../core/errors.js';
+} from './errors.js';
import type {
BooleanColumn,
ColumnType,
diff --git a/packages/db/src/runtime/seed-local.ts b/packages/db/src/runtime/seed-local.ts
index f00e44ea0..3e3a4eace 100644
--- a/packages/db/src/runtime/seed-local.ts
+++ b/packages/db/src/runtime/seed-local.ts
@@ -2,7 +2,7 @@ import { LibsqlError } from '@libsql/client';
import { type SQL, sql } from 'drizzle-orm';
import type { LibSQLDatabase } from 'drizzle-orm/libsql';
import { SQLiteAsyncDialect } from 'drizzle-orm/sqlite-core';
-import { SEED_DEFAULT_EXPORT_ERROR, SEED_ERROR } from '../core/errors.js';
+import { SEED_DEFAULT_EXPORT_ERROR, SEED_ERROR } from './errors.js';
import { type DBTables } from '../core/types.js';
import { getCreateIndexQueries, getCreateTableQuery } from './queries.js';