aboutsummaryrefslogtreecommitdiff
path: root/api/src/db/seed.ts
diff options
context:
space:
mode:
Diffstat (limited to 'api/src/db/seed.ts')
-rw-r--r--api/src/db/seed.ts60
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);
+});