Skip to content

Commit f6fb95c

Browse files
authored
fix: pass schema to drizzle client for better type generation (#459)
* fix: pass `schema` to `drizzle` client for better type generation * see if tests work * Revert "see if tests work" This reverts commit 3910a48. * fix everything
1 parent ab1b254 commit f6fb95c

File tree

2 files changed

+20
-7
lines changed

2 files changed

+20
-7
lines changed

.changeset/swift-poets-wonder.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'sv': patch
3+
---
4+
5+
fix: pass `schema` to `drizzle` client for better type generation

packages/addons/drizzle/index.ts

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)