Skip to content

Commit 479ca6a

Browse files
committed
Add more bugfixes
1 parent f202f08 commit 479ca6a

File tree

8 files changed

+34
-8
lines changed

8 files changed

+34
-8
lines changed

changelogs/drizzle-orm/0.23.6.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
11
- 🐛 Fixed referencing the selected aliased field in the same query
22
- 🐛 Fixed decimal column data type in MySQL
33
- 🐛 Fixed mode autocompletion for integer column in SQLite
4+
- 🐛 Fixed extra parentheses in the generated SQL for the `IN` operator (#383)
5+
- 🐛 Fixed regression in `pgEnum.enumValues` type (#358)
6+
- 🎉 Allowed readonly arrays to be passed to `pgEnum`

drizzle-orm/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@
126126
"sql.js": "^1.8.0",
127127
"sqlite3": "^5.1.2",
128128
"vite-tsconfig-paths": "^4.0.7",
129-
"vitest": "^0.29.8"
129+
"vitest": "^0.29.8",
130+
"zod": "^3.20.2"
130131
}
131132
}

drizzle-orm/src/mysql-core/columns/enum.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,9 @@ export class MySqlEnumColumnBuilder<T extends ColumnBuilderBaseConfig>
4242
}
4343

4444
export class MySqlEnumColumn<T extends ColumnBaseConfig>
45-
extends MySqlColumn<MySqlEnumColumnHKT, T, { values: string[] }>
45+
extends MySqlColumn<MySqlEnumColumnHKT, T, { values: readonly string[] }>
4646
{
47-
readonly values: string[] = this.config.values;
47+
readonly values: readonly string[] = this.config.values;
4848

4949
getSQLType(): string {
5050
return `enum(${this.values.map((value) => `'${value}'`).join(',')})`;
@@ -53,8 +53,9 @@ export class MySqlEnumColumn<T extends ColumnBaseConfig>
5353

5454
export function mysqlEnum<TName extends string, U extends string, T extends Readonly<[U, ...U[]]>>(
5555
name: TName,
56-
values: Writable<T>,
57-
): MySqlEnumColumnBuilderInitial<TName, Writable<T>> {
56+
values: T | Writable<T>,
57+
): MySqlEnumColumnBuilderInitial<TName, Writable<T>>;
58+
export function mysqlEnum(name: string, values: string[]) {
5859
if (values.length === 0) throw Error(`You have an empty array for "${name}" enum values`);
5960

6061
return new MySqlEnumColumnBuilder(name, values);

drizzle-orm/src/pg-core/columns/enum.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ export interface PgEnum<TValues extends [string, ...string[]]> {
2727
<TName extends string>(name: TName): PgEnumColumnBuilderInitial<TName, TValues>;
2828

2929
readonly enumName: string;
30-
readonly enumValues: string[];
30+
readonly enumValues: TValues;
3131
/** @internal */
3232
[isPgEnumSym]: true;
3333
}
@@ -71,7 +71,7 @@ export class PgEnumColumn<T extends ColumnBaseConfig> extends PgColumn<PgEnumCol
7171
// Gratitude to zod for the enum function types
7272
export function pgEnum<U extends string, T extends Readonly<[U, ...U[]]>>(
7373
enumName: string,
74-
values: Writable<T>,
74+
values: T | Writable<T>,
7575
): PgEnum<Writable<T>> {
7676
const enumInstance = Object.assign(
7777
<TName extends string>(name: TName): PgEnumColumnBuilderInitial<TName, Writable<T>> =>

drizzle-orm/src/sql/expressions/conditions.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ export function inArray(
172172
if (values.length === 0) {
173173
throw new Error('inArray requires at least one value');
174174
}
175-
return sql`${column} in (${values.map((v) => bindIfParam(v, column))})`;
175+
return sql`${column} in ${values.map((v) => bindIfParam(v, column))}`;
176176
}
177177

178178
return sql`${column} in ${bindIfParam(values, column)}`;

drizzle-orm/type-tests/mysql/tables.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -365,3 +365,9 @@ Expect<
365365
col1: decimal('col1').default('1'),
366366
});
367367
}
368+
369+
{
370+
const a = ['a', 'b', 'c'] as const;
371+
const test1 = mysqlEnum('test', a);
372+
const test2 = mysqlEnum('test', ['a', 'b', 'c']);
373+
}

drizzle-orm/type-tests/pg/tables.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import type { Equal } from 'type-tests/utils';
22
import { Expect } from 'type-tests/utils';
3+
import { z } from 'zod';
34
import { eq, gt } from '~/expressions';
45
import {
56
bigint,
@@ -749,3 +750,14 @@ await db.refreshMaterializedView(newYorkers2).withNoData().concurrently();
749750
});
750751
Expect<Equal<{ col1: string }, InferModel<typeof test>>>;
751752
}
753+
754+
{
755+
const a = ['a', 'b', 'c'] as const;
756+
const b = pgEnum('test', a);
757+
const c = z.enum(b.enumValues);
758+
}
759+
760+
{
761+
const b = pgEnum('test', ['a', 'b', 'c']);
762+
const c = z.enum(b.enumValues);
763+
}

pnpm-lock.yaml

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)