Skip to content

Commit ac7bff7

Browse files
Merge branch 'mysql-update' of github.com:drizzle-team/drizzle-orm into jiti-import-fix
2 parents 67a3509 + 9f686ed commit ac7bff7

65 files changed

Lines changed: 1087 additions & 16714 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

drizzle-orm/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,7 @@
201201
"@arktype/attest": "^0.46.0",
202202
"@aws-sdk/client-rds-data": "^3.914.0",
203203
"@cloudflare/workers-types": "^4.20251004.0",
204+
"@effect/sql-mysql2": "4.0.0-beta.58",
204205
"@effect/sql-pg": "4.0.0-beta.58",
205206
"@electric-sql/pglite": "^0.2.12",
206207
"@libsql/client": "^0.10.0",

drizzle-orm/src/bun-sql/driver.ts

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
import type { SQL } from 'bun';
2+
import type { DrizzleMySqlConfig } from '~/mysql-core/utils.ts';
23
import type { DrizzlePgConfig } from '~/pg-core/utils.ts';
34
import type { AnyRelations, EmptyRelations } from '~/relations.ts';
45
import type { DrizzleConfig } from '~/utils.ts';
5-
import { type BunMySqlDatabase, type BunMySqlDrizzleConfig, drizzle as mysqlConstructor } from './mysql/driver.ts';
6+
import { type BunMySqlDatabase, drizzle as mysqlConstructor } from './mysql/driver.ts';
67
import { type BunSQLDatabase, drizzle as postgresConstructor } from './postgres/driver.ts';
78
import { type BunSQLiteDatabase, drizzle as sqliteConstructor } from './sqlite/driver.ts';
89

@@ -113,41 +114,39 @@ export namespace drizzle {
113114
}
114115

