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

mysqlSerializer.ts — drizzle-orm Source File

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

File typescript DrizzleKit SnapshotSerializer 25 imports 3 dependents 5 functions

Entity Profile

Dependency Diagram

graph LR
  1f633f0f_d981_8483_0b8f_fbabf0333ced["mysqlSerializer.ts"]
  502fb53b_89d2_ec40_3a24_f05850833f68["outputs.ts"]
  1f633f0f_d981_8483_0b8f_fbabf0333ced --> 502fb53b_89d2_ec40_3a24_f05850833f68
  217e2cbd_4fb7_ceab_251c_5733ece08a8f["views.ts"]
  1f633f0f_d981_8483_0b8f_fbabf0333ced --> 217e2cbd_4fb7_ceab_251c_5733ece08a8f
  09093721_c406_7222_9827_ed44d69a25bd["IntrospectStage"]
  1f633f0f_d981_8483_0b8f_fbabf0333ced --> 09093721_c406_7222_9827_ed44d69a25bd
  520362d9_670d_b6d8_02b1_d2de488c5e21["IntrospectStatus"]
  1f633f0f_d981_8483_0b8f_fbabf0333ced --> 520362d9_670d_b6d8_02b1_d2de488c5e21
  f2ee16c1_40e6_43f3_15b2_c391a3ac170b["mysqlSchema.ts"]
  1f633f0f_d981_8483_0b8f_fbabf0333ced --> f2ee16c1_40e6_43f3_15b2_c391a3ac170b
  db1af279_1679_84af_1e53_0bb821c5aa1e["CheckConstraint"]
  1f633f0f_d981_8483_0b8f_fbabf0333ced --> db1af279_1679_84af_1e53_0bb821c5aa1e
  2c8e6825_d659_16ea_af7a_522f31b91540["Column"]
  1f633f0f_d981_8483_0b8f_fbabf0333ced --> 2c8e6825_d659_16ea_af7a_522f31b91540
  ad771e19_00c1_26c8_c5f8_3edc0c623fea["ForeignKey"]
  1f633f0f_d981_8483_0b8f_fbabf0333ced --> ad771e19_00c1_26c8_c5f8_3edc0c623fea
  64501bef_09a5_1e94_0e0a_15a28262db02["Index"]
  1f633f0f_d981_8483_0b8f_fbabf0333ced --> 64501bef_09a5_1e94_0e0a_15a28262db02
  0d278f98_433a_d89b_46fa_70b59e780ebe["MySqlKitInternals"]
  1f633f0f_d981_8483_0b8f_fbabf0333ced --> 0d278f98_433a_d89b_46fa_70b59e780ebe
  4dfa8fd0_46f4_3013_c18d_b486cff13b75["MySqlSchemaInternal"]
  1f633f0f_d981_8483_0b8f_fbabf0333ced --> 4dfa8fd0_46f4_3013_c18d_b486cff13b75
  84587d26_b8cd_b303_0593_3f9c9b051e01["PrimaryKey"]
  1f633f0f_d981_8483_0b8f_fbabf0333ced --> 84587d26_b8cd_b303_0593_3f9c9b051e01
  9b983cca_d8cf_f392_5545_aab8e936bcfe["Table"]
  1f633f0f_d981_8483_0b8f_fbabf0333ced --> 9b983cca_d8cf_f392_5545_aab8e936bcfe
  f304fca3_008f_3fcc_5958_8d6c00dd13e6["UniqueConstraint"]
  1f633f0f_d981_8483_0b8f_fbabf0333ced --> f304fca3_008f_3fcc_5958_8d6c00dd13e6
  style 1f633f0f_d981_8483_0b8f_fbabf0333ced fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import chalk from 'chalk';
import { getTableName, is, SQL } from 'drizzle-orm';
import {
	AnyMySqlTable,
	getTableConfig,
	getViewConfig,
	MySqlColumn,
	MySqlDialect,
	MySqlView,
	type PrimaryKey as PrimaryKeyORM,
	uniqueKeyName,
} from 'drizzle-orm/mysql-core';
import { RowDataPacket } from 'mysql2/promise';
import { CasingType } from 'src/cli/validations/common';
import { withStyle } from '../cli/validations/outputs';
import { IntrospectStage, IntrospectStatus } from '../cli/views';
import {
	CheckConstraint,
	Column,
	ForeignKey,
	Index,
	MySqlKitInternals,
	MySqlSchemaInternal,
	PrimaryKey,
	Table,
	UniqueConstraint,
	View,
} from '../serializer/mysqlSchema';
import { type DB, escapeSingleQuotes } from '../utils';
import { getColumnCasing, sqlToStr } from './utils';

export const indexName = (tableName: string, columns: string[]) => {
	return `${tableName}_${columns.join('_')}_index`;
};

const handleEnumType = (type: string) => {
	let str = type.split('(')[1];
	str = str.substring(0, str.length - 1);
	const values = str.split(',').map((v) => `'${escapeSingleQuotes(v.substring(1, v.length - 1))}'`);
	return `enum(${values.join(',')})`;
};

export const generateMySqlSnapshot = (
	tables: AnyMySqlTable[],
	views: MySqlView[],
	casing: CasingType | undefined,
): MySqlSchemaInternal => {
	const dialect = new MySqlDialect({ casing });
	const result: Record<string, Table> = {};
	const resultViews: Record<string, View> = {};
	const internal: MySqlKitInternals = { tables: {}, indexes: {} };

	for (const table of tables) {
		const {
			name: tableName,
			columns,
			indexes,
			foreignKeys,
			schema,
			checks,
// ... (940 more lines)

Domain

Subdomains

Frequently Asked Questions

What does mysqlSerializer.ts do?
mysqlSerializer.ts is a source file in the drizzle-orm codebase, written in typescript. It belongs to the DrizzleKit domain, SnapshotSerializer subdomain.
What functions are defined in mysqlSerializer.ts?
mysqlSerializer.ts defines 5 function(s): clearDefaults, fromDatabase, generateMySqlSnapshot, handleEnumType, indexName.
What does mysqlSerializer.ts depend on?
mysqlSerializer.ts imports 25 module(s): CheckConstraint, Column, ForeignKey, Index, IntrospectStage, IntrospectStatus, MySqlKitInternals, MySqlSchemaInternal, and 17 more.
What files import mysqlSerializer.ts?
mysqlSerializer.ts is imported by 3 file(s): api.ts, introspect.ts, mysqlIntrospect.ts.
Where is mysqlSerializer.ts in the architecture?
mysqlSerializer.ts is located at drizzle-kit/src/serializer/mysqlSerializer.ts (domain: DrizzleKit, subdomain: SnapshotSerializer, directory: drizzle-kit/src/serializer).

Analyze Your Own Codebase

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

Try Supermodel Free