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

libSqlPushUtils.ts — drizzle-orm Source File

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

File typescript DrizzleKit CLIWorkflow 13 imports 1 dependents 3 functions

Entity Profile

Dependency Diagram

graph LR
  0232777b_2a7f_2d05_d5d8_ae34939c6599["libSqlPushUtils.ts"]
  03c276d3_0efe_66e2_9ba9_e67edbf29418["sqliteSchema.ts"]
  0232777b_2a7f_2d05_d5d8_ae34939c6599 --> 03c276d3_0efe_66e2_9ba9_e67edbf29418
  5242f430_2ed9_6469_918b_4cb42706b913["SQLiteSchemaInternal"]
  0232777b_2a7f_2d05_d5d8_ae34939c6599 --> 5242f430_2ed9_6469_918b_4cb42706b913
  1906f782_c6ab_facd_3040_fbb6a08a7353["SQLiteSchemaSquashed"]
  0232777b_2a7f_2d05_d5d8_ae34939c6599 --> 1906f782_c6ab_facd_3040_fbb6a08a7353
  fe4174c7_3b9c_5b26_98a0_b2395ca21939["sqlgenerator.ts"]
  0232777b_2a7f_2d05_d5d8_ae34939c6599 --> fe4174c7_3b9c_5b26_98a0_b2395ca21939
  01959b95_70b4_ccae_6c93_53d172a9e0cc["CreateSqliteIndexConvertor"]
  0232777b_2a7f_2d05_d5d8_ae34939c6599 --> 01959b95_70b4_ccae_6c93_53d172a9e0cc
  f532f7a9_3781_5a3c_9695_e62bd56cabd7["fromJson"]
  0232777b_2a7f_2d05_d5d8_ae34939c6599 --> f532f7a9_3781_5a3c_9695_e62bd56cabd7
  e496d264_ffa3_db83_0260_fdca9d4f91a7["LibSQLModifyColumn"]
  0232777b_2a7f_2d05_d5d8_ae34939c6599 --> e496d264_ffa3_db83_0260_fdca9d4f91a7
  49216312_c8e3_45dd_dd97_3e5de216bb55["SQLiteCreateTableConvertor"]
  0232777b_2a7f_2d05_d5d8_ae34939c6599 --> 49216312_c8e3_45dd_dd97_3e5de216bb55
  49ad24d5_d2f1_3d7f_af9f_96f8032a0d15["SQLiteDropTableConvertor"]
  0232777b_2a7f_2d05_d5d8_ae34939c6599 --> 49ad24d5_d2f1_3d7f_af9f_96f8032a0d15
  894a9cd3_5326_54f3_7a32_bc742faa5d2d["SqliteRenameTableConvertor"]
  0232777b_2a7f_2d05_d5d8_ae34939c6599 --> 894a9cd3_5326_54f3_7a32_bc742faa5d2d
  0f00c7dd_5eba_f1f8_c559_a99431086500["chalk"]
  0232777b_2a7f_2d05_d5d8_ae34939c6599 --> 0f00c7dd_5eba_f1f8_c559_a99431086500
  76cb6b0b_4692_581e_e6e4_769d23792713["jsonStatements"]
  0232777b_2a7f_2d05_d5d8_ae34939c6599 --> 76cb6b0b_4692_581e_e6e4_769d23792713
  96cd5198_cc88_1f8f_6667_aa481b3b3517["utils"]
  0232777b_2a7f_2d05_d5d8_ae34939c6599 --> 96cd5198_cc88_1f8f_6667_aa481b3b3517
  6219550e_1686_ca7a_0d96_0838fb90e7cb["push.ts"]
  6219550e_1686_ca7a_0d96_0838fb90e7cb --> 0232777b_2a7f_2d05_d5d8_ae34939c6599
  style 0232777b_2a7f_2d05_d5d8_ae34939c6599 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import chalk from 'chalk';

import { JsonStatement } from 'src/jsonStatements';
import { findAddedAndRemoved, SQLiteDB } from 'src/utils';
import { SQLiteSchemaInternal, SQLiteSchemaSquashed, SQLiteSquasher } from '../../serializer/sqliteSchema';
import {
	CreateSqliteIndexConvertor,
	fromJson,
	LibSQLModifyColumn,
	SQLiteCreateTableConvertor,
	SQLiteDropTableConvertor,
	SqliteRenameTableConvertor,
} from '../../sqlgenerator';

export const getOldTableName = (
	tableName: string,
	meta: SQLiteSchemaInternal['_meta'],
) => {
	for (const key of Object.keys(meta.tables)) {
		const value = meta.tables[key];
		if (`"${tableName}"` === value) {
			return key.substring(1, key.length - 1);
		}
	}
	return tableName;
};

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 fks = referenceData.map((it) => SQLiteSquasher.unsquashPushFK(it));

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

	// create new table
	statements.push(
		new SQLiteCreateTableConvertor().convert({
			type: 'sqlite_create_table',
			tableName: newTableName,
			columns: tableColumns,
			referenceData: fks,
// ... (296 more lines)

Domain

Subdomains

Frequently Asked Questions

What does libSqlPushUtils.ts do?
libSqlPushUtils.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 libSqlPushUtils.ts?
libSqlPushUtils.ts defines 3 function(s): _moveDataStatements, getOldTableName, libSqlLogSuggestionsAndReturn.
What does libSqlPushUtils.ts depend on?
libSqlPushUtils.ts imports 13 module(s): CreateSqliteIndexConvertor, LibSQLModifyColumn, SQLiteCreateTableConvertor, SQLiteDropTableConvertor, SQLiteSchemaInternal, SQLiteSchemaSquashed, SqliteRenameTableConvertor, chalk, and 5 more.
What files import libSqlPushUtils.ts?
libSqlPushUtils.ts is imported by 1 file(s): push.ts.
Where is libSqlPushUtils.ts in the architecture?
libSqlPushUtils.ts is located at drizzle-kit/src/cli/commands/libSqlPushUtils.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