115116
export function mysql<
116-
TSchema extends Record<string, unknown> = Record<string, never>,
117117
TRelations extends AnyRelations = EmptyRelations,
118118
TClient extends SQL = SQL,
119119
>(
120120
...params: [
121121
string,
122122
] | [
123123
string,
124-
BunMySqlDrizzleConfig<TSchema, TRelations>,
124+
DrizzleMySqlConfig<TRelations>,
125125
] | [
126126
(
127-
& BunMySqlDrizzleConfig<TSchema, TRelations>
127+
& DrizzleMySqlConfig<TRelations>
128128
& ({
129129
connection: string | ({ url?: string } & SQL.Options);
130130
} | {
131131
client: TClient;
132132
})
133133
),
134134
]
135-
): BunMySqlDatabase<TSchema, TRelations> & {
135+
): BunMySqlDatabase<TRelations> & {
136136
$client: TClient;
137137
} {
138-
return mysqlConstructor(...params) as BunMySqlDatabase<TSchema, TRelations> & {
138+
return mysqlConstructor(...params) as BunMySqlDatabase<TRelations> & {
139139
$client: TClient;
140140
};
141141
}
142142

143143
export namespace mysql {
144144
export function mock<
145-
TSchema extends Record<string, unknown> = Record<string, never>,
146145
TRelations extends AnyRelations = EmptyRelations,
147-
>(config?: BunMySqlDrizzleConfig<TSchema, TRelations>): BunMySqlDatabase<TSchema, TRelations> & {
146+
>(config?: DrizzleMySqlConfig<TRelations>): BunMySqlDatabase<TRelations> & {
148147
$client: '$client is not available on drizzle.mock()';
149148
} {
150-
return mysqlConstructor.mock(config) as BunMySqlDatabase<TSchema, TRelations> & {
149+
return mysqlConstructor.mock(config) as BunMySqlDatabase<TRelations> & {
151150
$client: '$client is not available on drizzle.mock()';
152151
};
153152
}

drizzle-orm/src/bun-sql/migrator.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ export namespace migrate {
2929
return sqliteMigrator(db, config);
3030
}
3131

32-
export async function mysql<TSchema extends Record<string, unknown>, TRelations extends AnyRelations>(
33-
db: BunMySqlDatabase<TSchema, TRelations>,
32+
export async function mysql<TRelations extends AnyRelations>(
33+
db: BunMySqlDatabase<TRelations>,
3434
config: MigrationConfig,
3535
) {
3636
return mysqlMigrator(db, config);

drizzle-orm/src/bun-sql/mysql/driver.ts

Lines changed: 17 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,80 +1,46 @@
11
/// <reference types="bun-types" />
22

33
import { SQL } from 'bun';
4-
import * as V1 from '~/_relations.ts';
54
import { entityKind } from '~/entity.ts';
6-
import { DrizzleError } from '~/errors.ts';
75
import { DefaultLogger } from '~/logger.ts';
86
import { MySqlDatabase } from '~/mysql-core/db.ts';
97
import { MySqlDialect } from '~/mysql-core/dialect.ts';
10-
import type { Mode } from '~/mysql-core/session.ts';
8+
import type { DrizzleMySqlConfig } from '~/mysql-core/utils.ts';
119
import type { AnyRelations, EmptyRelations } from '~/relations.ts';
12-
import { type DrizzleConfig, jitCompatCheck } from '~/utils.ts';
13-
import type { BunMySqlPreparedQueryHKT, BunMySqlQueryResultHKT } from './session.ts';
10+
import { jitCompatCheck } from '~/utils.ts';
11+
import type { BunMySqlQueryResultHKT } from './session.ts';
1412
import { BunMySqlSession } from './session.ts';
1513

16-
export type BunMySqlDrizzleConfig<
17-
TSchema extends Record<string, unknown> = Record<string, never>,
18-
TRelations extends AnyRelations = EmptyRelations,
19-
> =
20-
& Omit<DrizzleConfig<TSchema, TRelations>, 'schema'>
21-
& ({ schema: TSchema; mode: Mode } | { schema?: undefined; mode?: Mode });
22-
2314
export class BunMySqlDatabase<
24-
TSchema extends Record<string, unknown> = Record<string, never>,
2515
TRelations extends AnyRelations = EmptyRelations,
26-
> extends MySqlDatabase<BunMySqlQueryResultHKT, BunMySqlPreparedQueryHKT, TSchema, TRelations> {
16+
> extends MySqlDatabase<BunMySqlQueryResultHKT, TRelations> {
2717
static override readonly [entityKind]: string = 'BunMySqlDatabase';
2818
}
2919

3020
function construct<
31-
TSchema extends Record<string, unknown> = Record<string, never>,
3221
TRelations extends AnyRelations = EmptyRelations,
3322
>(
3423
client: SQL,
35-
config: BunMySqlDrizzleConfig<TSchema, TRelations> = {},
36-
): BunMySqlDatabase<TSchema, TRelations> & {
24+
config: DrizzleMySqlConfig<TRelations> = {},
25+
): BunMySqlDatabase<TRelations> & {
3726
$client: SQL;
3827
} {
39-
const dialect = new MySqlDialect();
28+
const dialect = new MySqlDialect({
29+
useJitMappers: jitCompatCheck(config.jit),
30+
});
4031
let logger;
4132
if (config.logger === true) {
4233
logger = new DefaultLogger();
4334
} else if (config.logger !== false) {
4435
logger = config.logger;
4536
}
4637

47-
let schema: V1.RelationalSchemaConfig<V1.TablesRelationalConfig> | undefined;
48-
if (config.schema) {
49-
if (config.mode === undefined) {
50-
throw new DrizzleError({
51-
message:
52-
'You need to specify "mode": "planetscale" or "default" when providing a schema. Read more: https://orm.drizzle.team/docs/rqb#modes',
53-
});
54-
}
55-
56-
const tablesConfig = V1.extractTablesRelationalConfig(
57-
config.schema,
58-
V1.createTableRelationsHelpers,
59-
);
60-
schema = {
61-
fullSchema: config.schema,
62-
schema: tablesConfig.tables,
63-
tableNamesMap: tablesConfig.tableNamesMap,
64-
};
65-
}
66-
67-
const mode = config.mode ?? 'default';
68-
6938
const relations = config.relations ?? {} as TRelations;
70-
const session = new BunMySqlSession(client, dialect, relations, schema, {
39+
const session = new BunMySqlSession(client, dialect, relations, {
7140
logger,
72-
mode,
7341
cache: config.cache,
74-
useJitMappers: jitCompatCheck(config.jit),
7542
});
76-
const db = new BunMySqlDatabase(dialect, session, relations, schema as any, mode) as BunMySqlDatabase<
77-
TSchema,
43+
const db = new BunMySqlDatabase(dialect, session, relations) as BunMySqlDatabase<
7844
TRelations
7945
>;
8046
(<any> db).$client = client;
@@ -87,26 +53,25 @@ function construct<
8753
}
8854

8955
export function drizzle<
90-
TSchema extends Record<string, unknown> = Record<string, never>,
9156
TRelations extends AnyRelations = EmptyRelations,
9257
TClient extends SQL = SQL,
9358
>(
9459
...params: [
9560
string,
9661
] | [
9762
string,
98-
BunMySqlDrizzleConfig<TSchema, TRelations>,
63+
DrizzleMySqlConfig<TRelations>,
9964
] | [
10065
(
101-
& BunMySqlDrizzleConfig<TSchema, TRelations>
66+
& DrizzleMySqlConfig<TRelations>
10267
& ({
10368
connection: string | ({ url?: string } & SQL.Options);
10469
} | {
10570
client: TClient;
10671
})
10772
),
10873
]
109-
): BunMySqlDatabase<TSchema, TRelations> & {
74+
): BunMySqlDatabase<TRelations> & {
11075
$client: TClient;
11176
} {
11277
if (typeof params[0] === 'string') {
@@ -118,7 +83,7 @@ export function drizzle<
11883
const { connection, client, ...drizzleConfig } = params[0] as {
11984
connection?: { url?: string } & SQL.Options;
12085
client?: TClient;
121-
} & BunMySqlDrizzleConfig<TSchema, TRelations>;
86+
} & DrizzleMySqlConfig<TRelations>;
12287

12388
if (client) return construct(client, drizzleConfig) as any;
12489

@@ -135,11 +100,10 @@ export function drizzle<
135100

136101
export namespace drizzle {
137102
export function mock<
138-
TSchema extends Record<string, unknown> = Record<string, never>,
139103
TRelations extends AnyRelations = EmptyRelations,
140104
>(
141-
config?: BunMySqlDrizzleConfig<TSchema, TRelations>,
142-
): BunMySqlDatabase<TSchema, TRelations> & {
105+
config?: DrizzleMySqlConfig<TRelations>,
106+
): BunMySqlDatabase<TRelations> & {
143107
$client: '$client is not available on drizzle.mock()';
144108
} {
145109
return construct({

drizzle-orm/src/bun-sql/mysql/migrator.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ import { readMigrationFiles } from '~/migrator.ts';
33
import type { AnyRelations } from '~/relations.ts';
44
import type { BunMySqlDatabase } from './driver.ts';
55

6-
export async function migrate<TSchema extends Record<string, unknown>, TRelations extends AnyRelations>(
7-
db: BunMySqlDatabase<TSchema, TRelations>,
6+
export async function migrate<TRelations extends AnyRelations>(
7+
db: BunMySqlDatabase<TRelations>,
88
config: MigrationConfig,
99
) {
1010
const migrations = readMigrationFiles(config);
11-
return await db.dialect.migrate(migrations, db.session, config);
11+
return db.dialect.migrate(migrations, db.session, config);
1212
}

0 commit comments

Comments
 (0)