74 lines
1.7 KiB
TypeScript
74 lines
1.7 KiB
TypeScript
import { Prisma, PrismaClient } from '@prisma/client';
|
|
import {
|
|
DEFAULT_PRODUCT_ID,
|
|
DEFAULT_PRODUCT_NAME,
|
|
buildAppDataSeed,
|
|
buildDefaultProjects,
|
|
} from './seed-data';
|
|
|
|
const prisma = new PrismaClient();
|
|
|
|
async function clearRelationalBusinessData() {
|
|
await prisma.$transaction([
|
|
prisma.comment.deleteMany(),
|
|
prisma.taskWatcher.deleteMany(),
|
|
prisma.task.deleteMany(),
|
|
prisma.sprint.deleteMany(),
|
|
prisma.projectMember.deleteMany(),
|
|
prisma.requirement.deleteMany(),
|
|
prisma.version.deleteMany(),
|
|
prisma.project.deleteMany(),
|
|
prisma.product.deleteMany(),
|
|
]);
|
|
}
|
|
|
|
async function seedAppData() {
|
|
const entries = buildAppDataSeed();
|
|
|
|
for (const entry of entries) {
|
|
const value = entry.value as Prisma.InputJsonValue;
|
|
await prisma.appData.upsert({
|
|
where: { key: entry.key },
|
|
update: { value },
|
|
create: { key: entry.key, value },
|
|
});
|
|
}
|
|
|
|
return entries.length;
|
|
}
|
|
|
|
async function seedRelationalBusinessData() {
|
|
await prisma.product.create({
|
|
data: {
|
|
id: DEFAULT_PRODUCT_ID,
|
|
name: DEFAULT_PRODUCT_NAME,
|
|
description: '',
|
|
},
|
|
});
|
|
|
|
await prisma.project.createMany({
|
|
data: buildDefaultProjects().map((project) => ({
|
|
id: project.id,
|
|
productId: DEFAULT_PRODUCT_ID,
|
|
name: project.name,
|
|
description: project.description,
|
|
})),
|
|
});
|
|
}
|
|
|
|
async function main() {
|
|
await clearRelationalBusinessData();
|
|
await seedRelationalBusinessData();
|
|
const count = await seedAppData();
|
|
console.log(`Seeded ${count} app_data keys with clean branch data.`);
|
|
}
|
|
|
|
main()
|
|
.catch((error) => {
|
|
console.error(error);
|
|
process.exitCode = 1;
|
|
})
|
|
.finally(async () => {
|
|
await prisma.$disconnect();
|
|
});
|