11/// <reference types="bun-types" />
22
33import { SQL } from 'bun' ;
4- import * as V1 from '~/_relations.ts' ;
54import { entityKind } from '~/entity.ts' ;
6- import { DrizzleError } from '~/errors.ts' ;
75import { DefaultLogger } from '~/logger.ts' ;
86import { MySqlDatabase } from '~/mysql-core/db.ts' ;
97import { MySqlDialect } from '~/mysql-core/dialect.ts' ;
10- import type { Mode } from '~/mysql-core/session .ts' ;
8+ import type { DrizzleMySqlConfig } from '~/mysql-core/utils .ts' ;
119import 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' ;
1412import { 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-
2314export 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
3020function 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
8955export 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
136101export 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 ( {
0 commit comments