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

defaultForColumn() — drizzle-orm Function Reference

Architecture documentation for the defaultForColumn() function in gelSerializer.ts from the drizzle-orm codebase.

Entity Profile

Dependency Diagram

graph TD
  b6d9c437_c4d6_d6c1_d2eb_613b745761cd["defaultForColumn()"]
  33990744_4141_72e3_2ae9_3c695bf71d75["gelSerializer.ts"]
  b6d9c437_c4d6_d6c1_d2eb_613b745761cd -->|defined in| 33990744_4141_72e3_2ae9_3c695bf71d75
  4e4d6d58_9452_ce92_00b8_77a3b8ffd541["fromDatabase()"]
  4e4d6d58_9452_ce92_00b8_77a3b8ffd541 -->|calls| b6d9c437_c4d6_d6c1_d2eb_613b745761cd
  style b6d9c437_c4d6_d6c1_d2eb_613b745761cd fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

drizzle-kit/src/serializer/gelSerializer.ts lines 1537–1592

const defaultForColumn = (column: any, internals: GelKitInternals, tableName: string) => {
	const columnName = column.column_name;
	const isArray = internals?.tables[tableName]?.columns[columnName]?.isArray ?? false;

	if (column.column_default === null || column.column_default === undefined) return undefined;

	if (column.column_default.endsWith('[]')) {
		column.column_default = column.column_default.slice(0, -2);
	}

	column.column_default = column.column_default.replace(/::(.*?)(?<![^\w"])(?=$)/, '');

	const columnDefaultAsString: string = column.column_default.toString();

	if (isArray) {
		return columnDefaultAsString;
	}

	if (['integer', 'smallint', 'bigint', 'double precision', 'real'].includes(column.data_type)) {
		if (/^-?[\d.]+(?:e-?\d+)?$/.test(columnDefaultAsString)) {
			return Number(columnDefaultAsString);
		} else {
			if (typeof internals!.tables![tableName] === 'undefined') {
				internals!.tables![tableName] = {
					columns: {
						[columnName]: {
							isDefaultAnExpression: true,
						},
					},
				};
			} else {
				if (typeof internals!.tables![tableName]!.columns[columnName] === 'undefined') {
					internals!.tables![tableName]!.columns[columnName] = {
						isDefaultAnExpression: true,
					};
				} else {
					internals!.tables![tableName]!.columns[columnName]!.isDefaultAnExpression = true;
				}
			}
			return columnDefaultAsString;
		}
	} else if (column.data_type.includes('numeric')) {
		// if numeric(1,1) and used '99' -> psql stores like '99'::numeric
		return columnDefaultAsString.includes("'") ? columnDefaultAsString : `'${columnDefaultAsString}'`;
	} else if (column.data_type === 'json' || column.data_type === 'jsonb') {
		return `'${columnDefaultAsString}'`;
	} else if (column.data_type === 'boolean') {
		return column.column_default === 'true';
	} else if (columnDefaultAsString === 'NULL') {
		return `NULL`;
	} else if (columnDefaultAsString.startsWith("'") && columnDefaultAsString.endsWith("'")) {
		return columnDefaultAsString;
	} else {
		return `${columnDefaultAsString.replace(/\\/g, '`\\')}`;
	}
};

Domain

Subdomains

Called By

Frequently Asked Questions

What does defaultForColumn() do?
defaultForColumn() is a function in the drizzle-orm codebase, defined in drizzle-kit/src/serializer/gelSerializer.ts.
Where is defaultForColumn() defined?
defaultForColumn() is defined in drizzle-kit/src/serializer/gelSerializer.ts at line 1537.
What calls defaultForColumn()?
defaultForColumn() is called by 1 function(s): fromDatabase.

Analyze Your Own Codebase

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

Try Supermodel Free