Home / Function/ connectToLibSQL() — drizzle-orm Function Reference

connectToLibSQL() — drizzle-orm Function Reference

Architecture documentation for the connectToLibSQL() function in connections.ts from the drizzle-orm codebase.

Entity Profile

Dependency Diagram

graph TD
  66435e24_fdd6_97b9_c062_1bb68ffdb73d["connectToLibSQL()"]
  4e02c2bb_54a8_1500_813e_2cafd1ad4f59["connections.ts"]
  66435e24_fdd6_97b9_c062_1bb68ffdb73d -->|defined in| 4e02c2bb_54a8_1500_813e_2cafd1ad4f59
  7aefe3aa_a868_e43f_09eb_fcf0004526d1["checkPackage()"]
  66435e24_fdd6_97b9_c062_1bb68ffdb73d -->|calls| 7aefe3aa_a868_e43f_09eb_fcf0004526d1
  a7e5f36c_3b28_1510_a488_f9186cbffe48["normaliseSQLiteUrl()"]
  66435e24_fdd6_97b9_c062_1bb68ffdb73d -->|calls| a7e5f36c_3b28_1510_a488_f9186cbffe48
  414ec951_dc1c_5030_4563_03e41560a793["prepareSqliteParams()"]
  66435e24_fdd6_97b9_c062_1bb68ffdb73d -->|calls| 414ec951_dc1c_5030_4563_03e41560a793
  style 66435e24_fdd6_97b9_c062_1bb68ffdb73d fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

drizzle-kit/src/cli/connections.ts lines 1281–1359

export const connectToLibSQL = async (credentials: LibSQLCredentials): Promise<
	& LibSQLDB
	& {
		packageName: '@libsql/client';
		migrate: (config: MigrationConfig) => Promise<void>;
		proxy: Proxy;
		transactionProxy: TransactionProxy;
	}
> => {
	if (await checkPackage('@libsql/client')) {
		const { createClient } = await import('@libsql/client');
		const { drizzle } = await import('drizzle-orm/libsql');
		const { migrate } = await import('drizzle-orm/libsql/migrator');

		const client = createClient({
			url: normaliseSQLiteUrl(credentials.url, 'libsql'),
			authToken: credentials.authToken,
		});
		const drzl = drizzle(client);
		const migrateFn = async (config: MigrationConfig) => {
			return migrate(drzl, config);
		};

		const db: LibSQLDB = {
			query: async <T>(sql: string, params?: any[]) => {
				const res = await client.execute({ sql, args: params || [] });
				return res.rows as T[];
			},
			run: async (query: string) => {
				await client.execute(query);
			},
			batchWithPragma: async (queries: string[]) => {
				await client.migrate(queries);
			},
		};

		type Transaction = Awaited<ReturnType<typeof client.transaction>>;

		const proxy = async (params: ProxyParams) => {
			const preparedParams = prepareSqliteParams(params.params || []);
			const result = await client.execute({
				sql: params.sql,
				args: preparedParams,
			});

			if (params.mode === 'array') {
				return result.rows.map((row) => Object.values(row));
			} else {
				return result.rows;
			}
		};

		const transactionProxy: TransactionProxy = async (queries) => {
			const results: (any[] | Error)[] = [];
			let transaction: Transaction | null = null;
			try {
				transaction = await client.transaction();
				for (const query of queries) {
					const result = await transaction.execute(query.sql);
					results.push(result.rows);
				}
				await transaction.commit();
			} catch (error) {
				results.push(error as Error);
				await transaction?.rollback();
			} finally {
				transaction?.close();
			}
			return results;
		};

		return { ...db, packageName: '@libsql/client', proxy, transactionProxy, migrate: migrateFn };
	}

	console.log(
		"Please install '@libsql/client' for Drizzle Kit to connect to LibSQL databases",
	);
	process.exit(1);
};

Domain

Subdomains

Frequently Asked Questions

What does connectToLibSQL() do?
connectToLibSQL() is a function in the drizzle-orm codebase, defined in drizzle-kit/src/cli/connections.ts.
Where is connectToLibSQL() defined?
connectToLibSQL() is defined in drizzle-kit/src/cli/connections.ts at line 1281.
What does connectToLibSQL() call?
connectToLibSQL() calls 3 function(s): checkPackage, normaliseSQLiteUrl, prepareSqliteParams.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free