Skip to content

Commit 3f4a6aa

Browse files
fix(drizzle-zod): add generated column type to zod ts schema type (#4554)
* fix(drizzle-zod): add generated column type to zod ts schema type * Update version --------- Co-authored-by: AndriiSherman <[email protected]>
1 parent 8e9e8ed commit 3f4a6aa

File tree

7 files changed

+16
-8
lines changed

7 files changed

+16
-8
lines changed

changelogs/drizzle-zod/0.8.2.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
- [[BUG]: drizzle-zod: incorrect inferred types for columns .generatedAlwaysAsIdentity()](https://github.com/drizzle-team/drizzle-orm/issues/4553)

drizzle-zod/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "drizzle-zod",
3-
"version": "0.8.1",
3+
"version": "0.8.2",
44
"description": "Generate Zod schemas from Drizzle ORM schemas",
55
"type": "module",
66
"scripts": {

drizzle-zod/src/schema.types.internal.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,11 @@ export type BuildSchema<
4545
> = z.ZodObject<
4646
Simplify<
4747
{
48-
[K in keyof TColumns as ColumnIsGeneratedAlwaysAs<TColumns[K]> extends true ? never : K]: TColumns[K] extends
49-
infer TColumn extends Column
48+
[
49+
K in keyof TColumns as ColumnIsGeneratedAlwaysAs<TColumns[K]> extends true ? TType extends 'select' ? K
50+
: never
51+
: K
52+
]: TColumns[K] extends infer TColumn extends Column
5053
? IsRefinementDefined<TRefinements, K> extends true
5154
? Assume<HandleRefinement<TType, TRefinements[K & keyof TRefinements], TColumn>, z.ZodType>
5255
: HandleColumn<TType, TColumn, TCoerce>

drizzle-zod/tests/mysql.test.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,12 @@ const textSchema = z.string().max(CONSTANTS.INT16_UNSIGNED_MAX);
1515
test('table - select', (t) => {
1616
const table = mysqlTable('test', {
1717
id: serial().primaryKey(),
18+
generated: int().generatedAlwaysAs(1).notNull(),
1819
name: text().notNull(),
1920
});
2021

2122
const result = createSelectSchema(table);
22-
const expected = z.object({ id: serialNumberModeSchema, name: textSchema });
23+
const expected = z.object({ id: serialNumberModeSchema, generated: intSchema, name: textSchema });
2324
expectSchemaShape(t, expected).from(result);
2425
Expect<Equal<typeof result, typeof expected>>();
2526
});

drizzle-zod/tests/pg.test.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,13 @@ const textSchema = z.string();
2525

2626
test('table - select', (t) => {
2727
const table = pgTable('test', {
28-
id: serial().primaryKey(),
28+
id: integer().primaryKey(),
29+
generated: integer().generatedAlwaysAsIdentity(),
2930
name: text().notNull(),
3031
});
3132

3233
const result = createSelectSchema(table);
33-
const expected = z.object({ id: integerSchema, name: textSchema });
34+
const expected = z.object({ id: integerSchema, generated: integerSchema, name: textSchema });
3435
expectSchemaShape(t, expected).from(result);
3536
Expect<Equal<typeof result, typeof expected>>();
3637
});

drizzle-zod/tests/singlestore.test.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,12 @@ const textSchema = z.string().max(CONSTANTS.INT16_UNSIGNED_MAX);
1515
test('table - select', (t) => {
1616
const table = singlestoreTable('test', {
1717
id: serial().primaryKey(),
18+
generated: int().generatedAlwaysAs(1).notNull(),
1819
name: text().notNull(),
1920
});
2021

2122
const result = createSelectSchema(table);
22-
const expected = z.object({ id: serialNumberModeSchema, name: textSchema });
23+
const expected = z.object({ id: serialNumberModeSchema, generated: intSchema, name: textSchema });
2324
expectSchemaShape(t, expected).from(result);
2425
Expect<Equal<typeof result, typeof expected>>();
2526
});

drizzle-zod/tests/sqlite.test.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,12 @@ const textSchema = z.string();
1414
test('table - select', (t) => {
1515
const table = sqliteTable('test', {
1616
id: int().primaryKey({ autoIncrement: true }),
17+
generated: int().generatedAlwaysAs(1).notNull(),
1718
name: text().notNull(),
1819
});
1920

2021
const result = createSelectSchema(table);
21-
const expected = z.object({ id: intSchema, name: textSchema });
22+
const expected = z.object({ id: intSchema, generated: intSchema, name: textSchema });
2223
expectSchemaShape(t, expected).from(result);
2324
Expect<Equal<typeof result, typeof expected>>();
2425
});

0 commit comments

Comments
 (0)