@@ -31,7 +31,7 @@ import { argName, colName } from "./drivers/utlis";
31
31
import { Driver as Sqlite3Driver } from "./drivers/better-sqlite3" ;
32
32
import { Driver as PgDriver } from "./drivers/pg" ;
33
33
import { Driver as PostgresDriver } from "./drivers/postgres" ;
34
- import { Driver as MysqlDriver } from "./drivers/mysql2" ;
34
+ import { Mysql2Options , Driver as MysqlDriver } from "./drivers/mysql2" ;
35
35
36
36
// Read input from stdin
37
37
const input = readInput ( ) ;
@@ -43,6 +43,7 @@ writeOutput(result);
43
43
interface Options {
44
44
runtime ?: string ;
45
45
driver ?: string ;
46
+ mysql2 ?: Mysql2Options
46
47
}
47
48
48
49
interface Driver {
@@ -78,10 +79,10 @@ interface Driver {
78
79
) => Node ;
79
80
}
80
81
81
- function createNodeGenerator ( driver ?: string ) : Driver {
82
- switch ( driver ) {
82
+ function createNodeGenerator ( options : Options ) : Driver {
83
+ switch ( options . driver ) {
83
84
case "mysql2" : {
84
- return new MysqlDriver ( ) ;
85
+ return new MysqlDriver ( options . mysql2 ) ;
85
86
}
86
87
case "pg" : {
87
88
return new PgDriver ( ) ;
@@ -93,7 +94,7 @@ function createNodeGenerator(driver?: string): Driver {
93
94
return new Sqlite3Driver ( ) ;
94
95
}
95
96
}
96
- throw new Error ( `unknown driver: ${ driver } ` ) ;
97
+ throw new Error ( `unknown driver: ${ options . driver } ` ) ;
97
98
}
98
99
99
100
function codegen ( input : GenerateRequest ) : GenerateResponse {
@@ -105,7 +106,7 @@ function codegen(input: GenerateRequest): GenerateResponse {
105
106
options = JSON . parse ( text ) as Options ;
106
107
}
107
108
108
- const driver = createNodeGenerator ( options . driver ) ;
109
+ const driver = createNodeGenerator ( options ) ;
109
110
110
111
// TODO: Verify options, parse them from protobuf honestly
111
112
@@ -146,17 +147,15 @@ ${query.text}`
146
147
)
147
148
) ;
148
149
149
- const ctype = driver . columnType ;
150
-
151
150
let argIface = undefined ;
152
151
let returnIface = undefined ;
153
152
if ( query . params . length > 0 ) {
154
153
argIface = `${ query . name } Args` ;
155
- nodes . push ( argsDecl ( argIface , ctype , query . params ) ) ;
154
+ nodes . push ( argsDecl ( argIface , driver , query . params ) ) ;
156
155
}
157
156
if ( query . columns . length > 0 ) {
158
157
returnIface = `${ query . name } Row` ;
159
- nodes . push ( rowDecl ( returnIface , ctype , query . columns ) ) ;
158
+ nodes . push ( rowDecl ( returnIface , driver , query . columns ) ) ;
160
159
}
161
160
162
161
switch ( query . cmd ) {
@@ -240,7 +239,7 @@ function queryDecl(name: string, sql: string) {
240
239
241
240
function argsDecl (
242
241
name : string ,
243
- ctype : ( c ?: Column ) => TypeNode ,
242
+ driver : Driver ,
244
243
params : Parameter [ ]
245
244
) {
246
245
return factory . createInterfaceDeclaration (
@@ -253,15 +252,15 @@ function argsDecl(
253
252
undefined ,
254
253
factory . createIdentifier ( argName ( i , param . column ) ) ,
255
254
undefined ,
256
- ctype ( param . column )
255
+ driver . columnType ( param . column )
257
256
)
258
257
)
259
258
) ;
260
259
}
261
260
262
261
function rowDecl (
263
262
name : string ,
264
- ctype : ( c ?: Column ) => TypeNode ,
263
+ driver : Driver ,
265
264
columns : Column [ ]
266
265
) {
267
266
return factory . createInterfaceDeclaration (
@@ -274,7 +273,7 @@ function rowDecl(
274
273
undefined ,
275
274
factory . createIdentifier ( colName ( i , column ) ) ,
276
275
undefined ,
277
- ctype ( column )
276
+ driver . columnType ( column )
278
277
)
279
278
)
280
279
) ;
0 commit comments