connectToD1() — drizzle-orm Function Reference
Architecture documentation for the connectToD1() function in connections.ts from the drizzle-orm codebase.
Entity Profile
Dependency Diagram
graph TD 410b46e8_6e5c_cef4_d449_bb7d00e289b8["connectToD1()"] 4e02c2bb_54a8_1500_813e_2cafd1ad4f59["connections.ts"] 410b46e8_6e5c_cef4_d449_bb7d00e289b8 -->|defined in| 4e02c2bb_54a8_1500_813e_2cafd1ad4f59 414ec951_dc1c_5030_4563_03e41560a793["prepareSqliteParams()"] 410b46e8_6e5c_cef4_d449_bb7d00e289b8 -->|calls| 414ec951_dc1c_5030_4563_03e41560a793 799e87a0_af66_9e87_fd98_913a06374e61["queries()"] 410b46e8_6e5c_cef4_d449_bb7d00e289b8 -->|calls| 799e87a0_af66_9e87_fd98_913a06374e61 style 410b46e8_6e5c_cef4_d449_bb7d00e289b8 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
drizzle-kit/src/cli/connections.ts lines 928–996
export const connectToD1 = async (
d1: D1Database,
): Promise<
& SQLiteDB
& {
packageName: 'd1';
migrate: (config: MigrationConfig) => Promise<void>;
proxy: Proxy;
transactionProxy: TransactionProxy;
}
> => {
const db: SQLiteDB = {
query: async <T>(sql: string, params?: any[]) => {
const stmt = d1.prepare(sql);
const boundStmt = params && params.length > 0 ? stmt.bind(...params) : stmt;
const result = await boundStmt.all<T>();
return (result.results ?? []) as T[];
},
run: async (query: string) => {
const stmt = d1.prepare(query);
await stmt.run();
},
};
const proxy: Proxy = async (params) => {
const preparedParams = prepareSqliteParams(params.params || [], 'd1');
const stmt = d1.prepare(params.sql);
const boundStmt = preparedParams.length > 0 ? stmt.bind(...preparedParams) : stmt;
try {
if (params.mode === 'array') {
return await boundStmt.raw();
}
const result = await boundStmt.all();
return result.results ?? [];
} catch (error: any) {
// D1 doesn't allow certain introspection queries (sqlite_master with pragma functions)
// Return empty array for SQLITE_AUTH errors on these system queries
if (error?.message?.includes('SQLITE_AUTH') || error?.message?.includes('not authorized')) {
return [];
}
throw error;
}
};
const transactionProxy: TransactionProxy = async (queries) => {
const results: any[] = [];
try {
// D1 doesn't support true transactions via binding, use batch instead
const statements = queries.map((q) => d1.prepare(q.sql));
const batchResults = await d1.batch(statements);
for (const result of batchResults) {
results.push(result.results ?? []);
}
} catch (error) {
results.push(error as Error);
}
return results;
};
const { drizzle } = await import('drizzle-orm/d1');
const { migrate } = await import('drizzle-orm/d1/migrator');
const drzl = drizzle(d1);
const migrateFn = async (config: MigrationConfig) => {
return migrate(drzl, config);
};
return { ...db, packageName: 'd1', proxy, transactionProxy, migrate: migrateFn };
};
Domain
Subdomains
Defined In
Source
Frequently Asked Questions
What does connectToD1() do?
connectToD1() is a function in the drizzle-orm codebase, defined in drizzle-kit/src/cli/connections.ts.
Where is connectToD1() defined?
connectToD1() is defined in drizzle-kit/src/cli/connections.ts at line 928.
What does connectToD1() call?
connectToD1() calls 2 function(s): prepareSqliteParams, queries.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free