a42e94c75f
🚀 Publish Trigger.dev Docker / ʦ TypeScript (push) Has been cancelled
🚀 Publish Trigger.dev Docker / Unit Tests (push) Has been cancelled
🚀 Publish Trigger.dev Docker / e2e Tests (push) Has been cancelled
🚀 Publish Trigger.dev Docker / publish (push) Has been cancelled
153 lines
4.1 KiB
TypeScript
153 lines
4.1 KiB
TypeScript
/* eslint-disable turbo/no-undeclared-env-vars */
|
|
|
|
import { integrationCatalog } from "../app/services/externalApis/integrationCatalog.server";
|
|
import { seedCloud } from "./seedCloud";
|
|
import { prisma } from "../app/db.server";
|
|
import { createEnvironment } from "~/models/organization.server";
|
|
|
|
async function seedIntegrationAuthMethods() {
|
|
for (const [_, integration] of Object.entries(integrationCatalog.getIntegrations())) {
|
|
await prisma.integrationDefinition.upsert({
|
|
where: {
|
|
id: integration.identifier,
|
|
},
|
|
create: {
|
|
id: integration.identifier,
|
|
name: integration.name,
|
|
icon: integration.icon ?? integration.identifier,
|
|
instructions: "Instructions go here",
|
|
description: integration.description,
|
|
packageName: integration.packageName,
|
|
},
|
|
update: {
|
|
name: integration.name,
|
|
description: integration.description,
|
|
packageName: integration.packageName,
|
|
icon: integration.icon ?? integration.identifier,
|
|
},
|
|
});
|
|
|
|
for (const [key, authMethod] of Object.entries(integration.authenticationMethods)) {
|
|
if (authMethod.type === "oauth2") {
|
|
console.log(`Upserting auth method ${integration.identifier}.${key}`);
|
|
|
|
await prisma.integrationAuthMethod.upsert({
|
|
where: {
|
|
definitionId_key: {
|
|
definitionId: integration.identifier,
|
|
key,
|
|
},
|
|
},
|
|
create: {
|
|
key,
|
|
name: authMethod.name,
|
|
description: authMethod.description ?? "",
|
|
type: authMethod.type,
|
|
client: authMethod.client,
|
|
config: authMethod.config,
|
|
scopes: authMethod.scopes,
|
|
definition: {
|
|
connect: {
|
|
id: integration.identifier,
|
|
},
|
|
},
|
|
help: authMethod.help,
|
|
},
|
|
update: {
|
|
name: authMethod.name,
|
|
description: authMethod.description ?? "",
|
|
type: authMethod.type,
|
|
client: authMethod.client,
|
|
config: authMethod.config,
|
|
scopes: authMethod.scopes,
|
|
help: authMethod.help,
|
|
},
|
|
});
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
async function runDataMigrations() {
|
|
await runStagingEnvironmentMigration();
|
|
}
|
|
|
|
async function runStagingEnvironmentMigration() {
|
|
try {
|
|
await prisma.$transaction(async (tx) => {
|
|
const existingDataMigration = await tx.dataMigration.findUnique({
|
|
where: {
|
|
name: "2023-09-27-AddStagingEnvironments",
|
|
},
|
|
});
|
|
|
|
if (existingDataMigration) {
|
|
return;
|
|
}
|
|
|
|
await tx.dataMigration.create({
|
|
data: {
|
|
name: "2023-09-27-AddStagingEnvironments",
|
|
},
|
|
});
|
|
|
|
console.log("Running data migration 2023-09-27-AddStagingEnvironments");
|
|
|
|
const projectsWithoutStagingEnvironments = await tx.project.findMany({
|
|
where: {
|
|
environments: {
|
|
none: {
|
|
type: "STAGING",
|
|
},
|
|
},
|
|
},
|
|
include: {
|
|
organization: true,
|
|
},
|
|
});
|
|
|
|
for (const project of projectsWithoutStagingEnvironments) {
|
|
try {
|
|
console.log(
|
|
`Creating staging environment for project ${project.slug} on org ${project.organization.slug}`
|
|
);
|
|
|
|
await createEnvironment(project.organization, project, "STAGING", undefined, tx);
|
|
} catch (error) {
|
|
console.error(error);
|
|
}
|
|
}
|
|
|
|
await tx.dataMigration.update({
|
|
where: {
|
|
name: "2023-09-27-AddStagingEnvironments",
|
|
},
|
|
data: {
|
|
completedAt: new Date(),
|
|
},
|
|
});
|
|
});
|
|
} catch (error) {
|
|
console.error(error);
|
|
}
|
|
}
|
|
|
|
async function seed() {
|
|
await seedIntegrationAuthMethods();
|
|
|
|
if (process.env.NODE_ENV === "development" && process.env.SEED_CLOUD === "enabled") {
|
|
await seedCloud(prisma);
|
|
}
|
|
|
|
await runDataMigrations();
|
|
}
|
|
|
|
seed()
|
|
.catch((e) => {
|
|
console.error(e);
|
|
process.exit(1);
|
|
})
|
|
.finally(async () => {
|
|
await prisma.$disconnect();
|
|
});
|