D1, Drizzle y Wrangler
Instalaciones
bun add drizzle-orm
bun add @libsql/client
bun add -D drizzle-kit
bun add -D @sveltejs/adapter-cloudflare-workers
Config
drizzle.config.ts
import { defineConfig } from 'drizzle-kit';
if (!process.env.DATABASE_URL) throw new Error('DATABASE_URL is not set');
export default defineConfig({
schema: './src/lib/server/db/schema.ts',
dbCredentials: {
accountId: process.env.ACCOUNT_ID!,
databaseId: process.env.DATABASE_ID!,
token: process.env.TOKEN!
},
verbose: true,
strict: true,
dialect: 'sqlite',
driver: 'd1-http'
});
Esquemas
Migraciones
1. Generar migración
- En esta etapa, la base de datos física aún no se modificará; esto solo prepara el SQL que luego se enviará de manera interna.
bunx drizzle-kit generate
2. Aplicar en la base de datos
bunx drizzle-kit migrate
Configurar adaptador de Cloudflare
wrangler.toml
wrangler.toml
name = "<app-name>"
compatibility_date = "2023-10-30"
[[d1_databases]]
binding = "DB"
database_name = "<db-name>"
database_id = ""
svelte.config.ts
svelte.config.js
import adapter from '@sveltejs/adapter-cloudflare-workers';
import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';
/** @type {import('@sveltejs/kit').Config} */
const config = {
preprocess: vitePreprocess(),
kit: {
adapter: adapter({
routes: {
include: ['/*'],
exclude: ['<all>']
},
platformProxy: {
configPath: 'wrangler.toml',
environment: undefined,
experimentalJsonConfig: false,
persist: false
}
})
}
};
export default config;
src/app.d.ts
declare global {
namespace App {
interface Platform {
env?: {
DB: D1Database; // DB o el mismo nombre del binding
};
}
}
}
export {};