@@ -31,7 +31,7 @@ import { argName, colName } from "./drivers/utlis";
3131import { Driver as Sqlite3Driver } from "./drivers/better-sqlite3" ;
3232import { Driver as PgDriver } from "./drivers/pg" ;
3333import { Driver as PostgresDriver } from "./drivers/postgres" ;
34- import { Driver as MysqlDriver } from "./drivers/mysql2" ;
34+ import { Mysql2Options , Driver as MysqlDriver } from "./drivers/mysql2" ;
3535
3636// Read input from stdin
3737const input = readInput ( ) ;
@@ -43,6 +43,7 @@ writeOutput(result);
4343interface Options {
4444 runtime ?: string ;
4545 driver ?: string ;
46+ mysql2 ?: Mysql2Options
4647}
4748
4849interface Driver {
@@ -78,10 +79,10 @@ interface Driver {
7879 ) => Node ;
7980}
8081
81- function createNodeGenerator ( driver ?: string ) : Driver {
82- switch ( driver ) {
82+ function createNodeGenerator ( options : Options ) : Driver {
83+ switch ( options . driver ) {
8384 case "mysql2" : {
84- return new MysqlDriver ( ) ;
85+ return new MysqlDriver ( options . mysql2 ) ;
8586 }
8687 case "pg" : {
8788 return new PgDriver ( ) ;
@@ -93,7 +94,7 @@ function createNodeGenerator(driver?: string): Driver {
9394 return new Sqlite3Driver ( ) ;
9495 }
9596 }
96- throw new Error ( `unknown driver: ${ driver } ` ) ;
97+ throw new Error ( `unknown driver: ${ options . driver } ` ) ;
9798}
9899
99100function codegen ( input : GenerateRequest ) : GenerateResponse {
@@ -105,7 +106,7 @@ function codegen(input: GenerateRequest): GenerateResponse {
105106 options = JSON . parse ( text ) as Options ;
106107 }
107108
108- const driver = createNodeGenerator ( options . driver ) ;
109+ const driver = createNodeGenerator ( options ) ;
109110
110111 // TODO: Verify options, parse them from protobuf honestly
111112
@@ -146,17 +147,15 @@ ${query.text}`
146147 )
147148 ) ;
148149
149- const ctype = driver . columnType ;
150-
151150 let argIface = undefined ;
152151 let returnIface = undefined ;
153152 if ( query . params . length > 0 ) {
154153 argIface = `${ query . name } Args` ;
155- nodes . push ( argsDecl ( argIface , ctype , query . params ) ) ;
154+ nodes . push ( argsDecl ( argIface , driver , query . params ) ) ;
156155 }
157156 if ( query . columns . length > 0 ) {
158157 returnIface = `${ query . name } Row` ;
159- nodes . push ( rowDecl ( returnIface , ctype , query . columns ) ) ;
158+ nodes . push ( rowDecl ( returnIface , driver , query . columns ) ) ;
160159 }
161160
162161 switch ( query . cmd ) {
@@ -240,7 +239,7 @@ function queryDecl(name: string, sql: string) {
240239
241240function argsDecl (
242241 name : string ,
243- ctype : ( c ?: Column ) => TypeNode ,
242+ driver : Driver ,
244243 params : Parameter [ ]
245244) {
246245 return factory . createInterfaceDeclaration (
@@ -253,15 +252,15 @@ function argsDecl(
253252 undefined ,
254253 factory . createIdentifier ( argName ( i , param . column ) ) ,
255254 undefined ,
256- ctype ( param . column )
255+ driver . columnType ( param . column )
257256 )
258257 )
259258 ) ;
260259}
261260
262261function rowDecl (
263262 name : string ,
264- ctype : ( c ?: Column ) => TypeNode ,
263+ driver : Driver ,
265264 columns : Column [ ]
266265) {
267266 return factory . createInterfaceDeclaration (
@@ -274,7 +273,7 @@ function rowDecl(
274273 undefined ,
275274 factory . createIdentifier ( colName ( i , column ) ) ,
276275 undefined ,
277- ctype ( column )
276+ driver . columnType ( column )
278277 )
279278 )
280279 ) ;
0 commit comments