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

generateMySqlSnapshot() — drizzle-orm Function Reference

Architecture documentation for the generateMySqlSnapshot() function in mysqlSerializer.ts from the drizzle-orm codebase.

Entity Profile

Dependency Diagram

graph TD
  d8d7539a_23af_4a3d_91f6_f60bb60e4c38["generateMySqlSnapshot()"]
  1f633f0f_d981_8483_0b8f_fbabf0333ced["mysqlSerializer.ts"]
  d8d7539a_23af_4a3d_91f6_f60bb60e4c38 -->|defined in| 1f633f0f_d981_8483_0b8f_fbabf0333ced
  0b2b83dd_9eb0_046b_3c8a_c644b899f7d0["generateMySQLDrizzleJson()"]
  0b2b83dd_9eb0_046b_3c8a_c644b899f7d0 -->|calls| d8d7539a_23af_4a3d_91f6_f60bb60e4c38
  0f6bcec9_496e_3388_a2d6_2f3af1e12d53["getColumnCasing()"]
  d8d7539a_23af_4a3d_91f6_f60bb60e4c38 -->|calls| 0f6bcec9_496e_3388_a2d6_2f3af1e12d53
  b330e594_2e4f_be5c_50e0_07641c420054["handleEnumType()"]
  d8d7539a_23af_4a3d_91f6_f60bb60e4c38 -->|calls| b330e594_2e4f_be5c_50e0_07641c420054
  5de2ec9b_64d7_f004_04c1_e08f9695c862["sqlToStr()"]
  d8d7539a_23af_4a3d_91f6_f60bb60e4c38 -->|calls| 5de2ec9b_64d7_f004_04c1_e08f9695c862
  6a0cfd17_5e20_42bb_3596_ae02093b0fda["escapeSingleQuotes()"]
  d8d7539a_23af_4a3d_91f6_f60bb60e4c38 -->|calls| 6a0cfd17_5e20_42bb_3596_ae02093b0fda
  style d8d7539a_23af_4a3d_91f6_f60bb60e4c38 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

drizzle-kit/src/serializer/mysqlSerializer.ts lines 43–541

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,
			primaryKeys,
			uniqueConstraints,
		} = getTableConfig(table);

		const columnsObject: Record<string, Column> = {};
		const indexesObject: Record<string, Index> = {};
		const foreignKeysObject: Record<string, ForeignKey> = {};
		const primaryKeysObject: Record<string, PrimaryKey> = {};
		const uniqueConstraintObject: Record<string, UniqueConstraint> = {};
		const checkConstraintObject: Record<string, CheckConstraint> = {};

		// this object will help to identify same check names
		let checksInTable: Record<string, string[]> = {};

		columns.forEach((column) => {
			const name = getColumnCasing(column, casing);
			const notNull: boolean = column.notNull;
			const sqlType = column.getSQLType();
			const sqlTypeLowered = sqlType.toLowerCase();
			const autoIncrement = typeof (column as any).autoIncrement === 'undefined'
				? false
				: (column as any).autoIncrement;

			const generated = column.generated;

			const columnToSet: Column = {
				name,
				type: sqlType.startsWith('enum') ? handleEnumType(sqlType) : sqlType,
				primaryKey: false,
				// If field is autoincrement it's notNull by default
				// notNull: autoIncrement ? true : notNull,
				notNull,
				autoincrement: autoIncrement,
				onUpdate: (column as any).hasOnUpdateNow,
				generated: generated
					? {
						as: is(generated.as, SQL)
							? dialect.sqlToQuery(generated.as as SQL).sql
							: typeof generated.as === 'function'
							? dialect.sqlToQuery(generated.as() as SQL).sql
							: (generated.as as any),
						type: generated.mode ?? 'stored',
					}
					: undefined,
			};

			if (column.primary) {
				primaryKeysObject[`${tableName}_${name}`] = {
					name: `${tableName}_${name}`,
					columns: [name],
				};
			}

			if (column.isUnique) {
				const existingUnique = uniqueConstraintObject[column.uniqueName!];
				if (typeof existingUnique !== 'undefined') {
					console.log(
						`\n${
							withStyle.errorWarning(`We\'ve found duplicated unique constraint names in ${
								chalk.underline.blue(
									tableName,
								)
							} table. 

Domain

Subdomains

Frequently Asked Questions

What does generateMySqlSnapshot() do?
generateMySqlSnapshot() is a function in the drizzle-orm codebase, defined in drizzle-kit/src/serializer/mysqlSerializer.ts.
Where is generateMySqlSnapshot() defined?
generateMySqlSnapshot() is defined in drizzle-kit/src/serializer/mysqlSerializer.ts at line 43.
What does generateMySqlSnapshot() call?
generateMySqlSnapshot() calls 4 function(s): escapeSingleQuotes, getColumnCasing, handleEnumType, sqlToStr.
What calls generateMySqlSnapshot()?
generateMySqlSnapshot() is called by 1 function(s): generateMySQLDrizzleJson.

Analyze Your Own Codebase

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

Try Supermodel Free