Files
tvone-api/prisma/seed.ts
T

127 lines
2.9 KiB
TypeScript
Raw Normal View History

import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
const data = [
{
name: 'Política',
slug: 'politica',
children: [
{ name: 'Eleições', slug: 'eleicoes' },
{ name: 'Governo', slug: 'governo' },
{ name: 'Diplomacia', slug: 'diplomacia' },
],
},
{
name: 'Mundo',
slug: 'mundo',
children: [
{ name: 'Europa', slug: 'europa' },
{ name: 'África', slug: 'africa' },
{ name: 'Ásia', slug: 'asia' },
{ name: 'Américas', slug: 'americas' },
],
},
{
name: 'Negócios',
slug: 'negocios',
children: [
{ name: 'Mercados', slug: 'mercados' },
{ name: 'Startups', slug: 'startups' },
{ name: 'Economia', slug: 'economia' },
{ name: 'Cripto', slug: 'cripto' },
],
},
{
name: 'Tecnologia',
slug: 'tecnologia',
children: [
{ name: 'Inteligência Artificial', slug: 'inteligencia-artificial' },
{ name: 'Gadgets', slug: 'gadgets' },
{ name: 'Software', slug: 'software' },
{ name: 'Cibersegurança', slug: 'ciberseguranca' },
],
},
{
name: 'Esportes',
slug: 'esportes',
children: [
{ name: 'Futebol', slug: 'futebol' },
{ name: 'Basquete', slug: 'basquete' },
{ name: 'Tênis', slug: 'tenis' },
{ name: 'Fórmula 1', slug: 'formula-1' },
],
},
{
name: 'Entretenimento',
slug: 'entretenimento',
children: [
{ name: 'Filmes', slug: 'filmes' },
{ name: 'Música', slug: 'musica' },
{ name: 'Celebridades', slug: 'celebridades' },
{ name: 'Séries de TV', slug: 'series-tv' },
],
},
{
name: 'Saúde',
slug: 'saude',
children: [
{ name: 'Medicina', slug: 'medicina' },
{ name: 'Nutrição', slug: 'nutricao' },
{ name: 'Saúde Mental', slug: 'saude-mental' },
],
},
{
name: 'Ciência',
slug: 'ciencia',
children: [
{ name: 'Espaço', slug: 'espaco' },
{ name: 'Meio Ambiente', slug: 'meio-ambiente' },
{ name: 'Física', slug: 'fisica' },
],
},
{
name: 'Estilo de Vida',
slug: 'estilo-de-vida',
children: [
{ name: 'Viagem', slug: 'viagem' },
{ name: 'Comida', slug: 'comida' },
{ name: 'Moda', slug: 'moda' },
],
},
];
async function createCategory(node: any, parentId: string | null = null) {
const category = await prisma.category.create({
data: {
name: node.name,
slug: node.slug,
parentId,
},
});
if (node.children?.length) {
for (const child of node.children) {
await createCategory(child, category.id);
}
}
}
async function main() {
console.log('🌱 Seeding categories...');
for (const root of data) {
await createCategory(root);
}
console.log('✅ Categories seeded successfully');
}
main()
.catch((e) => {
console.error(e);
process.exit(1);
})
.finally(async () => {
await prisma.$disconnect();
});