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

connectToSingleStore() — drizzle-orm Function Reference

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

Entity Profile

Dependency Diagram

graph TD
  a48b207b_f1ec_2aa2_152e_adc4eccb325f["connectToSingleStore()"]
  4e02c2bb_54a8_1500_813e_2cafd1ad4f59["connections.ts"]
  a48b207b_f1ec_2aa2_152e_adc4eccb325f -->|defined in| 4e02c2bb_54a8_1500_813e_2cafd1ad4f59
  af9a4268_0785_3637_690c_5dafd816452a["parseSingleStoreCredentials()"]
  a48b207b_f1ec_2aa2_152e_adc4eccb325f -->|calls| af9a4268_0785_3637_690c_5dafd816452a
  7aefe3aa_a868_e43f_09eb_fcf0004526d1["checkPackage()"]
  a48b207b_f1ec_2aa2_152e_adc4eccb325f -->|calls| 7aefe3aa_a868_e43f_09eb_fcf0004526d1
  style a48b207b_f1ec_2aa2_152e_adc4eccb325f fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

drizzle-kit/src/cli/connections.ts lines 642–716

export const connectToSingleStore = async (
	it: SingleStoreCredentials,
): Promise<{
	db: DB;
	packageName: 'mysql2';
	proxy: Proxy;
	transactionProxy: TransactionProxy;
	database: string;
	migrate: (config: MigrationConfig) => Promise<void>;
}> => {
	const result = parseSingleStoreCredentials(it);

	if (await checkPackage('mysql2')) {
		const { createConnection } = await import('mysql2/promise');
		const { drizzle } = await import('drizzle-orm/singlestore');
		const { migrate } = await import('drizzle-orm/singlestore/migrator');

		const connection = result.url
			? await createConnection(result.url)
			: await createConnection(result.credentials!); // needed for some reason!

		const db = drizzle(connection);
		const migrateFn = async (config: MigrationConfig) => {
			return migrate(db, config);
		};

		await connection.connect();
		const query: DB['query'] = async <T>(
			sql: string,
			params?: any[],
		): Promise<T[]> => {
			const res = await connection.execute(sql, params);
			return res[0] as any;
		};

		const proxy: Proxy = async (params: ProxyParams) => {
			const result = await connection.query({
				sql: params.sql,
				values: params.params,
				rowsAsArray: params.mode === 'array',
			});
			return result[0] as any[];
		};

		const transactionProxy: TransactionProxy = async (queries) => {
			const results: any[] = [];
			try {
				await connection.beginTransaction();
				for (const query of queries) {
					const res = await connection.query(query.sql);
					results.push(res[0]);
				}
				await connection.commit();
			} catch (error) {
				await connection.rollback();
				results.push(error as Error);
			}
			return results;
		};

		return {
			db: { query },
			packageName: 'mysql2',
			proxy,
			transactionProxy,
			database: result.database,
			migrate: migrateFn,
		};
	}

	console.error(
		"To connect to SingleStore database - please install 'mysql2' driver",
	);
	process.exit(1);
};

Domain

Subdomains

Frequently Asked Questions

What does connectToSingleStore() do?
connectToSingleStore() is a function in the drizzle-orm codebase, defined in drizzle-kit/src/cli/connections.ts.
Where is connectToSingleStore() defined?
connectToSingleStore() is defined in drizzle-kit/src/cli/connections.ts at line 642.
What does connectToSingleStore() call?
connectToSingleStore() calls 2 function(s): checkPackage, parseSingleStoreCredentials.

Analyze Your Own Codebase

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

Try Supermodel Free