UNPKG

drizzle-init

Version:

minimalist starter template to get started with drizzle-orm

244 lines (195 loc) 7.6 kB
let TEMPLATE; export const dbContent = (db,provider)=>{ switch (db) { case "PostgreSQL": switch (provider) { case "Neon": TEMPLATE=`import { neon } from '@neondatabase/serverless'; import { drizzle } from 'drizzle-orm/neon-http'; import * as schema from './schema'; const sql = neon(process.env.DRIZZLE_DATABASE_URL!); export const db = drizzle(sql,{schema});` break; case "Xata": TEMPLATE = `import { drizzle } from 'drizzle-orm/xata-http'; import { getXataClient } from './xata'; // Generated client const xata = getXataClient(); export const db = drizzle(xata);`; break; case "PostgresJS":TEMPLATE=`import { drizzle } from 'drizzle-orm/postgres-js'; import postgres from 'postgres'; const queryClient = postgres(process.env.DATABASE_TOKEN); export const db = drizzle(queryClient);`; break; case "node-postgres":TEMPLATE=`import { drizzle } from "drizzle-orm/node-postgres"; import { Client } from "pg"; const client = new Client({ connectionString: process.env.DATABASE_URL, }); await client.connect(); export const db = drizzle(client);`; break; case "Cloudflare": TEMPLATE=`import { Client } from "pg"; import { drizzle } from "drizzle-orm/node-postgres"; export default { async fetch( request: Request, env: Env, ctx: ExecutionContext ): Promise<Response> { const client = new Client({ connectionString: env.DATABASE_URL }); await client.connect(); const db = drizzle(client); const result = await db.select().from(...); // Clean up the client, ensuring we don't kill the worker before that is completed. ctx.waitUntil(client.end()); return new Response(now); } }`;break; case "PGlite":TEMPLATE=`import { PGlite } from '@electric-sql/pglite'; import { drizzle } from 'drizzle-orm/pglite'; // In-memory Postgres const client = new PGlite(); export const db = drizzle(client); `; break; case "Vercel Postgres":TEMPLATE = `import { sql } from '@vercel/postgres'; import { drizzle } from 'drizzle-orm/vercel-postgres'; export const db = drizzle(sql)`; break; case "Supabase":TEMPLATE = `import { drizzle } from 'drizzle-orm/postgres-js' import postgres from 'postgres' const connectionString = process.env.DATABASE_URL const client = postgres(connectionString) export const db = drizzle(client); `;break; case "AWS Data API":TEMPLATE = `import { drizzle } from 'drizzle-orm/aws-data-api/pg'; import { RDSDataClient } from '@aws-sdk/client-rds-data'; import { fromIni } from '@aws-sdk/credential-providers'; const rdsClient = new RDSDataClient({ credentials: fromIni({ profile: process.env['PROFILE'] }), region: 'us-east-1', }); export const db = drizzle(rdsClient, { database: process.env['DATABASE']!, secretArn: process.env['SECRET_ARN']!, resourceArn: process.env['RESOURCE_ARN']!, }); `;break; case "HTTP Proxy":TEMPLATE = `import { drizzle } from 'drizzle-orm/pg-proxy'; const db = drizzle(async (sql, params, method) => { try { const rows = await axios.post('http://localhost:3000/query', { sql, params, method }); return { rows: rows.data }; } catch (e: any) { console.error('Error from pg proxy server: ', e.response.data) return { rows: [] }; } });`;break; default: console.log("Something went wrong") break; } break; case "MySQL": switch (provider) { case "planetScale":TEMPLATE=`import { drizzle } from "drizzle-orm/planetscale-serverless"; import { Client } from "@planetscale/database"; const client = new Client({ host: process.env["DATABASE_HOST"], username: process.env["DATABASE_USERNAME"], password: process.env["DATABASE_PASSWORD"], }); export const db = drizzle(client);` break; case "Mysql2": TEMPLATE = `import { drizzle } from "drizzle-orm/mysql2"; import mysql from "mysql2/promise"; const connection = await mysql.createConnection({ host: "host", user: "user", database: "database", ... }); export const db = drizzle(connection);` break; case "HTTP proxy": TEMPLATE = `import { drizzle } from 'drizzle-orm/mysql-proxy'; export const db = drizzle(async (sql, params, method) => { try { const rows = await axios.post('http://localhost:3000/query', { sql, params, method }); return { rows: rows.data }; } catch (e: any) { console.error('Error from mysql proxy server: ', e.response.data) return { rows: [] }; } });` break; case "TiDB Serverless": TEMPLATE = `import { connect } from '@tidbcloud/serverless'; import { drizzle } from 'drizzle-orm/tidb-serverless'; const client = connect({ url: '...' }); export const db = drizzle(client);` break; default: console.log("Something went wrong.") break; } break; case "SQLite": switch (provider) { case "Turso": TEMPLATE = `import { drizzle } from 'drizzle-orm/libsql'; import { createClient } from '@libsql/client'; const client = createClient({ url: 'DATABASE_URL', authToken: 'DATABASE_AUTH_TOKEN' }); export const db = drizzle(client); ` break; case "Cloudflare D1": TEMPLATE = `import { drizzle } from 'drizzle-orm/d1'; export interface Env { <BINDING_NAME>: D1Database; } export default { async fetch(request: Request, env: Env) { const db = drizzle(env.<BINDING_NAME>); const result = await db.select().from(users).all() return Response.json(result); }, };` break; case "Bun sqlite": TEMPLATE = `import { drizzle } from 'drizzle-orm/bun-sqlite'; import { Database } from 'bun:sqlite'; const sqlite = new Database('sqlite.db'); export const db = drizzle(sqlite); ` break; case "React Native SQLite": TEMPLATE = `import { drizzle } from "drizzle-orm/expo-sqlite"; import { openDatabaseSync } from "expo-sqlite/next"; const expo = openDatabaseSync("db.db"); export const db = drizzle(expo);` break; case "Expo SQLite": TEMPLATE = `import { drizzle } from "drizzle-orm/expo-sqlite"; import { openDatabaseSync } from "expo-sqlite/next"; const expo = openDatabaseSync("db.db"); export const db = drizzle(expo);` break; case "better-sqlite3": TEMPLATE = `import { drizzle } from 'drizzle-orm/better-sqlite3'; import Database from 'better-sqlite3'; const sqlite = new Database('sqlite.db'); export const db = drizzle(sqlite);` break; case "HTTP Proxy": TEMPLATE = `import { drizzle } from 'drizzle-orm/sqlite-proxy'; export const db = drizzle(async (sql, params, method) => { try { const rows = await axios.post('http://localhost:3000/query', { sql, params, method }); return { rows: rows.data }; } catch (e: any) { console.error('Error from sqlite proxy server: ', e.response.data) return { rows: [] }; } });` break; default: break; } break; default: break; } return TEMPLATE }