@@ -261,6 +261,7 @@ export default defineAddon({
261
261
const { ast, generateCode } = parseScript ( content ) ;
262
262
263
263
imports . addNamed ( ast , '$env/dynamic/private' , { env : 'env' } ) ;
264
+ imports . addNamespace ( ast , './schema' , 'schema' ) ;
264
265
265
266
// env var checks
266
267
const dbURLCheck = common . statementFromString (
@@ -296,20 +297,14 @@ export default defineAddon({
296
297
}
297
298
}
298
299
// MySQL
299
- if ( options . mysql === 'mysql2' ) {
300
+ if ( options . mysql === 'mysql2' || options . mysql === 'planetscale' ) {
300
301
imports . addDefault ( ast , 'mysql2/promise' , 'mysql' ) ;
301
302
imports . addNamed ( ast , 'drizzle-orm/mysql2' , { drizzle : 'drizzle' } ) ;
302
303
303
304
clientExpression = common . expressionFromString (
304
305
'await mysql.createConnection(env.DATABASE_URL)'
305
306
) ;
306
307
}
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
- }
313
308
// PostgreSQL
314
309
if ( options . postgresql === 'neon' ) {
315
310
imports . addNamed ( ast , '@neondatabase/serverless' , { neon : 'neon' } ) ;
@@ -328,7 +323,20 @@ export default defineAddon({
328
323
const clientIdentifier = variables . declaration ( ast , 'const' , 'client' , clientExpression ) ;
329
324
common . addStatement ( ast , clientIdentifier ) ;
330
325
326
+ // create drizzle function call
331
327
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
332
340
const db = variables . declaration ( ast , 'const' , 'db' , drizzleCall ) ;
333
341
exports . namedExport ( ast , 'db' , db ) ;
334
342
0 commit comments