diff options
| author | zwlucas <lucas.fariamo08@gmail.com> | 2026-07-25 21:23:29 +0000 |
|---|---|---|
| committer | zwlucas <lucas.fariamo08@gmail.com> | 2026-07-25 21:23:29 +0000 |
| commit | ef55d9bb24430610b60c1b77821307cd72c08c55 (patch) | |
| tree | e6935a810b34370b0a4c821e55f6397aac50c832 /api/src/db/seed.ts | |
| download | helpdesk-ef55d9bb24430610b60c1b77821307cd72c08c55.tar.gz helpdesk-ef55d9bb24430610b60c1b77821307cd72c08c55.zip | |
Signed-off-by: zwlucas <lucas.fariamo08@gmail.com>
Diffstat (limited to 'api/src/db/seed.ts')
| -rw-r--r-- | api/src/db/seed.ts | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/api/src/db/seed.ts b/api/src/db/seed.ts new file mode 100644 index 0000000..2cde3ce --- /dev/null +++ b/api/src/db/seed.ts @@ -0,0 +1,60 @@ +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); +}); |