@@ -2,6 +2,11 @@ import { eventHandler, getValidatedRouterParams, readValidatedBody } from 'h3'
22import { z } from 'zod'
33import { useDatabase } from '../../../utils/database'
44
5+ const statementValidation = z . object ( {
6+ query : z . string ( ) . min ( 1 ) . max ( 1e6 ) . trim ( ) ,
7+ params : z . any ( ) . array ( ) ,
8+ } )
9+
510export default eventHandler ( async ( event ) => {
611 // https://developers.cloudflare.com/d1/build-databases/query-databases/
712 const { command } = await getValidatedRouterParams ( event , z . object ( {
@@ -36,12 +41,18 @@ export default eventHandler(async (event) => {
3641 statements . map ( stmt => db . prepare ( stmt . query ) . bind ( ...stmt . params ) )
3742 )
3843 }
39- // command is all, raw or run
40- const { query, params, columnNames } = await readValidatedBody ( event , z . object ( {
41- query : z . string ( ) . min ( 1 ) . max ( 1e6 ) . trim ( ) ,
42- params : z . any ( ) . array ( ) ,
43- columnNames : z . boolean ( ) . default ( false )
44- } ) . parse )
45- // @ts -ignore
46- return db . prepare ( query ) . bind ( ...params ) . raw ( { columnNames } )
44+
45+ if ( command === 'raw' ) {
46+ const { query, params, columnNames } = await readValidatedBody ( event , z . object ( {
47+ query : z . string ( ) . min ( 1 ) . max ( 1e6 ) . trim ( ) ,
48+ params : z . any ( ) . array ( ) ,
49+ columnNames : z . boolean ( ) . default ( false )
50+ } ) . parse )
51+ // @ts -ignore
52+ return db . prepare ( query ) . bind ( ...params ) . raw ( { columnNames } )
53+ }
54+
55+ // command is all or run
56+ const { query, params } = await readValidatedBody ( event , statementValidation . parse )
57+ return db . prepare ( query ) . bind ( ...params ) [ command ] ( )
4758} )
0 commit comments