Skip to content

Commit 8996b35

Browse files
authored
fix(drizzle): number fields in generated schema with defaultValue (#14365)
Fixes #14321 Before, the `columnToCodeConverter` function incorrectly sanitazed numeric values into the `default` argument as a string literal instead of a numeric literal. ``` numberDefault: numeric('number_default', { mode: 'number' }).default("1") -> numberDefault: numeric('number_default', { mode: 'number' }).default(1) ```
1 parent 906a3dc commit 8996b35

File tree

4 files changed

+17
-10
lines changed

4 files changed

+17
-10
lines changed

packages/drizzle/src/postgres/columnToCodeConverter.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ export const columnToCodeConverter: ColumnToCodeConverter = ({
8383
} else if (column.type === 'jsonb') {
8484
sanitizedDefault = `sql\`'${JSON.stringify(column.default)}'::jsonb\``
8585
} else if (column.type === 'numeric') {
86-
sanitizedDefault = `'${column.default}'`
86+
sanitizedDefault = `${column.default}`
8787
} else if (typeof column.default === 'string') {
8888
sanitizedDefault = `${JSON.stringify(column.default)}`
8989
}

packages/drizzle/src/sqlite/columnToCodeConverter.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ export const columnToCodeConverter: ColumnToCodeConverter = ({
115115
} else if (typeof column.default === 'string') {
116116
sanitizedDefault = JSON.stringify(column.default)
117117
} else if (column.type === 'numeric') {
118-
sanitizedDefault = `'${column.default}'`
118+
sanitizedDefault = `${column.default}`
119119
}
120120

121121
code = `${code}.default(${sanitizedDefault})`

test/database/getConfig.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,11 @@ export const getConfig: () => Partial<Config> = () => ({
200200
name: 'number',
201201
type: 'number',
202202
},
203+
{
204+
name: 'numberDefault',
205+
type: 'number',
206+
defaultValue: 1,
207+
},
203208
{
204209
type: 'blocks',
205210
name: 'blocks',

test/database/payload-generated-schema.ts

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,7 @@ export const posts = sqliteTable(
322322
),
323323
text: text('text'),
324324
number: numeric('number', { mode: 'number' }),
325+
numberDefault: numeric('number_default', { mode: 'number' }).default(1),
325326
testNestedGroup_nestedText1: text('test_nested_group_nested_text1'),
326327
testNestedGroup_nestedText2: text('test_nested_group_nested_text2'),
327328
D1_D2_D3_D4: text('d1_d2_d3_d4'),
@@ -544,7 +545,7 @@ export const pg_migrations_my_array_my_sub_array_locales = sqliteTable(
544545
columns.relation3,
545546
columns._locale,
546547
),
547-
uniqueIndex('pg_migrations_my_array_my_sub_array_locales_locale_parent_id_unique').on(
548+
uniqueIndex('pg_migrations_my_array_my_sub_array_locales_locale_parent_id').on(
548549
columns._locale,
549550
columns._parentID,
550551
),
@@ -615,7 +616,7 @@ export const pg_migrations_blocks_my_block_locales = sqliteTable(
615616
},
616617
(columns) => [
617618
index('pg_migrations_blocks_my_block_relation6_idx').on(columns.relation6, columns._locale),
618-
uniqueIndex('pg_migrations_blocks_my_block_locales_locale_parent_id_unique').on(
619+
uniqueIndex('pg_migrations_blocks_my_block_locales_locale_parent_id_uniqu').on(
619620
columns._locale,
620621
columns._parentID,
621622
),
@@ -709,13 +710,14 @@ export const _pg_migrations_v_version_my_array_my_sub_array_locales = sqliteTabl
709710
columns.relation3,
710711
columns._locale,
711712
),
712-
uniqueIndex(
713-
'_pg_migrations_v_version_my_array_my_sub_array_locales_locale_parent_id_unique',
714-
).on(columns._locale, columns._parentID),
713+
uniqueIndex('_pg_migrations_v_version_my_array_my_sub_array_locales_local').on(
714+
columns._locale,
715+
columns._parentID,
716+
),
715717
foreignKey({
716718
columns: [columns['_parentID']],
717719
foreignColumns: [_pg_migrations_v_version_my_array_my_sub_array.id],
718-
name: '_pg_migrations_v_version_my_array_my_sub_array_locales_parent_id_fk',
720+
name: '_pg_migrations_v_version_my_array_my_sub_array_locales_pa_fk',
719721
}).onDelete('cascade'),
720722
],
721723
)
@@ -781,7 +783,7 @@ export const _pg_migrations_v_blocks_my_block_locales = sqliteTable(
781783
},
782784
(columns) => [
783785
index('_pg_migrations_v_blocks_my_block_relation6_idx').on(columns.relation6, columns._locale),
784-
uniqueIndex('_pg_migrations_v_blocks_my_block_locales_locale_parent_id_unique').on(
786+
uniqueIndex('_pg_migrations_v_blocks_my_block_locales_locale_parent_id_un').on(
785787
columns._locale,
786788
columns._parentID,
787789
),
@@ -1765,7 +1767,7 @@ export const users = sqliteTable(
17651767
),
17661768
salt: text('salt'),
17671769
hash: text('hash'),
1768-
loginAttempts: numeric('login_attempts', { mode: 'number' }).default('0'),
1770+
loginAttempts: numeric('login_attempts', { mode: 'number' }).default(0),
17691771
lockUntil: text('lock_until').default(sql`(strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))`),
17701772
},
17711773
(columns) => [

0 commit comments

Comments
 (0)