import Database from 'better-sqlite3'; import { drizzle } from 'drizzle-orm/better-sqlite3'; import * as schema from './schema.js'; import bcrypt from 'bcryptjs'; import path from 'node:path'; import { fileURLToPath } from 'node:url'; const DATABASE_URL = process.env['DATABASE_URL'] ?? 'file:./helpdesk.db'; const dbPath = DATABASE_URL.replace(/^file:/, ''); const sqlite = new Database(dbPath); const db = drizzle(sqlite, { schema }); async function seed() { console.log('🌱 Verificando usuário admin...'); const existingAdmin = await db.query.users.findFirst({ where: (users, { eq }) => eq(users.email, 'admin@helpdesk.local'), }); if (!existingAdmin) { const hashedPassword = await bcrypt.hash('admin123', 10); await db.insert(schema.users).values({ name: 'Administrador TI', email: 'admin@helpdesk.local', password: hashedPassword, role: 'admin', isActive: true, }); console.log('✅ Usuário admin criado com sucesso!'); console.log('E-mail: admin@helpdesk.local'); console.log('Senha: admin123'); } else { console.log('✅ Usuário admin já existe!'); } console.log('🌱 Verificando categorias...'); const existingCategories = await db.query.categories.findMany(); if (existingCategories.length === 0) { await db.insert(schema.categories).values([ { name: 'Hardware', slug: 'hardware', description: 'Problemas físicos em computadores, impressoras e periféricos' }, { name: 'Software', slug: 'software', description: 'Instalação, erros e licenças de programas' }, { name: 'Redes e Internet', slug: 'redes', description: 'Sem conexão, lentidão ou falhas no Wi-Fi/Cabo' }, { name: 'Acessos e Senhas', slug: 'acessos', description: 'Redefinição de senha, criação de e-mail e acessos a sistemas' }, { name: 'Dúvidas e Suporte', slug: 'duvidas', description: 'Dúvidas gerais sobre uso de sistemas e equipamentos' } ]); console.log('✅ Categorias padrão criadas com sucesso!'); } else { console.log('✅ Categorias já existem!'); } sqlite.close(); } seed().catch((err) => { console.error('❌ Erro no seed:', err); process.exit(1); });