@@ -261,6 +261,7 @@ export default defineAddon({
261261 const { ast, generateCode } = parseScript ( content ) ;
262262
263263 imports . addNamed ( ast , '$env/dynamic/private' , { env : 'env' } ) ;
264+ imports . addNamespace ( ast , './schema' , 'schema' ) ;
264265
265266 // env var checks
266267 const dbURLCheck = common . statementFromString (
@@ -296,20 +297,14 @@ export default defineAddon({
296297 }
297298 }
298299 // MySQL
299- if ( options . mysql === 'mysql2' ) {
300+ if ( options . mysql === 'mysql2' || options . mysql === 'planetscale' ) {
300301 imports . addDefault ( ast , 'mysql2/promise' , 'mysql' ) ;
301302 imports . addNamed ( ast , 'drizzle-orm/mysql2' , { drizzle : 'drizzle' } ) ;
302303
303304 clientExpression = common . expressionFromString (
304305 'await mysql.createConnection(env.DATABASE_URL)'
305306 ) ;
306307 }
307- if ( options . mysql === 'planetscale' ) {
308- imports . addNamed ( ast , '@planetscale/database' , { Client : 'Client' } ) ;
309- imports . addNamed ( ast , 'drizzle-orm/planetscale-serverless' , { drizzle : 'drizzle' } ) ;
310-
311- clientExpression = common . expressionFromString ( 'new Client({ url: env.DATABASE_URL })' ) ;
312- }
313308 // PostgreSQL
314309 if ( options . postgresql === 'neon' ) {
315310 imports . addNamed ( ast , '@neondatabase/serverless' , { neon : 'neon' } ) ;
@@ -328,7 +323,20 @@ export default defineAddon({
328323 const clientIdentifier = variables . declaration ( ast , 'const' , 'client' , clientExpression ) ;
329324 common . addStatement ( ast , clientIdentifier ) ;
330325
326+ // create drizzle function call
331327 const drizzleCall = functions . callByIdentifier ( 'drizzle' , [ 'client' ] ) ;
328+
329+ // add schema to support `db.query`
330+ const paramObject = object . create ( {
331+ schema : variables . identifier ( 'schema' )
332+ } ) ;
333+ if ( options . database == 'mysql' ) {
334+ const mode = options . mysql == 'planetscale' ? 'planetscale' : 'default' ;
335+ object . property ( paramObject , 'mode' , common . createLiteral ( mode ) ) ;
336+ }
337+ drizzleCall . arguments . push ( paramObject ) ;
338+
339+ // create `db` export
332340 const db = variables . declaration ( ast , 'const' , 'db' , drizzleCall ) ;
333341 exports . namedExport ( ast , 'db' , db ) ;
334342
0 commit comments