From d0119ee24b27f8f6626a219fdd16d594103f82f2 Mon Sep 17 00:00:00 2001 From: Baptiste Arnaud Date: Tue, 17 May 2022 07:21:06 -0700 Subject: [PATCH] =?UTF-8?q?build:=20=F0=9F=94=A8=20Add=20migration=20recov?= =?UTF-8?q?er=20script?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/scripts/package.json | 3 +- packages/scripts/workspaceMigrationRecover.ts | 44 +++++++++++++++++++ 2 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 packages/scripts/workspaceMigrationRecover.ts diff --git a/packages/scripts/package.json b/packages/scripts/package.json index 64c1b1ac7..53254c618 100644 --- a/packages/scripts/package.json +++ b/packages/scripts/package.json @@ -7,7 +7,8 @@ "scripts": { "start:local": "ts-node index.ts", "start:prod": "NODE_ENV=production ts-node index.ts", - "start:workspaces:migration": "ts-node workspaceMigration.ts" + "start:workspaces:migration": "ts-node workspaceMigration.ts", + "start:workspaces:migration:recover": "ts-node workspaceMigrationRecover.ts" }, "devDependencies": { "db": "*", diff --git a/packages/scripts/workspaceMigrationRecover.ts b/packages/scripts/workspaceMigrationRecover.ts new file mode 100644 index 000000000..6a691dcea --- /dev/null +++ b/packages/scripts/workspaceMigrationRecover.ts @@ -0,0 +1,44 @@ +// See https://github.com/baptisteArno/typebot.io/issues/37 + +import { Plan, PrismaClient, WorkspaceRole } from 'db' +import path from 'path' + +const prisma = new PrismaClient() + +export const migrateWorkspace = async () => { + const user = await prisma.user.findFirst() + if (!user) return + console.log('Updating', user.email) + const newWorkspace = await prisma.workspace.create({ + data: { + name: user.name ? `${user.name}'s workspace` : 'My workspace', + members: { create: { userId: user.id, role: WorkspaceRole.ADMIN } }, + plan: Plan.TEAM, + }, + }) + await prisma.credentials.updateMany({ + data: { workspaceId: newWorkspace.id }, + }) + await prisma.customDomain.updateMany({ + data: { workspaceId: newWorkspace.id }, + }) + await prisma.dashboardFolder.updateMany({ + data: { workspaceId: newWorkspace.id }, + }) + await prisma.typebot.updateMany({ + data: { workspaceId: newWorkspace.id }, + }) +} + +require('dotenv').config({ + path: path.join( + __dirname, + process.env.NODE_ENV === 'production' ? '.env.production' : '.env.local' + ), +}) + +const main = async () => { + await migrateWorkspace() +} + +main().then()