Skip to content

Commit 5c6b3af

Browse files
Add databaseName and packageName properties for studio (#4683)
* add databaseName and packageName property for studio * Add release notes --------- Co-authored-by: AndriiSherman <[email protected]>
1 parent 9895842 commit 5c6b3af

File tree

4 files changed

+78
-19
lines changed

4 files changed

+78
-19
lines changed

changelogs/drizzle-kit/0.31.3.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
- Internal changes to Studio context. Added `databaseName` and `packageName` properties for Studio

drizzle-kit/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "drizzle-kit",
3-
"version": "0.31.2",
3+
"version": "0.31.3",
44
"homepage": "https://orm.drizzle.team",
55
"keywords": [
66
"drizzle",

drizzle-kit/src/cli/connections.ts

Lines changed: 37 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,13 @@ export const preparePostgresDB = async (
2727
credentials: PostgresCredentials,
2828
): Promise<
2929
DB & {
30+
packageName:
31+
| '@aws-sdk/client-rds-data'
32+
| 'pglite'
33+
| 'pg'
34+
| 'postgres'
35+
| '@vercel/postgres'
36+
| '@neondatabase/serverless';
3037
proxy: Proxy;
3138
transactionProxy: TransactionProxy;
3239
migrate: (config: string | MigrationConfig) => Promise<void>;
@@ -102,6 +109,7 @@ export const preparePostgresDB = async (
102109
};
103110

104111
return {
112+
packageName: '@aws-sdk/client-rds-data',
105113
query,
106114
proxy,
107115
transactionProxy,
@@ -162,7 +170,7 @@ export const preparePostgresDB = async (
162170
return results;
163171
};
164172

165-
return { query, proxy, transactionProxy, migrate: migrateFn };
173+
return { packageName: 'pglite', query, proxy, transactionProxy, migrate: migrateFn };
166174
}
167175

168176
assertUnreachable(driver);
@@ -255,7 +263,7 @@ export const preparePostgresDB = async (
255263
return results;
256264
};
257265

258-
return { query, proxy, transactionProxy, migrate: migrateFn };
266+
return { packageName: 'pg', query, proxy, transactionProxy, migrate: migrateFn };
259267
}
260268

261269
if (await checkPackage('postgres')) {
@@ -313,7 +321,7 @@ export const preparePostgresDB = async (
313321
return results;
314322
};
315323

316-
return { query, proxy, transactionProxy, migrate: migrateFn };
324+
return { packageName: 'postgres', query, proxy, transactionProxy, migrate: migrateFn };
317325
}
318326

319327
if (await checkPackage('@vercel/postgres')) {
@@ -411,7 +419,7 @@ export const preparePostgresDB = async (
411419
return results;
412420
};
413421

414-
return { query, proxy, transactionProxy, migrate: migrateFn };
422+
return { packageName: '@vercel/postgres', query, proxy, transactionProxy, migrate: migrateFn };
415423
}
416424

417425
if (await checkPackage('@neondatabase/serverless')) {
@@ -511,7 +519,7 @@ export const preparePostgresDB = async (
511519
return results;
512520
};
513521

514-
return { query, proxy, transactionProxy, migrate: migrateFn };
522+
return { packageName: '@neondatabase/serverless', query, proxy, transactionProxy, migrate: migrateFn };
515523
}
516524

517525
console.error(
@@ -524,6 +532,7 @@ export const prepareGelDB = async (
524532
credentials?: GelCredentials,
525533
): Promise<
526534
DB & {
535+
packageName: 'gel';
527536
proxy: Proxy;
528537
transactionProxy: TransactionProxy;
529538
}
@@ -593,7 +602,7 @@ To link your project, please refer https://docs.geldata.com/reference/cli/gel_in
593602
return result;
594603
};
595604

596-
return { query, proxy, transactionProxy };
605+
return { packageName: 'gel', query, proxy, transactionProxy };
597606
}
598607

599608
console.error(
@@ -629,6 +638,7 @@ export const connectToSingleStore = async (
629638
it: SingleStoreCredentials,
630639
): Promise<{
631640
db: DB;
641+
packageName: 'mysql2';
632642
proxy: Proxy;
633643
transactionProxy: TransactionProxy;
634644
database: string;
@@ -686,6 +696,7 @@ export const connectToSingleStore = async (
686696

687697
return {
688698
db: { query },
699+
packageName: 'mysql2',
689700
proxy,
690701
transactionProxy,
691702
database: result.database,
@@ -694,7 +705,7 @@ export const connectToSingleStore = async (
694705
}
695706

696707
console.error(
697-
"To connect to SingleStore database - please install 'singlestore' driver",
708+
"To connect to SingleStore database - please install 'mysql2' driver",
698709
);
699710
process.exit(1);
700711
};
@@ -726,6 +737,7 @@ export const connectToMySQL = async (
726737
it: MysqlCredentials,
727738
): Promise<{
728739
db: DB;
740+
packageName: 'mysql2' | '@planetscale/database';
729741
proxy: Proxy;
730742
transactionProxy: TransactionProxy;
731743
database: string;
@@ -795,6 +807,7 @@ export const connectToMySQL = async (
795807

796808
return {
797809
db: { query },
810+
packageName: 'mysql2',
798811
proxy,
799812
transactionProxy,
800813
database: result.database,
@@ -846,6 +859,7 @@ export const connectToMySQL = async (
846859

847860
return {
848861
db: { query },
862+
packageName: '@planetscale/database',
849863
proxy,
850864
transactionProxy,
851865
database: result.database,
@@ -905,7 +919,12 @@ export const connectToSQLite = async (
905919
credentials: SqliteCredentials,
906920
): Promise<
907921
& SQLiteDB
908-
& { migrate: (config: MigrationConfig) => Promise<void>; proxy: Proxy; transactionProxy: TransactionProxy }
922+
& {
923+
packageName: 'd1-http' | '@libsql/client' | 'better-sqlite3';
924+
migrate: (config: MigrationConfig) => Promise<void>;
925+
proxy: Proxy;
926+
transactionProxy: TransactionProxy;
927+
}
909928
> => {
910929
if ('driver' in credentials) {
911930
const { driver } = credentials;
@@ -1037,7 +1056,7 @@ export const connectToSQLite = async (
10371056
const result = await remoteBatchCallback(queries);
10381057
return result.rows;
10391058
};
1040-
return { ...db, proxy, transactionProxy, migrate: migrateFn };
1059+
return { ...db, packageName: 'd1-http', proxy, transactionProxy, migrate: migrateFn };
10411060
} else {
10421061
assertUnreachable(driver);
10431062
}
@@ -1101,7 +1120,7 @@ export const connectToSQLite = async (
11011120
return results;
11021121
};
11031122

1104-
return { ...db, proxy, transactionProxy, migrate: migrateFn };
1123+
return { ...db, packageName: '@libsql/client', proxy, transactionProxy, migrate: migrateFn };
11051124
}
11061125

11071126
if (await checkPackage('better-sqlite3')) {
@@ -1170,7 +1189,7 @@ export const connectToSQLite = async (
11701189
return results;
11711190
};
11721191

1173-
return { ...db, proxy, transactionProxy, migrate: migrateFn };
1192+
return { ...db, packageName: 'better-sqlite3', proxy, transactionProxy, migrate: migrateFn };
11741193
}
11751194

11761195
console.log(
@@ -1181,7 +1200,12 @@ export const connectToSQLite = async (
11811200

11821201
export const connectToLibSQL = async (credentials: LibSQLCredentials): Promise<
11831202
& LibSQLDB
1184-
& { migrate: (config: MigrationConfig) => Promise<void>; proxy: Proxy; transactionProxy: TransactionProxy }
1203+
& {
1204+
packageName: '@libsql/client';
1205+
migrate: (config: MigrationConfig) => Promise<void>;
1206+
proxy: Proxy;
1207+
transactionProxy: TransactionProxy;
1208+
}
11851209
> => {
11861210
if (await checkPackage('@libsql/client')) {
11871211
const { createClient } = await import('@libsql/client');
@@ -1245,7 +1269,7 @@ export const connectToLibSQL = async (credentials: LibSQLCredentials): Promise<
12451269
return results;
12461270
};
12471271

1248-
return { ...db, proxy, transactionProxy, migrate: migrateFn };
1272+
return { ...db, packageName: '@libsql/client', proxy, transactionProxy, migrate: migrateFn };
12491273
}
12501274

12511275
console.log(

drizzle-kit/src/serializer/studio.ts

Lines changed: 39 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,21 @@ type SchemaFile = {
5050
export type Setup = {
5151
dbHash: string;
5252
dialect: 'postgresql' | 'mysql' | 'sqlite' | 'singlestore';
53+
packageName:
54+
| '@aws-sdk/client-rds-data'
55+
| 'pglite'
56+
| 'pg'
57+
| 'postgres'
58+
| '@vercel/postgres'
59+
| '@neondatabase/serverless'
60+
| 'gel'
61+
| 'mysql2'
62+
| '@planetscale/database'
63+
| 'd1-http'
64+
| '@libsql/client'
65+
| 'better-sqlite3';
5366
driver?: 'aws-data-api' | 'd1-http' | 'turso' | 'pglite';
67+
databaseName?: string; // for planetscale (driver remove database name from connection string)
5468
proxy: Proxy;
5569
transactionProxy: TransactionProxy;
5670
customDefaults: CustomDefault[];
@@ -283,6 +297,7 @@ export const drizzleForPostgres = async (
283297
dbHash,
284298
dialect: 'postgresql',
285299
driver: 'driver' in credentials ? credentials.driver : undefined,
300+
packageName: db.packageName,
286301
proxy: db.proxy,
287302
transactionProxy: db.transactionProxy,
288303
customDefaults,
@@ -299,7 +314,7 @@ export const drizzleForMySQL = async (
299314
schemaFiles?: SchemaFile[],
300315
): Promise<Setup> => {
301316
const { connectToMySQL } = await import('../cli/connections');
302-
const { proxy, transactionProxy } = await connectToMySQL(credentials);
317+
const { proxy, transactionProxy, database, packageName } = await connectToMySQL(credentials);
303318

304319
const customDefaults = getCustomDefaults(mysqlSchema);
305320

@@ -317,6 +332,8 @@ export const drizzleForMySQL = async (
317332
return {
318333
dbHash,
319334
dialect: 'mysql',
335+
packageName,
336+
databaseName: database,
320337
proxy,
321338
transactionProxy,
322339
customDefaults,
@@ -356,6 +373,7 @@ export const drizzleForSQLite = async (
356373
dbHash,
357374
dialect: 'sqlite',
358375
driver: 'driver' in credentials ? credentials.driver : undefined,
376+
packageName: sqliteDB.packageName,
359377
proxy: sqliteDB.proxy,
360378
transactionProxy: sqliteDB.transactionProxy,
361379
customDefaults,
@@ -383,6 +401,7 @@ export const drizzleForLibSQL = async (
383401
dbHash,
384402
dialect: 'sqlite',
385403
driver: undefined,
404+
packageName: sqliteDB.packageName,
386405
proxy: sqliteDB.proxy,
387406
transactionProxy: sqliteDB.transactionProxy,
388407
customDefaults,
@@ -399,7 +418,7 @@ export const drizzleForSingleStore = async (
399418
schemaFiles?: SchemaFile[],
400419
): Promise<Setup> => {
401420
const { connectToSingleStore } = await import('../cli/connections');
402-
const { proxy, transactionProxy } = await connectToSingleStore(credentials);
421+
const { proxy, transactionProxy, database, packageName } = await connectToSingleStore(credentials);
403422

404423
const customDefaults = getCustomDefaults(singlestoreSchema);
405424

@@ -417,6 +436,8 @@ export const drizzleForSingleStore = async (
417436
return {
418437
dbHash,
419438
dialect: 'singlestore',
439+
databaseName: database,
440+
packageName,
420441
proxy,
421442
transactionProxy,
422443
customDefaults,
@@ -580,8 +601,19 @@ export type Server = {
580601
};
581602

582603
export const prepareServer = async (
583-
{ dialect, driver, proxy, transactionProxy, customDefaults, schema: drizzleSchema, relations, dbHash, schemaFiles }:
584-
Setup,
604+
{
605+
dialect,
606+
driver,
607+
packageName,
608+
databaseName,
609+
proxy,
610+
transactionProxy,
611+
customDefaults,
612+
schema: drizzleSchema,
613+
relations,
614+
dbHash,
615+
schemaFiles,
616+
}: Setup,
585617
app?: Hono,
586618
): Promise<Server> => {
587619
app = app !== undefined ? app : new Hono();
@@ -644,13 +676,15 @@ export const prepareServer = async (
644676
}
645677

646678
return c.json({
647-
version: '6.1',
679+
version: '6.2',
648680
dialect,
649681
driver,
682+
packageName,
650683
schemaFiles,
651684
customDefaults: preparedDefaults,
652685
relations,
653686
dbHash,
687+
databaseName,
654688
});
655689
}
656690

0 commit comments

Comments
 (0)