ignore d1 system tables, deploy verified

This commit is contained in:
dswbx
2025-02-12 07:29:56 +01:00
parent 7a6321f4ce
commit 61d06973a4
4 changed files with 15 additions and 12 deletions

View File

@@ -12,7 +12,7 @@ export type D1ConnectionConfig = {
class CustomD1Dialect extends D1Dialect {
override createIntrospector(db: Kysely<any>): DatabaseIntrospector {
return new SqliteIntrospector(db, {
excludeTables: [""]
excludeTables: ["_cf_KV"]
});
}
}

View File

@@ -5,7 +5,7 @@ import type {
ExpressionBuilder,
Kysely,
SchemaMetadata,
TableMetadata,
TableMetadata
} from "kysely";
import { DEFAULT_MIGRATION_LOCK_TABLE, DEFAULT_MIGRATION_TABLE, sql } from "kysely";
import type { ConnectionIntrospector, IndexMetadata } from "./Connection";
@@ -62,7 +62,7 @@ export class SqliteIntrospector implements DatabaseIntrospector, ConnectionIntro
seqno: number;
cid: number;
name: string;
}>`pragma_index_info(${index})`.as("index_info"),
}>`pragma_index_info(${index})`.as("index_info")
)
.select(["seqno", "cid", "name"])
.orderBy("cid")
@@ -74,8 +74,8 @@ export class SqliteIntrospector implements DatabaseIntrospector, ConnectionIntro
isUnique: isUnique,
columns: columns.map((col) => ({
name: col.name,
order: col.seqno,
})),
order: col.seqno
}))
};
}
@@ -87,7 +87,7 @@ export class SqliteIntrospector implements DatabaseIntrospector, ConnectionIntro
}
async getTables(
options: DatabaseMetadataOptions = { withInternalKyselyTables: false },
options: DatabaseMetadataOptions = { withInternalKyselyTables: false }
): Promise<TableMetadata[]> {
let query = this.#db
.selectFrom("sqlite_master")
@@ -99,7 +99,7 @@ export class SqliteIntrospector implements DatabaseIntrospector, ConnectionIntro
if (!options.withInternalKyselyTables) {
query = query.where(
this.excludeTables([DEFAULT_MIGRATION_TABLE, DEFAULT_MIGRATION_LOCK_TABLE]),
this.excludeTables([DEFAULT_MIGRATION_TABLE, DEFAULT_MIGRATION_LOCK_TABLE])
);
}
if (this._excludeTables.length > 0) {
@@ -107,17 +107,19 @@ export class SqliteIntrospector implements DatabaseIntrospector, ConnectionIntro
}
const tables = await query.execute();
console.log("tables", tables);
return Promise.all(tables.map(({ name }) => this.#getTableMetadata(name)));
}
async getMetadata(options?: DatabaseMetadataOptions): Promise<DatabaseMetadata> {
return {
tables: await this.getTables(options),
tables: await this.getTables(options)
};
}
async #getTableMetadata(table: string): Promise<TableMetadata> {
const db = this.#db;
console.log("get table metadata", table);
// Get the SQL that was used to create the table.
const tableDefinition = await db
@@ -142,7 +144,7 @@ export class SqliteIntrospector implements DatabaseIntrospector, ConnectionIntro
type: string;
notnull: 0 | 1;
dflt_value: any;
}>`pragma_table_info(${table})`.as("table_info"),
}>`pragma_table_info(${table})`.as("table_info")
)
.select(["name", "type", "notnull", "dflt_value"])
.orderBy("cid")
@@ -157,8 +159,8 @@ export class SqliteIntrospector implements DatabaseIntrospector, ConnectionIntro
isNullable: !col.notnull,
isAutoIncrementing: col.name === autoIncrementCol,
hasDefaultValue: col.dflt_value != null,
comment: undefined,
})),
comment: undefined
}))
};
}
}

View File

@@ -3,6 +3,7 @@
import { serve } from "bknd/adapter/cloudflare";
export default serve({
mode: "fresh",
onBuilt: async (app) => {
app.modules.server.get("/custom", (c) => c.json({ hello: "world" }));
}

View File

@@ -1,7 +1,7 @@
#:schema node_modules/wrangler/config-schema.json
name = "bknd-cf-worker-example"
main = "src/index.ts"
compatibility_date = "2024-11-06"
compatibility_date = "2025-02-04"
compatibility_flags = ["nodejs_compat"]
workers_dev = true
minify = true