MCPcopy
hub / github.com/drizzle-team/drizzle-orm / defaultForColumn

Function defaultForColumn

drizzle-kit/src/serializer/gelSerializer.ts:1537–1592  ·  view source on GitHub ↗
(column: any, internals: GelKitInternals, tableName: string)

Source from the content-addressed store, hash-verified

1535};
1536
1537const defaultForColumn = (column: any, internals: GelKitInternals, tableName: string) => {
1538 const columnName = column.column_name;
1539 const isArray = internals?.tables[tableName]?.columns[columnName]?.isArray ?? false;
1540
1541 if (column.column_default === null || column.column_default === undefined) return undefined;
1542
1543 if (column.column_default.endsWith('[]')) {
1544 column.column_default = column.column_default.slice(0, -2);
1545 }
1546
1547 column.column_default = column.column_default.replace(/::(.*?)(?<![^\w"])(?=$)/, '');
1548
1549 const columnDefaultAsString: string = column.column_default.toString();
1550
1551 if (isArray) {
1552 return columnDefaultAsString;
1553 }
1554
1555 if (['integer', 'smallint', 'bigint', 'double precision', 'real'].includes(column.data_type)) {
1556 if (/^-?[\d.]+(?:e-?\d+)?$/.test(columnDefaultAsString)) {
1557 return Number(columnDefaultAsString);
1558 } else {
1559 if (typeof internals!.tables![tableName] === 'undefined') {
1560 internals!.tables![tableName] = {
1561 columns: {
1562 [columnName]: {
1563 isDefaultAnExpression: true,
1564 },
1565 },
1566 };
1567 } else {
1568 if (typeof internals!.tables![tableName]!.columns[columnName] === 'undefined') {
1569 internals!.tables![tableName]!.columns[columnName] = {
1570 isDefaultAnExpression: true,
1571 };
1572 } else {
1573 internals!.tables![tableName]!.columns[columnName]!.isDefaultAnExpression = true;
1574 }
1575 }
1576 return columnDefaultAsString;
1577 }
1578 } else if (column.data_type.includes('numeric')) {
1579 // if numeric(1,1) and used '99' -> psql stores like '99'::numeric
1580 return columnDefaultAsString.includes("'") ? columnDefaultAsString : `'${columnDefaultAsString}'`;
1581 } else if (column.data_type === 'json' || column.data_type === 'jsonb') {
1582 return `'${columnDefaultAsString}'`;
1583 } else if (column.data_type === 'boolean') {
1584 return column.column_default === 'true';
1585 } else if (columnDefaultAsString === 'NULL') {
1586 return `NULL`;
1587 } else if (columnDefaultAsString.startsWith("'") && columnDefaultAsString.endsWith("'")) {
1588 return columnDefaultAsString;
1589 } else {
1590 return `${columnDefaultAsString.replace(/\\/g, '`\\')}`;
1591 }
1592};
1593
1594const getColumnsInfoQuery = ({ schema, table, db }: { schema: string; table: string; db: DB }) => {

Callers 2

pgSerializer.tsFile · 0.85
fromDatabaseFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected