Skip to content

Commit 6660ab8

Browse files
Merge pull request #80 from prisma/ptl-1046-migrate-create-db-to-use-new-connection-model-fields
Migrate connection string to new connections model
2 parents 9aeacd4 + a62d08a commit 6660ab8

2 files changed

Lines changed: 29 additions & 21 deletions

File tree

create-db/src/core/database.ts

Lines changed: 9 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { randomUUID } from "crypto";
2-
import type { CreateDatabaseResult, ApiResponse } from "../types.js";
2+
import type { ApiResponse, CreateDatabaseResult } from "../types.js";
33
import { sendAnalytics } from "../utils/analytics.js";
44

55
export function getCommandName(): string {
@@ -116,27 +116,15 @@ export async function createDatabaseCore(
116116
const database = result.data?.database ?? result.databases?.[0];
117117
const projectId = result.data?.id ?? result.id ?? "";
118118

119-
const apiKeys = database?.apiKeys;
120-
const directConnDetails = result.data
121-
? apiKeys?.[0]?.directConnection
122-
: result.databases?.[0]?.apiKeys?.[0]?.ppgDirectConnection;
123-
124-
const directUser = directConnDetails?.user
125-
? encodeURIComponent(String(directConnDetails.user))
126-
: "";
127-
const directPass = directConnDetails?.pass
128-
? encodeURIComponent(String(directConnDetails.pass))
129-
: "";
130-
const directHost = directConnDetails?.host;
131-
const directPort = directConnDetails?.port
132-
? `:${directConnDetails.port}`
133-
: "";
134-
const directDbName = directConnDetails?.database || "postgres";
135-
119+
const connection = database?.connections?.find(
120+
(c) =>
121+
Boolean(c.endpoints?.direct?.connectionString) ||
122+
Boolean(c.endpoints?.pooled?.connectionString),
123+
);
136124
const connectionString =
137-
directConnDetails && directHost
138-
? `postgresql://${directUser}:${directPass}@${directHost}${directPort}/${directDbName}?sslmode=require`
139-
: null;
125+
connection?.endpoints?.direct?.connectionString
126+
?? connection?.endpoints?.pooled?.connectionString
127+
?? null;
140128

141129
const claimUrl = `${claimDbWorkerUrl}/claim?projectID=${projectId}&utm_source=${userAgent || getCommandName()}&utm_medium=cli`;
142130

create-db/src/types.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,11 +80,31 @@ export interface ApiResponseData {
8080
database?: DatabaseRecord;
8181
}
8282

83+
export interface ConnectionEndpoint {
84+
host: string;
85+
port: number;
86+
connectionString?: string;
87+
}
88+
89+
export interface Connection {
90+
id: string;
91+
type: string;
92+
name: string;
93+
kind: "postgres" | "accelerate";
94+
endpoints: {
95+
direct?: ConnectionEndpoint;
96+
pooled?: ConnectionEndpoint;
97+
accelerate?: ConnectionEndpoint;
98+
};
99+
database: { id: string; name: string };
100+
}
101+
83102
export interface DatabaseRecord {
84103
name?: string;
85104
region?: {
86105
id?: string;
87106
};
107+
connections?: Connection[];
88108
apiKeys?: ApiKey[];
89109
}
90110

0 commit comments

Comments
 (0)