From be39d1c374ee87e3b243e023ce647d7efa68fe05 Mon Sep 17 00:00:00 2001 From: dswbx Date: Mon, 10 Feb 2025 17:46:22 +0100 Subject: [PATCH 1/3] adding d1 for cloudflare environments --- app/build.ts | 262 ++++++++++-------- app/package.json | 1 + .../cloudflare/cloudflare-workers.adapter.ts | 46 ++- .../cloudflare/connection/D1Connection.ts | 65 +++++ app/src/adapter/cloudflare/index.ts | 7 + app/src/data/connection/LibsqlConnection.ts | 1 - app/src/data/index.ts | 2 + app/src/ui/modals/index.tsx | 6 +- bun.lockb | Bin 1112880 -> 1113344 bytes examples/cloudflare-worker/package.json | 3 +- examples/cloudflare-worker/src/index.ts | 16 +- examples/cloudflare-worker/wrangler.toml | 6 +- 12 files changed, 264 insertions(+), 151 deletions(-) create mode 100644 app/src/adapter/cloudflare/connection/D1Connection.ts diff --git a/app/build.ts b/app/build.ts index ebbf33a..bbd4631 100644 --- a/app/build.ts +++ b/app/build.ts @@ -49,111 +49,117 @@ if (types && !watch) { /** * Building backend and general API */ -await tsup.build({ - minify, - sourcemap, - watch, - entry: ["src/index.ts", "src/data/index.ts", "src/core/index.ts", "src/core/utils/index.ts"], - outDir: "dist", - external: ["bun:test", "@libsql/client"], - metafile: true, - platform: "browser", - format: ["esm"], - splitting: false, - treeshake: true, - loader: { - ".svg": "dataurl" - }, - onSuccess: async () => { - delayTypes(); - } -}); +async function buildApi() { + await tsup.build({ + minify, + sourcemap, + watch, + entry: ["src/index.ts", "src/data/index.ts", "src/core/index.ts", "src/core/utils/index.ts"], + outDir: "dist", + external: ["bun:test", "@libsql/client"], + metafile: true, + platform: "browser", + format: ["esm"], + splitting: false, + treeshake: true, + loader: { + ".svg": "dataurl" + }, + onSuccess: async () => { + delayTypes(); + } + }); +} /** * Building UI for direct imports */ -await tsup.build({ - minify, - sourcemap, - watch, - entry: ["src/ui/index.ts", "src/ui/client/index.ts", "src/ui/main.css", "src/ui/styles.css"], - outDir: "dist/ui", - external: [ - "bun:test", - "react", - "react-dom", - "react/jsx-runtime", - "react/jsx-dev-runtime", - "use-sync-external-store", - /codemirror/, - "@xyflow/react", - "@mantine/core" - ], - metafile: true, - platform: "browser", - format: ["esm"], - splitting: false, - bundle: true, - treeshake: true, - loader: { - ".svg": "dataurl" - }, - esbuildOptions: (options) => { - options.logLevel = "silent"; - }, - onSuccess: async () => { - delayTypes(); - } -}); +async function buildUi() { + await tsup.build({ + minify, + sourcemap, + watch, + entry: ["src/ui/index.ts", "src/ui/client/index.ts", "src/ui/main.css", "src/ui/styles.css"], + outDir: "dist/ui", + external: [ + "bun:test", + "react", + "react-dom", + "react/jsx-runtime", + "react/jsx-dev-runtime", + "use-sync-external-store", + /codemirror/, + "@xyflow/react", + "@mantine/core" + ], + metafile: true, + platform: "browser", + format: ["esm"], + splitting: false, + bundle: true, + treeshake: true, + loader: { + ".svg": "dataurl" + }, + esbuildOptions: (options) => { + options.logLevel = "silent"; + }, + onSuccess: async () => { + delayTypes(); + } + }); +} /** * Building UI Elements * - tailwind-merge is mocked, no exclude * - ui/client is external, and after built replaced with "bknd/client" */ -await tsup.build({ - minify, - sourcemap, - watch, - entry: ["src/ui/elements/index.ts"], - outDir: "dist/ui/elements", - external: [ - "ui/client", - "react", - "react-dom", - "react/jsx-runtime", - "react/jsx-dev-runtime", - "use-sync-external-store" - ], - metafile: true, - platform: "browser", - format: ["esm"], - splitting: false, - bundle: true, - treeshake: true, - loader: { - ".svg": "dataurl" - }, - esbuildOptions: (options) => { - options.alias = { - // not important for elements, mock to reduce bundle - "tailwind-merge": "./src/ui/elements/mocks/tailwind-merge.ts" - }; - }, - onSuccess: async () => { - // manually replace ui/client with bknd/client - const path = "./dist/ui/elements/index.js"; - const bundle = await Bun.file(path).text(); - await Bun.write(path, bundle.replaceAll("ui/client", "bknd/client")); +async function buildUiElements() { + await tsup.build({ + minify, + sourcemap, + watch, + entry: ["src/ui/elements/index.ts"], + outDir: "dist/ui/elements", + external: [ + "ui/client", + "react", + "react-dom", + "react/jsx-runtime", + "react/jsx-dev-runtime", + "use-sync-external-store" + ], + metafile: true, + platform: "browser", + format: ["esm"], + splitting: false, + bundle: true, + treeshake: true, + loader: { + ".svg": "dataurl" + }, + esbuildOptions: (options) => { + options.alias = { + // not important for elements, mock to reduce bundle + "tailwind-merge": "./src/ui/elements/mocks/tailwind-merge.ts" + }; + }, + onSuccess: async () => { + // manually replace ui/client with bknd/client + const path = "./dist/ui/elements/index.js"; + const bundle = await Bun.file(path).text(); + await Bun.write(path, bundle.replaceAll("ui/client", "bknd/client")); - delayTypes(); - } -}); + delayTypes(); + } + }); +} /** * Building adapters */ -function baseConfig(adapter: string): tsup.Options { +function baseConfig(adapter: string, overrides: Partial = {}): tsup.Options { return { minify, sourcemap, @@ -162,47 +168,61 @@ function baseConfig(adapter: string): tsup.Options { format: ["esm"], platform: "neutral", outDir: `dist/adapter/${adapter}`, + metafile: true, + splitting: false, + onSuccess: async () => { + delayTypes(); + }, + ...overrides, define: { - __isDev: "0" + __isDev: "0", + ...overrides.define }, external: [ /^cloudflare*/, /^@?(hono|libsql).*?/, /^(bknd|react|next|node).*?/, - /.*\.(html)$/ - ], - metafile: true, - splitting: false, - onSuccess: async () => { - delayTypes(); - } + /.*\.(html)$/, + ...(Array.isArray(overrides.external) ? overrides.external : []) + ] }; } -// base adapter handles -await tsup.build({ - ...baseConfig(""), - entry: ["src/adapter/index.ts"], - outDir: "dist/adapter" -}); +async function buildAdapters() { + // base adapter handles + await tsup.build({ + ...baseConfig(""), + entry: ["src/adapter/index.ts"], + outDir: "dist/adapter" + }); -// specific adatpers -await tsup.build(baseConfig("remix")); -await tsup.build(baseConfig("bun")); -await tsup.build(baseConfig("astro")); -await tsup.build(baseConfig("cloudflare")); + // specific adatpers + await tsup.build(baseConfig("remix")); + await tsup.build(baseConfig("bun")); + await tsup.build(baseConfig("astro")); + await tsup.build( + baseConfig("cloudflare", { + external: [/^kysely/] + }) + ); -await tsup.build({ - ...baseConfig("vite"), - platform: "node" -}); + await tsup.build({ + ...baseConfig("vite"), + platform: "node" + }); -await tsup.build({ - ...baseConfig("nextjs"), - platform: "node" -}); + await tsup.build({ + ...baseConfig("nextjs"), + platform: "node" + }); -await tsup.build({ - ...baseConfig("node"), - platform: "node" -}); + await tsup.build({ + ...baseConfig("node"), + platform: "node" + }); +} + +await buildApi(); +await buildUi(); +await buildUiElements(); +await buildAdapters(); diff --git a/app/package.json b/app/package.json index 71ca15f..c4f4f56 100644 --- a/app/package.json +++ b/app/package.json @@ -76,6 +76,7 @@ "clsx": "^2.1.1", "esbuild-postcss": "^0.0.4", "jotai": "^2.10.1", + "kysely-d1": "^0.3.0", "open": "^10.1.0", "openapi-types": "^12.1.3", "postcss": "^8.4.47", diff --git a/app/src/adapter/cloudflare/cloudflare-workers.adapter.ts b/app/src/adapter/cloudflare/cloudflare-workers.adapter.ts index 3a4044b..d12d02b 100644 --- a/app/src/adapter/cloudflare/cloudflare-workers.adapter.ts +++ b/app/src/adapter/cloudflare/cloudflare-workers.adapter.ts @@ -1,6 +1,9 @@ -import type { FrameworkBkndConfig } from "bknd/adapter"; +/// + +import { type FrameworkBkndConfig, makeConfig } from "bknd/adapter"; import { Hono } from "hono"; import { serveStatic } from "hono/cloudflare-workers"; +import { D1Connection } from "./connection/D1Connection"; import { getCached } from "./modes/cached"; import { getDurable } from "./modes/durable"; import { getFresh, getWarm } from "./modes/fresh"; @@ -10,6 +13,7 @@ export type CloudflareBkndConfig = FrameworkBkndConfig> bindings?: (args: Context) => { kv?: KVNamespace; dobj?: DurableObjectNamespace; + db?: D1Database; }; static?: "kv" | "assets"; key?: string; @@ -26,7 +30,7 @@ export type Context = { ctx: ExecutionContext; }; -export function serve(config: CloudflareBkndConfig) { +export function serve(config: CloudflareBkndConfig = {}) { return { async fetch(request: Request, env: Env, ctx: ExecutionContext) { const url = new URL(request.url); @@ -61,20 +65,46 @@ export function serve(config: CloudflareBkndConfig) { } } - config.setAdminHtml = config.setAdminHtml && !!config.manifest; - const context = { request, env, ctx } as Context; const mode = config.mode ?? "warm"; + const appConfig = makeConfig(config, context); + const bindings = config.bindings?.(context); + if (!appConfig.connection) { + let db: D1Database | undefined; + if (bindings && "db" in bindings && bindings.db) { + console.log("Using database from bindings"); + db = bindings.db; + } else if (env && Object.keys(env).length > 0) { + // try to find a database in env + for (const key in env) { + try { + // @ts-ignore + if (env[key].constructor.name === "D1Database") { + console.log(`Using database from env "${key}"`); + db = env[key] as D1Database; + break; + } + } catch (e) {} + } + } + + if (db) { + appConfig.connection = new D1Connection({ binding: db }); + } else { + throw new Error("No database connection given"); + } + } + switch (mode) { case "fresh": - return await getFresh(config, context); + return await getFresh(appConfig, context); case "warm": - return await getWarm(config, context); + return await getWarm(appConfig, context); case "cache": - return await getCached(config, context); + return await getCached(appConfig, context); case "durable": - return await getDurable(config, context); + return await getDurable(appConfig, context); default: throw new Error(`Unknown mode ${mode}`); } diff --git a/app/src/adapter/cloudflare/connection/D1Connection.ts b/app/src/adapter/cloudflare/connection/D1Connection.ts new file mode 100644 index 0000000..d47458d --- /dev/null +++ b/app/src/adapter/cloudflare/connection/D1Connection.ts @@ -0,0 +1,65 @@ +/// + +import { SqliteConnection } from "bknd/data"; +import { KyselyPluginRunner } from "data"; +import type { QB } from "data/connection/Connection"; +import { SqliteIntrospector } from "data/connection/SqliteIntrospector"; +import { type DatabaseIntrospector, Kysely, ParseJSONResultsPlugin } from "kysely"; +import { D1Dialect } from "kysely-d1"; + +export type D1ConnectionConfig = { + binding: D1Database; +}; + +class CustomD1Dialect extends D1Dialect { + override createIntrospector(db: Kysely): DatabaseIntrospector { + return new SqliteIntrospector(db, { + excludeTables: [""] + }); + } +} + +export class D1Connection extends SqliteConnection { + constructor(private config: D1ConnectionConfig) { + const plugins = [new ParseJSONResultsPlugin()]; + + const kysely = new Kysely({ + dialect: new CustomD1Dialect({ database: config.binding }), + plugins + }); + super(kysely, {}, plugins); + } + + override supportsBatching(): boolean { + return true; + } + + override supportsIndices(): boolean { + return true; + } + + protected override async batch( + queries: [...Queries] + ): Promise<{ + [K in keyof Queries]: Awaited>; + }> { + const db = this.config.binding; + + const res = await db.batch( + queries.map((q) => { + const { sql, parameters } = q.compile(); + return db.prepare(sql).bind(...parameters); + }) + ); + + // let it run through plugins + const kyselyPlugins = new KyselyPluginRunner(this.plugins); + const data: any = []; + for (const r of res) { + const rows = await kyselyPlugins.transformResultRows(r.results); + data.push(rows); + } + + return data; + } +} diff --git a/app/src/adapter/cloudflare/index.ts b/app/src/adapter/cloudflare/index.ts index c2dd1c5..a173c2e 100644 --- a/app/src/adapter/cloudflare/index.ts +++ b/app/src/adapter/cloudflare/index.ts @@ -1,4 +1,11 @@ +import { D1Connection, type D1ConnectionConfig } from "./connection/D1Connection"; + export * from "./cloudflare-workers.adapter"; export { makeApp, getFresh, getWarm } from "./modes/fresh"; export { getCached } from "./modes/cached"; export { DurableBkndApp, getDurable } from "./modes/durable"; +export { D1Connection, type D1ConnectionConfig }; + +export function d1(config: D1ConnectionConfig) { + return new D1Connection(config); +} diff --git a/app/src/data/connection/LibsqlConnection.ts b/app/src/data/connection/LibsqlConnection.ts index e60fa32..ab7db32 100644 --- a/app/src/data/connection/LibsqlConnection.ts +++ b/app/src/data/connection/LibsqlConnection.ts @@ -74,7 +74,6 @@ export class LibsqlConnection extends SqliteConnection { }> { const stms: InStatement[] = queries.map((q) => { const compiled = q.compile(); - //console.log("compiled", compiled.sql, compiled.parameters); return { sql: compiled.sql, args: compiled.parameters as any[] diff --git a/app/src/data/index.ts b/app/src/data/index.ts index a5de079..e63707e 100644 --- a/app/src/data/index.ts +++ b/app/src/data/index.ts @@ -18,6 +18,8 @@ export { Connection } from "./connection/Connection"; export { LibsqlConnection, type LibSqlCredentials } from "./connection/LibsqlConnection"; export { SqliteConnection } from "./connection/SqliteConnection"; export { SqliteLocalConnection } from "./connection/SqliteLocalConnection"; +export { SqliteIntrospector } from "./connection/SqliteIntrospector"; +export { KyselyPluginRunner } from "./plugins/KyselyPluginRunner"; export { constructEntity, constructRelation } from "./schema/constructor"; diff --git a/app/src/ui/modals/index.tsx b/app/src/ui/modals/index.tsx index 9869158..9b15848 100644 --- a/app/src/ui/modals/index.tsx +++ b/app/src/ui/modals/index.tsx @@ -22,11 +22,7 @@ declare module "@mantine/modals" { } export function BkndModalsProvider({ children }) { - return ( - - {children} - - ); + return {children}; } function open( diff --git a/bun.lockb b/bun.lockb index 87d85d666ecf35d2b1db7e6da76985e1ac1d75ad..ff10b8a07b6f34b0accf5feb042fcdefcb995c24 100755 GIT binary patch delta 179375 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

i%4xyHpQ%J)x}%E0 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 TKZuvHA6N~2TA9CXOKJWW?)OOe delta 179386 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 diff --git a/examples/cloudflare-worker/package.json b/examples/cloudflare-worker/package.json index 689ee95..55526c4 100644 --- a/examples/cloudflare-worker/package.json +++ b/examples/cloudflare-worker/package.json @@ -11,7 +11,8 @@ "cf-typegen": "wrangler types" }, "dependencies": { - "bknd": "workspace:*" + "bknd": "workspace:*", + "kysely-d1": "^0.3.0" }, "devDependencies": { "@cloudflare/workers-types": "^4.20241106.0", diff --git a/examples/cloudflare-worker/src/index.ts b/examples/cloudflare-worker/src/index.ts index 628c490..5d28a61 100644 --- a/examples/cloudflare-worker/src/index.ts +++ b/examples/cloudflare-worker/src/index.ts @@ -1,15 +1,5 @@ +/// + import { serve } from "bknd/adapter/cloudflare"; -export default serve({ - app: (args) => ({ - connection: { - type: "libsql", - config: { - url: "http://localhost:8080" - } - } - }), - onBuilt: async (app) => { - app.modules.server.get("/custom", (c) => c.json({ hello: "world" })); - } -}); +export default serve(); diff --git a/examples/cloudflare-worker/wrangler.toml b/examples/cloudflare-worker/wrangler.toml index 27157d0..7f049ef 100644 --- a/examples/cloudflare-worker/wrangler.toml +++ b/examples/cloudflare-worker/wrangler.toml @@ -10,5 +10,7 @@ assets = { directory = "../../app/dist/static" } [observability] enabled = true -#[site] -#bucket = "../../app/dist/static" \ No newline at end of file +[[d1_databases]] +binding = "DB" +database_name = "bknd-cf-example" +database_id = "7ad67953-2bbf-47fc-8696-f4517dbfe674" \ No newline at end of file From 7a6321f4ce4e19a99f23e1e84399d7503bec0fa5 Mon Sep 17 00:00:00 2001 From: dswbx Date: Tue, 11 Feb 2025 10:04:53 +0100 Subject: [PATCH 2/3] added r2 binding support to cf adapter --- .../{connection => }/D1Connection.ts | 4 +- .../cloudflare}/StorageR2Adapter.ts | 57 ++++++++++++--- app/src/adapter/cloudflare/bindings.ts | 32 +++++++++ .../cloudflare/cloudflare-workers.adapter.ts | 72 ++++++++++--------- app/src/adapter/cloudflare/index.ts | 9 ++- app/src/adapter/cloudflare/modes/cached.ts | 4 +- app/src/adapter/cloudflare/modes/fresh.ts | 4 +- app/src/media/AppMedia.ts | 5 +- app/src/media/media-schema.ts | 4 +- app/src/ui/routes/media/media.settings.tsx | 15 ++-- examples/cloudflare-worker/src/index.ts | 6 +- examples/cloudflare-worker/wrangler.toml | 6 +- 12 files changed, 157 insertions(+), 61 deletions(-) rename app/src/adapter/cloudflare/{connection => }/D1Connection.ts (91%) rename app/src/{media/storage/adapters => adapter/cloudflare}/StorageR2Adapter.ts (72%) create mode 100644 app/src/adapter/cloudflare/bindings.ts diff --git a/app/src/adapter/cloudflare/connection/D1Connection.ts b/app/src/adapter/cloudflare/D1Connection.ts similarity index 91% rename from app/src/adapter/cloudflare/connection/D1Connection.ts rename to app/src/adapter/cloudflare/D1Connection.ts index d47458d..11e1a44 100644 --- a/app/src/adapter/cloudflare/connection/D1Connection.ts +++ b/app/src/adapter/cloudflare/D1Connection.ts @@ -1,9 +1,7 @@ /// -import { SqliteConnection } from "bknd/data"; -import { KyselyPluginRunner } from "data"; +import { KyselyPluginRunner, SqliteConnection, SqliteIntrospector } from "bknd/data"; import type { QB } from "data/connection/Connection"; -import { SqliteIntrospector } from "data/connection/SqliteIntrospector"; import { type DatabaseIntrospector, Kysely, ParseJSONResultsPlugin } from "kysely"; import { D1Dialect } from "kysely-d1"; diff --git a/app/src/media/storage/adapters/StorageR2Adapter.ts b/app/src/adapter/cloudflare/StorageR2Adapter.ts similarity index 72% rename from app/src/media/storage/adapters/StorageR2Adapter.ts rename to app/src/adapter/cloudflare/StorageR2Adapter.ts index 911fe37..aedeb10 100644 --- a/app/src/media/storage/adapters/StorageR2Adapter.ts +++ b/app/src/adapter/cloudflare/StorageR2Adapter.ts @@ -1,6 +1,47 @@ -import { isDebug } from "core"; -import type { FileBody, StorageAdapter } from "../Storage"; -import { guessMimeType } from "../mime-types"; +import { registries } from "bknd"; +import { isDebug } from "bknd/core"; +import { StringEnum, Type } from "bknd/utils"; +import type { FileBody, StorageAdapter } from "media/storage/Storage"; +import { guess } from "media/storage/mime-types-tiny"; +import { getBindings } from "./bindings"; + +export function makeSchema(bindings: string[] = []) { + return Type.Object( + { + binding: bindings.length > 0 ? StringEnum(bindings) : Type.Optional(Type.String()) + }, + { title: "R2", description: "Cloudflare R2 storage" } + ); +} + +export function registerMedia(env: Record) { + const r2_bindings = getBindings(env, "R2Bucket"); + + registries.media.register( + "r2", + class extends StorageR2Adapter { + constructor(private config: any) { + const binding = r2_bindings.find((b) => b.key === config.binding); + if (!binding) { + throw new Error(`No R2Bucket found with key ${config.binding}`); + } + + super(binding?.value); + } + + override getSchema() { + return makeSchema(r2_bindings.map((b) => b.key)); + } + + override toJSON() { + return { + ...super.toJSON(), + config: this.config + }; + } + } + ); +} /** * Adapter for R2 storage @@ -14,7 +55,7 @@ export class StorageR2Adapter implements StorageAdapter { } getSchema() { - return undefined; + return makeSchema(); } async putObject(key: string, body: FileBody) { @@ -47,7 +88,8 @@ export class StorageR2Adapter implements StorageAdapter { async getObject(key: string, headers: Headers): Promise { let object: R2ObjectBody | null; const responseHeaders = new Headers({ - "Accept-Ranges": "bytes" + "Accept-Ranges": "bytes", + "Content-Type": guess(key) }); //console.log("getObject:headers", headersToObject(headers)); @@ -97,10 +139,9 @@ export class StorageR2Adapter implements StorageAdapter { if (!metadata || Object.keys(metadata).length === 0) { // guessing is especially required for dev environment (miniflare) metadata = { - contentType: guessMimeType(object.key) + contentType: guess(object.key) }; } - //console.log("writeHttpMetadata", object.httpMetadata, metadata); for (const [key, value] of Object.entries(metadata)) { const camelToDash = key.replace(/([A-Z])/g, "-$1").toLowerCase(); @@ -115,7 +156,7 @@ export class StorageR2Adapter implements StorageAdapter { } return { - type: String(head.httpMetadata?.contentType ?? "application/octet-stream"), + type: String(head.httpMetadata?.contentType ?? guess(key)), size: head.size }; } diff --git a/app/src/adapter/cloudflare/bindings.ts b/app/src/adapter/cloudflare/bindings.ts new file mode 100644 index 0000000..491d0a8 --- /dev/null +++ b/app/src/adapter/cloudflare/bindings.ts @@ -0,0 +1,32 @@ +export type BindingTypeMap = { + D1Database: D1Database; + KVNamespace: KVNamespace; + DurableObjectNamespace: DurableObjectNamespace; + R2Bucket: R2Bucket; +}; + +export type GetBindingType = keyof BindingTypeMap; +export type BindingMap = { key: string; value: BindingTypeMap[T] }; + +export function getBindings(env: any, type: T): BindingMap[] { + const bindings: BindingMap[] = []; + for (const key in env) { + try { + if (env[key] && (env[key] as any).constructor.name === type) { + bindings.push({ + key, + value: env[key] as BindingTypeMap[T] + }); + } + } catch (e) {} + } + return bindings; +} + +export function getBinding(env: any, type: T): BindingMap { + const bindings = getBindings(env, type); + if (bindings.length === 0) { + throw new Error(`No ${type} found in bindings`); + } + return bindings[0] as BindingMap; +} diff --git a/app/src/adapter/cloudflare/cloudflare-workers.adapter.ts b/app/src/adapter/cloudflare/cloudflare-workers.adapter.ts index d12d02b..4486609 100644 --- a/app/src/adapter/cloudflare/cloudflare-workers.adapter.ts +++ b/app/src/adapter/cloudflare/cloudflare-workers.adapter.ts @@ -3,7 +3,9 @@ import { type FrameworkBkndConfig, makeConfig } from "bknd/adapter"; import { Hono } from "hono"; import { serveStatic } from "hono/cloudflare-workers"; -import { D1Connection } from "./connection/D1Connection"; +import { D1Connection } from "./D1Connection"; +import { registerMedia } from "./StorageR2Adapter"; +import { getBinding } from "./bindings"; import { getCached } from "./modes/cached"; import { getDurable } from "./modes/durable"; import { getFresh, getWarm } from "./modes/fresh"; @@ -30,6 +32,38 @@ export type Context = { ctx: ExecutionContext; }; +let media_registered: boolean = false; +export function makeCfConfig(config: CloudflareBkndConfig, context: Context) { + if (!media_registered) { + registerMedia(context.env as any); + media_registered = true; + } + + const appConfig = makeConfig(config, context); + const bindings = config.bindings?.(context); + if (!appConfig.connection) { + let db: D1Database | undefined; + if (bindings?.db) { + console.log("Using database from bindings"); + db = bindings.db; + } else if (Object.keys(context.env ?? {}).length > 0) { + const binding = getBinding(context.env, "D1Database"); + if (binding) { + console.log(`Using database from env "${binding.key}"`); + db = binding.value; + } + } + + if (db) { + appConfig.connection = new D1Connection({ binding: db }); + } else { + throw new Error("No database connection given"); + } + } + + return appConfig; +} + export function serve(config: CloudflareBkndConfig = {}) { return { async fetch(request: Request, env: Env, ctx: ExecutionContext) { @@ -68,43 +102,15 @@ export function serve(config: CloudflareBkndConfig = {}) { const context = { request, env, ctx } as Context; const mode = config.mode ?? "warm"; - const appConfig = makeConfig(config, context); - const bindings = config.bindings?.(context); - if (!appConfig.connection) { - let db: D1Database | undefined; - if (bindings && "db" in bindings && bindings.db) { - console.log("Using database from bindings"); - db = bindings.db; - } else if (env && Object.keys(env).length > 0) { - // try to find a database in env - for (const key in env) { - try { - // @ts-ignore - if (env[key].constructor.name === "D1Database") { - console.log(`Using database from env "${key}"`); - db = env[key] as D1Database; - break; - } - } catch (e) {} - } - } - - if (db) { - appConfig.connection = new D1Connection({ binding: db }); - } else { - throw new Error("No database connection given"); - } - } - switch (mode) { case "fresh": - return await getFresh(appConfig, context); + return await getFresh(config, context); case "warm": - return await getWarm(appConfig, context); + return await getWarm(config, context); case "cache": - return await getCached(appConfig, context); + return await getCached(config, context); case "durable": - return await getDurable(appConfig, context); + return await getDurable(config, context); default: throw new Error(`Unknown mode ${mode}`); } diff --git a/app/src/adapter/cloudflare/index.ts b/app/src/adapter/cloudflare/index.ts index a173c2e..a10dc53 100644 --- a/app/src/adapter/cloudflare/index.ts +++ b/app/src/adapter/cloudflare/index.ts @@ -1,10 +1,17 @@ -import { D1Connection, type D1ConnectionConfig } from "./connection/D1Connection"; +import { D1Connection, type D1ConnectionConfig } from "./D1Connection"; export * from "./cloudflare-workers.adapter"; export { makeApp, getFresh, getWarm } from "./modes/fresh"; export { getCached } from "./modes/cached"; export { DurableBkndApp, getDurable } from "./modes/durable"; export { D1Connection, type D1ConnectionConfig }; +export { + getBinding, + getBindings, + type BindingTypeMap, + type GetBindingType, + type BindingMap +} from "./bindings"; export function d1(config: D1ConnectionConfig) { return new D1Connection(config); diff --git a/app/src/adapter/cloudflare/modes/cached.ts b/app/src/adapter/cloudflare/modes/cached.ts index a367e5d..48f6926 100644 --- a/app/src/adapter/cloudflare/modes/cached.ts +++ b/app/src/adapter/cloudflare/modes/cached.ts @@ -1,6 +1,6 @@ import { App } from "bknd"; import { createRuntimeApp } from "bknd/adapter"; -import type { CloudflareBkndConfig, Context } from "../index"; +import { type CloudflareBkndConfig, type Context, makeCfConfig } from "../index"; export async function getCached(config: CloudflareBkndConfig, { env, ctx, ...args }: Context) { const { kv } = config.bindings?.(env)!; @@ -16,7 +16,7 @@ export async function getCached(config: CloudflareBkndConfig, { env, ctx, ...arg const app = await createRuntimeApp( { - ...config, + ...makeCfConfig(config, { env, ctx, ...args }), initialConfig, onBuilt: async (app) => { app.module.server.client.get("/__bknd/cache", async (c) => { diff --git a/app/src/adapter/cloudflare/modes/fresh.ts b/app/src/adapter/cloudflare/modes/fresh.ts index ef40987..7a2af67 100644 --- a/app/src/adapter/cloudflare/modes/fresh.ts +++ b/app/src/adapter/cloudflare/modes/fresh.ts @@ -1,11 +1,11 @@ import type { App } from "bknd"; import { createRuntimeApp } from "bknd/adapter"; -import type { CloudflareBkndConfig, Context } from "../index"; +import { type CloudflareBkndConfig, type Context, makeCfConfig } from "../index"; export async function makeApp(config: CloudflareBkndConfig, ctx: Context) { return await createRuntimeApp( { - ...config, + ...makeCfConfig(config, ctx), adminOptions: config.html ? { html: config.html } : undefined }, ctx diff --git a/app/src/media/AppMedia.ts b/app/src/media/AppMedia.ts index 564b008..dda2cf6 100644 --- a/app/src/media/AppMedia.ts +++ b/app/src/media/AppMedia.ts @@ -40,7 +40,8 @@ export class AppMedia extends Module { let adapter: StorageAdapter; try { const { type, config } = this.config.adapter; - adapter = new (registry.get(type as any).cls)(config as any); + const cls = registry.get(type as any).cls; + adapter = new cls(config as any); this._storage = new Storage(adapter, this.config.storage, this.ctx.emgr); this.setBuilt(); @@ -53,8 +54,6 @@ export class AppMedia extends Module { index(media).on(["path"], true).on(["reference"]); }) ); - - this.setBuilt(); } catch (e) { console.error(e); throw new Error( diff --git a/app/src/media/media-schema.ts b/app/src/media/media-schema.ts index f196c79..229b108 100644 --- a/app/src/media/media-schema.ts +++ b/app/src/media/media-schema.ts @@ -16,8 +16,8 @@ export function buildMediaSchema() { config: adapter.schema }, { - title: adapter.schema.title ?? name, - description: adapter.schema.description, + title: adapter.schema?.title ?? name, + description: adapter.schema?.description, additionalProperties: false } ); diff --git a/app/src/ui/routes/media/media.settings.tsx b/app/src/ui/routes/media/media.settings.tsx index 68b9b04..f6eb4e8 100644 --- a/app/src/ui/routes/media/media.settings.tsx +++ b/app/src/ui/routes/media/media.settings.tsx @@ -1,4 +1,4 @@ -import { IconBrandAws, IconCloud, IconServer } from "@tabler/icons-react"; +import { IconBrandAws, IconBrandCloudflare, IconCloud, IconServer } from "@tabler/icons-react"; import { isDebug } from "core"; import { autoFormatString } from "core/utils"; import { twMerge } from "tailwind-merge"; @@ -113,10 +113,15 @@ const RootFormError = () => { ); }; -const Icons = [IconBrandAws, IconCloud, IconServer]; +const Icons = { + s3: IconBrandAws, + cloudinary: IconCloud, + local: IconServer, + r2: IconBrandCloudflare +}; -const AdapterIcon = ({ index }: { index: number }) => { - const Icon = Icons[index]; +const AdapterIcon = ({ type }: { type: string }) => { + const Icon = Icons[type]; if (!Icon) return null; return ; }; @@ -142,7 +147,7 @@ function Adapters() { )} >

{autoFormatString(schema.title)} diff --git a/examples/cloudflare-worker/src/index.ts b/examples/cloudflare-worker/src/index.ts index 5d28a61..c2114d3 100644 --- a/examples/cloudflare-worker/src/index.ts +++ b/examples/cloudflare-worker/src/index.ts @@ -2,4 +2,8 @@ import { serve } from "bknd/adapter/cloudflare"; -export default serve(); +export default serve({ + onBuilt: async (app) => { + app.modules.server.get("/custom", (c) => c.json({ hello: "world" })); + } +}); diff --git a/examples/cloudflare-worker/wrangler.toml b/examples/cloudflare-worker/wrangler.toml index 7f049ef..993970a 100644 --- a/examples/cloudflare-worker/wrangler.toml +++ b/examples/cloudflare-worker/wrangler.toml @@ -13,4 +13,8 @@ enabled = true [[d1_databases]] binding = "DB" database_name = "bknd-cf-example" -database_id = "7ad67953-2bbf-47fc-8696-f4517dbfe674" \ No newline at end of file +database_id = "7ad67953-2bbf-47fc-8696-f4517dbfe674" + +[[r2_buckets]] +binding = "BUCKET" +bucket_name = "bknd-cf-example" \ No newline at end of file From 61d06973a47eb89685c77da9c57b745d130d6281 Mon Sep 17 00:00:00 2001 From: dswbx Date: Wed, 12 Feb 2025 07:29:56 +0100 Subject: [PATCH 3/3] ignore d1 system tables, deploy verified --- app/src/adapter/cloudflare/D1Connection.ts | 2 +- app/src/data/connection/SqliteIntrospector.ts | 22 ++++++++++--------- examples/cloudflare-worker/src/index.ts | 1 + examples/cloudflare-worker/wrangler.toml | 2 +- 4 files changed, 15 insertions(+), 12 deletions(-) diff --git a/app/src/adapter/cloudflare/D1Connection.ts b/app/src/adapter/cloudflare/D1Connection.ts index 11e1a44..810cca8 100644 --- a/app/src/adapter/cloudflare/D1Connection.ts +++ b/app/src/adapter/cloudflare/D1Connection.ts @@ -12,7 +12,7 @@ export type D1ConnectionConfig = { class CustomD1Dialect extends D1Dialect { override createIntrospector(db: Kysely): DatabaseIntrospector { return new SqliteIntrospector(db, { - excludeTables: [""] + excludeTables: ["_cf_KV"] }); } } diff --git a/app/src/data/connection/SqliteIntrospector.ts b/app/src/data/connection/SqliteIntrospector.ts index cf68816..f86887e 100644 --- a/app/src/data/connection/SqliteIntrospector.ts +++ b/app/src/data/connection/SqliteIntrospector.ts @@ -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 { 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 { return { - tables: await this.getTables(options), + tables: await this.getTables(options) }; } async #getTableMetadata(table: string): Promise { 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 + })) }; } } diff --git a/examples/cloudflare-worker/src/index.ts b/examples/cloudflare-worker/src/index.ts index c2114d3..d349c50 100644 --- a/examples/cloudflare-worker/src/index.ts +++ b/examples/cloudflare-worker/src/index.ts @@ -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" })); } diff --git a/examples/cloudflare-worker/wrangler.toml b/examples/cloudflare-worker/wrangler.toml index 993970a..1399d79 100644 --- a/examples/cloudflare-worker/wrangler.toml +++ b/examples/cloudflare-worker/wrangler.toml @@ -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