diff --git a/claim-db-worker/src/index.ts b/claim-db-worker/src/index.ts index d38aaf8..baeb2ad 100644 --- a/claim-db-worker/src/index.ts +++ b/claim-db-worker/src/index.ts @@ -65,7 +65,7 @@ export default { const tokenData = (await tokenResponse.json()) as { access_token: string }; // Transfer project - const transferResponse = await fetch(`https://api.prisma.io/projects/${projectID}/transfer`, { + const transferResponse = await fetch(`https://api.prisma.io/v1/projects/${projectID}/transfer`, { method: 'POST', headers: { 'Content-Type': 'application/json', diff --git a/create-db-worker/package-lock.json b/create-db-worker/package-lock.json index b78324e..a0d74cf 100644 --- a/create-db-worker/package-lock.json +++ b/create-db-worker/package-lock.json @@ -1,11 +1,11 @@ { - "name": "worker", + "name": "create-db-worker", "version": "0.0.2", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "worker", + "name": "create-db-worker", "version": "0.0.2", "devDependencies": { "@cloudflare/vitest-pool-workers": "^0.8.19", diff --git a/create-db-worker/src/delete-workflow.ts b/create-db-worker/src/delete-workflow.ts index 3eb936d..8bbadc1 100644 --- a/create-db-worker/src/delete-workflow.ts +++ b/create-db-worker/src/delete-workflow.ts @@ -18,7 +18,7 @@ export class DeleteDbWorkflow extends WorkflowEntrypoint { await step.sleep('wait 24 hours', '24 hours'); - const res = await fetch(`https://api.prisma.io/projects/${projectID}`, { + const res = await fetch(`https://api.prisma.io/v1/projects/${projectID}`, { method: 'DELETE', headers: { 'Content-Type': 'application/json', diff --git a/create-db-worker/src/index.ts b/create-db-worker/src/index.ts index e95c38a..963bf58 100644 --- a/create-db-worker/src/index.ts +++ b/create-db-worker/src/index.ts @@ -30,7 +30,7 @@ export default { // --- Get available regions --- if (url.pathname === '/regions' && request.method === 'GET') { - const regionsResponse = await fetch('https://api.prisma.io/regions', { + const regionsResponse = await fetch('https://api.prisma.io/v1/regions/postgres', { headers: { Authorization: `Bearer ${env.INTEGRATION_TOKEN}` }, }); const regionsText = await regionsResponse.text(); @@ -55,7 +55,7 @@ export default { } const payload = JSON.stringify({ region, name }); - const prismaResponse = await fetch('https://api.prisma.io/projects', { + const prismaResponse = await fetch('https://api.prisma.io/v1/projects', { method: 'POST', headers: { 'Content-Type': 'application/json', @@ -68,7 +68,8 @@ export default { // Trigger delete workflow for the new project try { - const projectID = JSON.parse(prismaText).id; + const response = JSON.parse(prismaText); + const projectID = response.data ? response.data.id : response.id; await env.DELETE_DB_WORKFLOW.create({ params: { projectID } }); env.CREATE_DB_DATASET.writeDataPoint({ blobs: ['database_created'], diff --git a/create-db/index.js b/create-db/index.js index 517a6c2..fdb9ca5 100755 --- a/create-db/index.js +++ b/create-db/index.js @@ -191,7 +191,8 @@ export async function getRegions() { try { const data = await res.json(); - return Array.isArray(data) ? data : data.data; + const regions = Array.isArray(data) ? data : data.data; + return regions.filter(region => region.status === 'available'); } catch (e) { handleError("Failed to parse JSON from /regions endpoint.", e); } @@ -300,9 +301,11 @@ async function createDatabase(name, region) { log.message(""); // Determine which connection string to display - const prismaConn = result.databases?.[0]?.connectionString; - const directConnDetails = - result.databases?.[0]?.apiKeys?.[0]?.ppgDirectConnection; + const database = result.data ? result.data.database : result.databases?.[0]; + const prismaConn = database?.connectionString; + const directConnDetails = result.data + ? database?.apiKeys?.[0]?.directConnection + : result.databases?.[0]?.apiKeys?.[0]?.ppgDirectConnection; const directConn = directConnDetails ? `postgresql://${directConnDetails.user}:${directConnDetails.pass}@${directConnDetails.host}/postgres` : null; @@ -336,7 +339,8 @@ async function createDatabase(name, region) { } // Claim Database - const claimUrl = `${process.env.CLAIM_DB_WORKER_URL || "https://create-db.prisma.io"}?projectID=${result.id}&utm_source=${CLI_NAME}&utm_medium=cli`; + const projectId = result.data ? result.data.id : result.id; + const claimUrl = `${process.env.CLAIM_DB_WORKER_URL}?projectID=${projectId}&utm_source=${CLI_NAME}&utm_medium=cli`; const clickableUrl = terminalLink(claimUrl, claimUrl, { fallback: false }); log.info(`${chalk.white(chalk.bold("✅ Claim your database:"))}`);