Home / File/ sqlitePushUtils.ts — drizzle-orm Source File

sqlitePushUtils.ts — drizzle-orm Source File

Architecture documentation for sqlitePushUtils.ts, a typescript file in the drizzle-orm codebase. 13 imports, 3 dependents.

File typescript DrizzleKit CLIWorkflow 13 imports 3 dependents 4 functions

Entity Profile

Dependency Diagram

graph LR
  934183d7_9412_6b03_702c_de0c2903ced3["sqlitePushUtils.ts"]
  03c276d3_0efe_66e2_9ba9_e67edbf29418["sqliteSchema.ts"]
  934183d7_9412_6b03_702c_de0c2903ced3 --> 03c276d3_0efe_66e2_9ba9_e67edbf29418
  5242f430_2ed9_6469_918b_4cb42706b913["SQLiteSchemaInternal"]
  934183d7_9412_6b03_702c_de0c2903ced3 --> 5242f430_2ed9_6469_918b_4cb42706b913
  1906f782_c6ab_facd_3040_fbb6a08a7353["SQLiteSchemaSquashed"]
  934183d7_9412_6b03_702c_de0c2903ced3 --> 1906f782_c6ab_facd_3040_fbb6a08a7353
  fe4174c7_3b9c_5b26_98a0_b2395ca21939["sqlgenerator.ts"]
  934183d7_9412_6b03_702c_de0c2903ced3 --> fe4174c7_3b9c_5b26_98a0_b2395ca21939
  01959b95_70b4_ccae_6c93_53d172a9e0cc["CreateSqliteIndexConvertor"]
  934183d7_9412_6b03_702c_de0c2903ced3 --> 01959b95_70b4_ccae_6c93_53d172a9e0cc
  f532f7a9_3781_5a3c_9695_e62bd56cabd7["fromJson"]
  934183d7_9412_6b03_702c_de0c2903ced3 --> f532f7a9_3781_5a3c_9695_e62bd56cabd7
  49216312_c8e3_45dd_dd97_3e5de216bb55["SQLiteCreateTableConvertor"]
  934183d7_9412_6b03_702c_de0c2903ced3 --> 49216312_c8e3_45dd_dd97_3e5de216bb55
  49ad24d5_d2f1_3d7f_af9f_96f8032a0d15["SQLiteDropTableConvertor"]
  934183d7_9412_6b03_702c_de0c2903ced3 --> 49ad24d5_d2f1_3d7f_af9f_96f8032a0d15
  894a9cd3_5326_54f3_7a32_bc742faa5d2d["SqliteRenameTableConvertor"]
  934183d7_9412_6b03_702c_de0c2903ced3 --> 894a9cd3_5326_54f3_7a32_bc742faa5d2d
  6139f734_8ada_c641_9fec_9a55cfdf376f["jsonStatements.ts"]
  934183d7_9412_6b03_702c_de0c2903ced3 --> 6139f734_8ada_c641_9fec_9a55cfdf376f
  5847e5ae_7b4a_4b02_b68f_883ef88b3c1a["utils.ts"]
  934183d7_9412_6b03_702c_de0c2903ced3 --> 5847e5ae_7b4a_4b02_b68f_883ef88b3c1a
  2b006da9_92ff_ab47_ba6c_8ec3d041f7e3["findAddedAndRemoved"]
  934183d7_9412_6b03_702c_de0c2903ced3 --> 2b006da9_92ff_ab47_ba6c_8ec3d041f7e3
  0f00c7dd_5eba_f1f8_c559_a99431086500["chalk"]
  934183d7_9412_6b03_702c_de0c2903ced3 --> 0f00c7dd_5eba_f1f8_c559_a99431086500
  e668bfef_9125_1ef0_2f94_a0f9605584bd["api.ts"]
  e668bfef_9125_1ef0_2f94_a0f9605584bd --> 934183d7_9412_6b03_702c_de0c2903ced3
  style 934183d7_9412_6b03_702c_de0c2903ced3 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import chalk from 'chalk';

import { SQLiteSchemaInternal, SQLiteSchemaSquashed, SQLiteSquasher } from '../../serializer/sqliteSchema';
import {
	CreateSqliteIndexConvertor,
	fromJson,
	SQLiteCreateTableConvertor,
	SQLiteDropTableConvertor,
	SqliteRenameTableConvertor,
} from '../../sqlgenerator';

import type { JsonStatement } from '../../jsonStatements';
import { findAddedAndRemoved, type SQLiteDB } from '../../utils';

export const _moveDataStatements = (
	tableName: string,
	json: SQLiteSchemaSquashed,
	dataLoss: boolean = false,
) => {
	const statements: string[] = [];

	const newTableName = `__new_${tableName}`;

	// create table statement from a new json2 with proper name
	const tableColumns = Object.values(json.tables[tableName].columns);
	const referenceData = Object.values(json.tables[tableName].foreignKeys);
	const compositePKs = Object.values(
		json.tables[tableName].compositePrimaryKeys,
	).map((it) => SQLiteSquasher.unsquashPK(it));
	const checkConstraints = Object.values(json.tables[tableName].checkConstraints);

	const mappedCheckConstraints: string[] = checkConstraints.map((it) =>
		it.replaceAll(`"${tableName}".`, `"${newTableName}".`)
			.replaceAll(`\`${tableName}\`.`, `\`${newTableName}\`.`)
			.replaceAll(`${tableName}.`, `${newTableName}.`)
			.replaceAll(`'${tableName}'.`, `\`${newTableName}\`.`)
	);

	const fks = referenceData.map((it) => SQLiteSquasher.unsquashPushFK(it));

	// create new table
	statements.push(
		new SQLiteCreateTableConvertor().convert({
			type: 'sqlite_create_table',
			tableName: newTableName,
			columns: tableColumns,
			referenceData: fks,
			compositePKs,
			checkConstraints: mappedCheckConstraints,
		}),
	);

	// move data
	if (!dataLoss) {
		const columns = Object.keys(json.tables[tableName].columns).map(
			(c) => `"${c}"`,
		);

		statements.push(
			`INSERT INTO \`${newTableName}\`(${
// ... (263 more lines)

Domain

Subdomains

Frequently Asked Questions

What does sqlitePushUtils.ts do?
sqlitePushUtils.ts is a source file in the drizzle-orm codebase, written in typescript. It belongs to the DrizzleKit domain, CLIWorkflow subdomain.
What functions are defined in sqlitePushUtils.ts?
sqlitePushUtils.ts defines 4 function(s): _moveDataStatements, getNewTableName, getOldTableName, logSuggestionsAndReturn.
What does sqlitePushUtils.ts depend on?
sqlitePushUtils.ts imports 13 module(s): CreateSqliteIndexConvertor, SQLiteCreateTableConvertor, SQLiteDropTableConvertor, SQLiteSchemaInternal, SQLiteSchemaSquashed, SqliteRenameTableConvertor, chalk, findAddedAndRemoved, and 5 more.
What files import sqlitePushUtils.ts?
sqlitePushUtils.ts is imported by 3 file(s): api.ts, jsonStatements.ts, push.ts.
Where is sqlitePushUtils.ts in the architecture?
sqlitePushUtils.ts is located at drizzle-kit/src/cli/commands/sqlitePushUtils.ts (domain: DrizzleKit, subdomain: CLIWorkflow, directory: drizzle-kit/src/cli/commands).

Analyze Your Own Codebase

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

Try Supermodel Free