67 lines
1.8 KiB
TypeScript
67 lines
1.8 KiB
TypeScript
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);
|
|
});
|