import { PrismaClient } from "@prisma/client"; import bcrypt from "bcryptjs"; const prisma = new PrismaClient(); async function main() { const superadminEmail = process.env.SUPERADMIN_EMAIL || "admin@edudeploy.fr"; const superadminPassword = process.env.SUPERADMIN_PASSWORD || "CHANGE_ME"; const hashedPassword = await bcrypt.hash(superadminPassword, 12); await prisma.user.upsert({ where: { email: superadminEmail }, update: {}, create: { email: superadminEmail, password: hashedPassword, role: "superadmin", }, }); const templates = [ { name: "WordPress latest vierge", type: "wordpress", dockerImage: "wordpress:latest" }, { name: "WordPress 6.7 vierge", type: "wordpress", dockerImage: "wordpress:6.7" }, { name: "WordPress 6.4 vierge", type: "wordpress", dockerImage: "wordpress:6.4" }, { name: "PrestaShop latest vierge", type: "prestashop", dockerImage: "prestashop/prestashop:latest" }, { name: "PrestaShop 8.1 vierge", type: "prestashop", dockerImage: "prestashop/prestashop:8.1" }, ]; for (const t of templates) { const composeConfig = `services: app: image: ${t.dockerImage} ports: - "127.0.0.1:{PORT}:80" environment: INSTANCE_ID: {INSTANCE_ID} restart: unless-stopped `; await prisma.template.upsert({ where: { id: `${t.type}-${t.dockerImage.replace(/[:\/]/g, "-")}` }, update: {}, create: { id: `${t.type}-${t.dockerImage.replace(/[:\/]/g, "-")}`, name: t.name, type: t.type, dockerImage: t.dockerImage, composeConfig, isPublic: true, createdBy: "system", }, }); } console.log("Seed completed."); } main() .then(async () => { await prisma.$disconnect(); }) .catch(async (e) => { console.error(e); await prisma.$disconnect(); process.exit(1); });