refactor: update user seeding logic and enhance database cleanup process
- Modified user seeding logic to use a variable for the TI Master user ID and updated the admin user matricula. - Improved the database cleanup function by adding detailed logging and restructuring the deletion process for various entities, ensuring a more organized and comprehensive cleanup.
This commit is contained in:
2
bun.lock
2
bun.lock
@@ -61,7 +61,6 @@
|
||||
"version": "1.0.0",
|
||||
"dependencies": {
|
||||
"@dicebear/avataaars": "^9.2.4",
|
||||
"@types/nodemailer": "^7.0.3",
|
||||
"convex": "catalog:",
|
||||
"nodemailer": "^7.0.10",
|
||||
},
|
||||
@@ -70,6 +69,7 @@
|
||||
"@types/estree": "^1.0.8",
|
||||
"@types/json-schema": "^7.0.15",
|
||||
"@types/node": "^24.3.0",
|
||||
"@types/nodemailer": "^7.0.3",
|
||||
"@types/pako": "^2.0.4",
|
||||
"@types/raf": "^3.4.3",
|
||||
"@types/trusted-types": "^2.0.7",
|
||||
|
||||
@@ -340,7 +340,7 @@ export const seedDatabase = internalMutation({
|
||||
|
||||
// TI Master
|
||||
const senhaTIMaster = await hashPassword("TI@123");
|
||||
await ctx.db.insert("usuarios", {
|
||||
const usuarioTIMasterId = await ctx.db.insert("usuarios", {
|
||||
matricula: "1000",
|
||||
senhaHash: senhaTIMaster,
|
||||
nome: "Gestor TI Master",
|
||||
@@ -357,7 +357,7 @@ export const seedDatabase = internalMutation({
|
||||
// Admin (permissões configuráveis)
|
||||
const senhaAdmin = await hashPassword("Admin@123");
|
||||
const adminId = await ctx.db.insert("usuarios", {
|
||||
matricula: "2000",
|
||||
matricula: "0000",
|
||||
senhaHash: senhaAdmin,
|
||||
nome: "Administrador Geral",
|
||||
email: "admin@sgse.pe.gov.br",
|
||||
@@ -368,7 +368,7 @@ export const seedDatabase = internalMutation({
|
||||
criadoEm: Date.now(),
|
||||
atualizadoEm: Date.now(),
|
||||
});
|
||||
console.log(" ✅ Admin criado (matrícula: 2000, senha: Admin@123)");
|
||||
console.log(" ✅ Admin criado (matrícula: 0000, senha: Admin@123)");
|
||||
|
||||
// 2.1 Criar catálogo de permissões por ação e conceder a Admin/TI
|
||||
console.log("🔐 Criando permissões por ação...");
|
||||
@@ -495,16 +495,33 @@ export const seedDatabase = internalMutation({
|
||||
// 6. Inserir solicitações de acesso
|
||||
console.log("📋 Inserindo solicitações de acesso...");
|
||||
for (const solicitacao of solicitacoesAcessoData) {
|
||||
await ctx.db.insert("solicitacoesAcesso", {
|
||||
dataResposta: solicitacao.dataResposta,
|
||||
dataSolicitacao: solicitacao.dataSolicitacao,
|
||||
email: solicitacao.email,
|
||||
matricula: solicitacao.matricula,
|
||||
const dadosSolicitacao: {
|
||||
nome: string;
|
||||
matricula: string;
|
||||
email: string;
|
||||
telefone: string;
|
||||
status: "pendente" | "aprovado" | "rejeitado";
|
||||
dataSolicitacao: number;
|
||||
dataResposta?: number;
|
||||
observacoes?: string;
|
||||
} = {
|
||||
nome: solicitacao.nome,
|
||||
observacoes: solicitacao.observacoes,
|
||||
status: solicitacao.status,
|
||||
matricula: solicitacao.matricula,
|
||||
email: solicitacao.email,
|
||||
telefone: solicitacao.telefone,
|
||||
});
|
||||
status: solicitacao.status,
|
||||
dataSolicitacao: solicitacao.dataSolicitacao,
|
||||
};
|
||||
|
||||
if (solicitacao.dataResposta) {
|
||||
dadosSolicitacao.dataResposta = solicitacao.dataResposta;
|
||||
}
|
||||
|
||||
if (solicitacao.observacoes) {
|
||||
dadosSolicitacao.observacoes = solicitacao.observacoes;
|
||||
}
|
||||
|
||||
await ctx.db.insert("solicitacoesAcesso", dadosSolicitacao);
|
||||
console.log(` ✅ Solicitação criada: ${solicitacao.nome}`);
|
||||
}
|
||||
|
||||
@@ -592,56 +609,206 @@ export const clearDatabase = internalMutation({
|
||||
handler: async (ctx) => {
|
||||
console.log("🗑️ Limpando banco de dados...");
|
||||
|
||||
// Limpar logs de acesso
|
||||
const logs = await ctx.db.query("logsAcesso").collect();
|
||||
for (const log of logs) {
|
||||
// Limpar em ordem (respeitando dependências)
|
||||
|
||||
// 1. Tabelas de logs e auditoria
|
||||
const logsAcesso = await ctx.db.query("logsAcesso").collect();
|
||||
for (const log of logsAcesso) {
|
||||
await ctx.db.delete(log._id);
|
||||
}
|
||||
console.log(` ✅ ${logs.length} logs de acesso removidos`);
|
||||
console.log(` ✅ ${logsAcesso.length} logs de acesso removidos`);
|
||||
|
||||
// Limpar sessões
|
||||
const logsLogin = await ctx.db.query("logsLogin").collect();
|
||||
for (const log of logsLogin) {
|
||||
await ctx.db.delete(log._id);
|
||||
}
|
||||
console.log(` ✅ ${logsLogin.length} logs de login removidos`);
|
||||
|
||||
const logsAtividades = await ctx.db.query("logsAtividades").collect();
|
||||
for (const log of logsAtividades) {
|
||||
await ctx.db.delete(log._id);
|
||||
}
|
||||
console.log(` ✅ ${logsAtividades.length} logs de atividades removidos`);
|
||||
|
||||
// 2. Sistema de chat
|
||||
const leituras = await ctx.db.query("leituras").collect();
|
||||
for (const leitura of leituras) {
|
||||
await ctx.db.delete(leitura._id);
|
||||
}
|
||||
console.log(` ✅ ${leituras.length} leituras removidas`);
|
||||
|
||||
const mensagens = await ctx.db.query("mensagens").collect();
|
||||
for (const mensagem of mensagens) {
|
||||
await ctx.db.delete(mensagem._id);
|
||||
}
|
||||
console.log(` ✅ ${mensagens.length} mensagens removidas`);
|
||||
|
||||
const digitando = await ctx.db.query("digitando").collect();
|
||||
for (const d of digitando) {
|
||||
await ctx.db.delete(d._id);
|
||||
}
|
||||
console.log(` ✅ ${digitando.length} registros de digitando removidos`);
|
||||
|
||||
const conversas = await ctx.db.query("conversas").collect();
|
||||
for (const conversa of conversas) {
|
||||
await ctx.db.delete(conversa._id);
|
||||
}
|
||||
console.log(` ✅ ${conversas.length} conversas removidas`);
|
||||
|
||||
// 3. Notificações
|
||||
const notificacoes = await ctx.db.query("notificacoes").collect();
|
||||
for (const notificacao of notificacoes) {
|
||||
await ctx.db.delete(notificacao._id);
|
||||
}
|
||||
console.log(` ✅ ${notificacoes.length} notificações removidas`);
|
||||
|
||||
const notificacoesEmail = await ctx.db.query("notificacoesEmail").collect();
|
||||
for (const email of notificacoesEmail) {
|
||||
await ctx.db.delete(email._id);
|
||||
}
|
||||
console.log(
|
||||
` ✅ ${notificacoesEmail.length} notificações de email removidas`
|
||||
);
|
||||
|
||||
const notificacoesFerias = await ctx.db
|
||||
.query("notificacoesFerias")
|
||||
.collect();
|
||||
for (const notif of notificacoesFerias) {
|
||||
await ctx.db.delete(notif._id);
|
||||
}
|
||||
console.log(
|
||||
` ✅ ${notificacoesFerias.length} notificações de férias removidas`
|
||||
);
|
||||
|
||||
// 4. Férias e períodos aquisitivos
|
||||
const solicitacoesFerias = await ctx.db
|
||||
.query("solicitacoesFerias")
|
||||
.collect();
|
||||
for (const solicitacao of solicitacoesFerias) {
|
||||
await ctx.db.delete(solicitacao._id);
|
||||
}
|
||||
console.log(
|
||||
` ✅ ${solicitacoesFerias.length} solicitações de férias removidas`
|
||||
);
|
||||
|
||||
const periodosAquisitivos = await ctx.db
|
||||
.query("periodosAquisitivos")
|
||||
.collect();
|
||||
for (const periodo of periodosAquisitivos) {
|
||||
await ctx.db.delete(periodo._id);
|
||||
}
|
||||
console.log(
|
||||
` ✅ ${periodosAquisitivos.length} períodos aquisitivos removidos`
|
||||
);
|
||||
|
||||
// 5. Atestados
|
||||
const atestados = await ctx.db.query("atestados").collect();
|
||||
for (const atestado of atestados) {
|
||||
await ctx.db.delete(atestado._id);
|
||||
}
|
||||
console.log(` ✅ ${atestados.length} atestados removidos`);
|
||||
|
||||
// 6. Times e membros
|
||||
const timesMembros = await ctx.db.query("timesMembros").collect();
|
||||
for (const membro of timesMembros) {
|
||||
await ctx.db.delete(membro._id);
|
||||
}
|
||||
console.log(` ✅ ${timesMembros.length} membros de times removidos`);
|
||||
|
||||
const times = await ctx.db.query("times").collect();
|
||||
for (const time of times) {
|
||||
await ctx.db.delete(time._id);
|
||||
}
|
||||
console.log(` ✅ ${times.length} times removidos`);
|
||||
|
||||
// 7. Cursos
|
||||
const cursos = await ctx.db.query("cursos").collect();
|
||||
for (const curso of cursos) {
|
||||
await ctx.db.delete(curso._id);
|
||||
}
|
||||
console.log(` ✅ ${cursos.length} cursos removidos`);
|
||||
|
||||
// 8. Bloqueios de usuários
|
||||
const bloqueiosUsuarios = await ctx.db.query("bloqueiosUsuarios").collect();
|
||||
for (const bloqueio of bloqueiosUsuarios) {
|
||||
await ctx.db.delete(bloqueio._id);
|
||||
}
|
||||
console.log(
|
||||
` ✅ ${bloqueiosUsuarios.length} bloqueios de usuários removidos`
|
||||
);
|
||||
|
||||
// 9. Perfis customizados
|
||||
const perfisCustomizados = await ctx.db
|
||||
.query("perfisCustomizados")
|
||||
.collect();
|
||||
for (const perfil of perfisCustomizados) {
|
||||
await ctx.db.delete(perfil._id);
|
||||
}
|
||||
console.log(
|
||||
` ✅ ${perfisCustomizados.length} perfis customizados removidos`
|
||||
);
|
||||
|
||||
// 10. Templates de mensagens
|
||||
const templatesMensagens = await ctx.db
|
||||
.query("templatesMensagens")
|
||||
.collect();
|
||||
for (const template of templatesMensagens) {
|
||||
await ctx.db.delete(template._id);
|
||||
}
|
||||
console.log(
|
||||
` ✅ ${templatesMensagens.length} templates de mensagens removidos`
|
||||
);
|
||||
|
||||
// 11. Configurações
|
||||
const configuracaoEmail = await ctx.db.query("configuracaoEmail").collect();
|
||||
for (const config of configuracaoEmail) {
|
||||
await ctx.db.delete(config._id);
|
||||
}
|
||||
console.log(
|
||||
` ✅ ${configuracaoEmail.length} configurações de email removidas`
|
||||
);
|
||||
|
||||
const configuracaoAcesso = await ctx.db
|
||||
.query("configuracaoAcesso")
|
||||
.collect();
|
||||
for (const config of configuracaoAcesso) {
|
||||
await ctx.db.delete(config._id);
|
||||
}
|
||||
console.log(
|
||||
` ✅ ${configuracaoAcesso.length} configurações de acesso removidas`
|
||||
);
|
||||
|
||||
// 12. Monitoramento
|
||||
const alertHistory = await ctx.db.query("alertHistory").collect();
|
||||
for (const alert of alertHistory) {
|
||||
await ctx.db.delete(alert._id);
|
||||
}
|
||||
console.log(` ✅ ${alertHistory.length} histórico de alertas removido`);
|
||||
|
||||
const alertConfigurations = await ctx.db
|
||||
.query("alertConfigurations")
|
||||
.collect();
|
||||
for (const alert of alertConfigurations) {
|
||||
await ctx.db.delete(alert._id);
|
||||
}
|
||||
console.log(
|
||||
` ✅ ${alertConfigurations.length} configurações de alertas removidas`
|
||||
);
|
||||
|
||||
const systemMetrics = await ctx.db.query("systemMetrics").collect();
|
||||
for (const metric of systemMetrics) {
|
||||
await ctx.db.delete(metric._id);
|
||||
}
|
||||
console.log(` ✅ ${systemMetrics.length} métricas do sistema removidas`);
|
||||
|
||||
// 13. Sessões
|
||||
const sessoes = await ctx.db.query("sessoes").collect();
|
||||
for (const sessao of sessoes) {
|
||||
await ctx.db.delete(sessao._id);
|
||||
}
|
||||
console.log(` ✅ ${sessoes.length} sessões removidas`);
|
||||
|
||||
// Limpar usuários
|
||||
const usuarios = await ctx.db.query("usuarios").collect();
|
||||
for (const usuario of usuarios) {
|
||||
await ctx.db.delete(usuario._id);
|
||||
}
|
||||
console.log(` ✅ ${usuarios.length} usuários removidos`);
|
||||
|
||||
// Limpar funcionários
|
||||
const funcionarios = await ctx.db.query("funcionarios").collect();
|
||||
for (const funcionario of funcionarios) {
|
||||
await ctx.db.delete(funcionario._id);
|
||||
}
|
||||
console.log(` ✅ ${funcionarios.length} funcionários removidos`);
|
||||
|
||||
// Limpar símbolos
|
||||
const simbolos = await ctx.db.query("simbolos").collect();
|
||||
for (const simbolo of simbolos) {
|
||||
await ctx.db.delete(simbolo._id);
|
||||
}
|
||||
console.log(` ✅ ${simbolos.length} símbolos removidos`);
|
||||
|
||||
// Limpar solicitações de acesso
|
||||
const solicitacoes = await ctx.db.query("solicitacoesAcesso").collect();
|
||||
for (const solicitacao of solicitacoes) {
|
||||
await ctx.db.delete(solicitacao._id);
|
||||
}
|
||||
console.log(` ✅ ${solicitacoes.length} solicitações removidas`);
|
||||
|
||||
// Limpar menu-permissões
|
||||
const menuPermissoes = await ctx.db.query("menuPermissoes").collect();
|
||||
for (const mp of menuPermissoes) {
|
||||
await ctx.db.delete(mp._id);
|
||||
}
|
||||
console.log(` ✅ ${menuPermissoes.length} menu-permissões removidas`);
|
||||
|
||||
// Limpar menu-permissões personalizadas
|
||||
// 14. Menu-permissões personalizadas
|
||||
const menuPermissoesPersonalizadas = await ctx.db
|
||||
.query("menuPermissoesPersonalizadas")
|
||||
.collect();
|
||||
@@ -652,28 +819,74 @@ export const clearDatabase = internalMutation({
|
||||
` ✅ ${menuPermissoesPersonalizadas.length} menu-permissões personalizadas removidas`
|
||||
);
|
||||
|
||||
// Limpar role-permissões
|
||||
// 15. Menu-permissões
|
||||
const menuPermissoes = await ctx.db.query("menuPermissoes").collect();
|
||||
for (const mp of menuPermissoes) {
|
||||
await ctx.db.delete(mp._id);
|
||||
}
|
||||
console.log(` ✅ ${menuPermissoes.length} menu-permissões removidas`);
|
||||
|
||||
// 16. Role-permissões
|
||||
const rolePermissoes = await ctx.db.query("rolePermissoes").collect();
|
||||
for (const rp of rolePermissoes) {
|
||||
await ctx.db.delete(rp._id);
|
||||
}
|
||||
console.log(` ✅ ${rolePermissoes.length} role-permissões removidas`);
|
||||
|
||||
// Limpar permissões
|
||||
// 17. Permissões
|
||||
const permissoes = await ctx.db.query("permissoes").collect();
|
||||
for (const permissao of permissoes) {
|
||||
await ctx.db.delete(permissao._id);
|
||||
}
|
||||
console.log(` ✅ ${permissoes.length} permissões removidas`);
|
||||
|
||||
// Limpar roles
|
||||
// 18. Usuários (deve vir antes de roles se houver referência)
|
||||
const usuarios = await ctx.db.query("usuarios").collect();
|
||||
for (const usuario of usuarios) {
|
||||
await ctx.db.delete(usuario._id);
|
||||
}
|
||||
console.log(` ✅ ${usuarios.length} usuários removidos`);
|
||||
|
||||
// 19. Funcionários
|
||||
const funcionarios = await ctx.db.query("funcionarios").collect();
|
||||
for (const funcionario of funcionarios) {
|
||||
await ctx.db.delete(funcionario._id);
|
||||
}
|
||||
console.log(` ✅ ${funcionarios.length} funcionários removidos`);
|
||||
|
||||
// 20. Solicitações de acesso
|
||||
const solicitacoesAcesso = await ctx.db
|
||||
.query("solicitacoesAcesso")
|
||||
.collect();
|
||||
for (const solicitacao of solicitacoesAcesso) {
|
||||
await ctx.db.delete(solicitacao._id);
|
||||
}
|
||||
console.log(
|
||||
` ✅ ${solicitacoesAcesso.length} solicitações de acesso removidas`
|
||||
);
|
||||
|
||||
// 21. Símbolos
|
||||
const simbolos = await ctx.db.query("simbolos").collect();
|
||||
for (const simbolo of simbolos) {
|
||||
await ctx.db.delete(simbolo._id);
|
||||
}
|
||||
console.log(` ✅ ${simbolos.length} símbolos removidos`);
|
||||
|
||||
// 22. Roles (deve vir por último se outras tabelas referenciam)
|
||||
const roles = await ctx.db.query("roles").collect();
|
||||
for (const role of roles) {
|
||||
await ctx.db.delete(role._id);
|
||||
}
|
||||
console.log(` ✅ ${roles.length} roles removidas`);
|
||||
|
||||
console.log("✨ Banco de dados limpo!");
|
||||
// 23. Todos (tabela de exemplo)
|
||||
const todos = await ctx.db.query("todos").collect();
|
||||
for (const todo of todos) {
|
||||
await ctx.db.delete(todo._id);
|
||||
}
|
||||
console.log(` ✅ ${todos.length} todos removidos`);
|
||||
|
||||
console.log("✨ Banco de dados completamente limpo!");
|
||||
return null;
|
||||
},
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user