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

mysqlPush() — drizzle-orm Function Reference

Architecture documentation for the mysqlPush() function in push.ts from the drizzle-orm codebase.

Entity Profile

Dependency Diagram

graph TD
  8ee7c845_c3a4_fbc5_6447_aab21a1f9ef1["mysqlPush()"]
  6219550e_1686_ca7a_0d96_0838fb90e7cb["push.ts"]
  8ee7c845_c3a4_fbc5_6447_aab21a1f9ef1 -->|defined in| 6219550e_1686_ca7a_0d96_0838fb90e7cb
  a6191ddf_c119_718d_8adb_1cf1f8e385b3["render()"]
  8ee7c845_c3a4_fbc5_6447_aab21a1f9ef1 -->|calls| a6191ddf_c119_718d_8adb_1cf1f8e385b3
  f532f7a9_3781_5a3c_9695_e62bd56cabd7["fromJson()"]
  8ee7c845_c3a4_fbc5_6447_aab21a1f9ef1 -->|calls| f532f7a9_3781_5a3c_9695_e62bd56cabd7
  style 8ee7c845_c3a4_fbc5_6447_aab21a1f9ef1 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

drizzle-kit/src/cli/commands/push.ts lines 27–164

export const mysqlPush = async (
	schemaPath: string | string[],
	credentials: MysqlCredentials,
	tablesFilter: string[],
	strict: boolean,
	verbose: boolean,
	force: boolean,
	casing: CasingType | undefined,
) => {
	const { connectToMySQL } = await import('../connections');
	const { mysqlPushIntrospect } = await import('./mysqlIntrospect');

	const { db, database } = await connectToMySQL(credentials);

	const { schema } = await mysqlPushIntrospect(db, database, tablesFilter);
	const { prepareMySQLPush } = await import('./migrate');

	const statements = await prepareMySQLPush(schemaPath, schema, casing);

	const filteredStatements = mySqlFilterStatements(
		statements.statements ?? [],
		statements.validatedCur,
		statements.validatedPrev,
	);

	try {
		if (filteredStatements.length === 0) {
			render(`[${chalk.blue('i')}] No changes detected`);
		} else {
			const {
				shouldAskForApprove,
				statementsToExecute,
				columnsToRemove,
				tablesToRemove,
				tablesToTruncate,
				infoToPrint,
			} = await mySqlLogSuggestionsAndReturn(
				db,
				filteredStatements,
				statements.validatedCur,
			);

			const filteredSqlStatements = fromJson(filteredStatements, 'mysql');

			const uniqueSqlStatementsToExecute: string[] = [];
			statementsToExecute.forEach((ss) => {
				if (!uniqueSqlStatementsToExecute.includes(ss)) {
					uniqueSqlStatementsToExecute.push(ss);
				}
			});
			const uniqueFilteredSqlStatements: string[] = [];
			filteredSqlStatements.forEach((ss) => {
				if (!uniqueFilteredSqlStatements.includes(ss)) {
					uniqueFilteredSqlStatements.push(ss);
				}
			});

			if (verbose) {
				console.log();
				console.log(
					withStyle.warning('You are about to execute current statements:'),
				);
				console.log();
				console.log(
					[...uniqueSqlStatementsToExecute, ...uniqueFilteredSqlStatements]
						.map((s) => chalk.blue(s))
						.join('\n'),
				);
				console.log();
			}

			if (!force && strict) {
				if (!shouldAskForApprove) {
					const { status, data } = await render(
						new Select(['No, abort', `Yes, I want to execute all statements`]),
					);
					if (data?.index === 0) {
						render(`[${chalk.red('x')}] All changes were aborted`);
						process.exit(0);
					}
				}

Domain

Subdomains

Frequently Asked Questions

What does mysqlPush() do?
mysqlPush() is a function in the drizzle-orm codebase, defined in drizzle-kit/src/cli/commands/push.ts.
Where is mysqlPush() defined?
mysqlPush() is defined in drizzle-kit/src/cli/commands/push.ts at line 27.
What does mysqlPush() call?
mysqlPush() calls 2 function(s): fromJson, render.

Analyze Your Own Codebase

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

Try Supermodel Free