11import { blue , bold , white } from "@std/fmt/colors" ;
22import { ConsoleHandler , getLogger , type LevelName , type Logger } from "@std/log" ;
33import { DDL } from "./ddl.ts" ;
4- import type { Class , Identifiable , Parameter , Row , Schema } from "./types.ts" ;
4+ import type { Class , Identifiable , Parameter , Row , Schema , Temporal } from "./types.ts" ;
55import { Repository } from "./repository.ts" ;
66
77// Import Driver Types
@@ -66,6 +66,10 @@ async function connect(config: ClientConfig): Promise<Client> {
6666 // Set the debug flag
6767 DB . debug = Deno . env . get ( "DEBUG" ) ?. includes ( "dbx" ) || config . debug || false ;
6868
69+ // Cleans parameters of temporal values
70+ const isTemporal = ( p : unknown ) : p is Temporal => p instanceof Temporal . PlainDate || p instanceof Temporal . PlainDateTime || p instanceof Temporal . PlainTime ;
71+ const cleanTemporals = ( parameters : Parameter [ ] | undefined ) => parameters ?. map ( ( p ) => isTemporal ( p ) ? p . toString ( ) : p ) ;
72+
6973 // MySQL
7074 if ( config . type === Provider . MYSQL ) {
7175 const mysql = await import ( "npm:mysql2@^3/promise" ) ;
@@ -83,13 +87,13 @@ async function connect(config: ClientConfig): Promise<Client> {
8387 }
8488 async execute ( sql : string , parameters ?: Parameter [ ] ) {
8589 // deno-lint-ignore no-explicit-any
86- const [ rsh ] = await ( nativeClient as any ) . execute ( sql , parameters ) ;
90+ const [ rsh ] = await ( nativeClient as any ) . execute ( sql , cleanTemporals ( parameters ) ) ;
8791 // deno-lint-ignore no-explicit-any
8892 return { affectedRows : ( rsh as any ) . affectedRows , lastInsertId : ( rsh as any ) . insertId } ;
8993 }
9094 async query ( sql : string , parameters ?: Parameter [ ] ) {
9195 // deno-lint-ignore no-explicit-any
92- const [ rows ] = await ( nativeClient as any ) . query ( sql , parameters ) ;
96+ const [ rows ] = await ( nativeClient as any ) . query ( sql , cleanTemporals ( parameters ) ) ;
9397 return rows as Row [ ] ;
9498 }
9599 } ( ) ;
@@ -106,11 +110,11 @@ async function connect(config: ClientConfig): Promise<Client> {
106110 return nativeClient . end ( ) ;
107111 }
108112 async execute ( sql : string , parameters ?: Parameter [ ] ) {
109- const qar = await nativeClient . queryArray ( sql , parameters ) ;
113+ const qar = await nativeClient . queryArray ( sql , cleanTemporals ( parameters ) ) ;
110114 return { affectedRows : qar . rowCount , lastInsertId : qar . rows [ 0 ] ?. [ 0 ] as number ?? undefined } ;
111115 }
112116 async query ( sql : string , parameters ?: Parameter [ ] ) {
113- const qor = await nativeClient . queryObject ( sql , parameters ) ;
117+ const qor = await nativeClient . queryObject ( sql , cleanTemporals ( parameters ) ) ;
114118 return qor . rows as Row [ ] ;
115119 }
116120 } ( ) ;
@@ -130,11 +134,11 @@ async function connect(config: ClientConfig): Promise<Client> {
130134 return Promise . resolve ( nativeClient . close ( ) ) ;
131135 }
132136 execute ( sql : string , parameters ?: Parameter [ ] ) {
133- nativeClient . exec ( sql , parameters ) ;
137+ nativeClient . exec ( sql , cleanTemporals ( parameters ) ) ;
134138 return Promise . resolve ( { affectedRows : nativeClient . changes , lastInsertId : nativeClient . lastInsertRowId } ) ;
135139 }
136140 query ( sql : string , parameters ?: Parameter [ ] ) {
137- return Promise . resolve ( nativeClient . prepare ( sql ) . all ( parameters ) ) ;
141+ return Promise . resolve ( nativeClient . prepare ( sql ) . all ( cleanTemporals ( parameters ) ) ) ;
138142 }
139143 } ( ) ;
140144 }
0 commit comments