feat: update ESLint and TypeScript configurations across frontend and backend; enhance component structure and improve data handling in various modules

This commit is contained in:
2025-12-02 16:36:02 -03:00
parent f48d28067c
commit d79e6959c3
215 changed files with 29474 additions and 28173 deletions

View File

@@ -1,202 +1,201 @@
import { v } from "convex/values";
import { mutation, query } from "./_generated/server";
import { Id } from "./_generated/dataModel";
import { v } from 'convex/values';
import { mutation, query } from './_generated/server';
import { Id } from './_generated/dataModel';
// Mutation para fazer upload de arquivo e obter o storage ID
export const generateUploadUrl = mutation({
args: {},
returns: v.string(),
handler: async (ctx) => {
return await ctx.storage.generateUploadUrl();
},
args: {},
returns: v.string(),
handler: async (ctx) => {
return await ctx.storage.generateUploadUrl();
}
});
// Mutation para atualizar um campo de documento do funcionário
export const updateDocumento = mutation({
args: {
funcionarioId: v.id("funcionarios"),
campo: v.string(),
storageId: v.union(v.id("_storage"), v.null()),
},
returns: v.null(),
handler: async (ctx, args) => {
const funcionario = await ctx.db.get(args.funcionarioId);
if (!funcionario) {
throw new Error("Funcionário não encontrado");
}
args: {
funcionarioId: v.id('funcionarios'),
campo: v.string(),
storageId: v.union(v.id('_storage'), v.null())
},
returns: v.null(),
handler: async (ctx, args) => {
const funcionario = await ctx.db.get(args.funcionarioId);
if (!funcionario) {
throw new Error('Funcionário não encontrado');
}
// Atualizar o campo específico do documento
await ctx.db.patch(args.funcionarioId, {
[args.campo]: args.storageId,
});
// Atualizar o campo específico do documento
await ctx.db.patch(args.funcionarioId, {
[args.campo]: args.storageId
});
return null;
},
return null;
}
});
// Query para obter URLs de todos os documentos de um funcionário
export const getDocumentosUrls = query({
args: { funcionarioId: v.id("funcionarios") },
returns: v.object({
certidaoAntecedentesPF: v.union(v.string(), v.null()),
certidaoAntecedentesJFPE: v.union(v.string(), v.null()),
certidaoAntecedentesSDS: v.union(v.string(), v.null()),
certidaoAntecedentesTJPE: v.union(v.string(), v.null()),
certidaoImprobidade: v.union(v.string(), v.null()),
rgFrente: v.union(v.string(), v.null()),
rgVerso: v.union(v.string(), v.null()),
cpfFrente: v.union(v.string(), v.null()),
cpfVerso: v.union(v.string(), v.null()),
situacaoCadastralCPF: v.union(v.string(), v.null()),
tituloEleitorFrente: v.union(v.string(), v.null()),
tituloEleitorVerso: v.union(v.string(), v.null()),
comprovanteVotacao: v.union(v.string(), v.null()),
carteiraProfissionalFrente: v.union(v.string(), v.null()),
carteiraProfissionalVerso: v.union(v.string(), v.null()),
comprovantePIS: v.union(v.string(), v.null()),
certidaoRegistroCivil: v.union(v.string(), v.null()),
certidaoNascimentoDependentes: v.union(v.string(), v.null()),
cpfDependentes: v.union(v.string(), v.null()),
reservistaDoc: v.union(v.string(), v.null()),
comprovanteEscolaridade: v.union(v.string(), v.null()),
comprovanteResidencia: v.union(v.string(), v.null()),
comprovanteContaBradesco: v.union(v.string(), v.null()),
declaracaoAcumulacaoCargo: v.union(v.string(), v.null()),
declaracaoDependentesIR: v.union(v.string(), v.null()),
declaracaoIdoneidade: v.union(v.string(), v.null()),
termoNepotismo: v.union(v.string(), v.null()),
termoOpcaoRemuneracao: v.union(v.string(), v.null()),
}),
handler: async (ctx, args) => {
const funcionario = await ctx.db.get(args.funcionarioId);
if (!funcionario) {
throw new Error("Funcionário não encontrado");
}
args: { funcionarioId: v.id('funcionarios') },
returns: v.object({
certidaoAntecedentesPF: v.union(v.string(), v.null()),
certidaoAntecedentesJFPE: v.union(v.string(), v.null()),
certidaoAntecedentesSDS: v.union(v.string(), v.null()),
certidaoAntecedentesTJPE: v.union(v.string(), v.null()),
certidaoImprobidade: v.union(v.string(), v.null()),
rgFrente: v.union(v.string(), v.null()),
rgVerso: v.union(v.string(), v.null()),
cpfFrente: v.union(v.string(), v.null()),
cpfVerso: v.union(v.string(), v.null()),
situacaoCadastralCPF: v.union(v.string(), v.null()),
tituloEleitorFrente: v.union(v.string(), v.null()),
tituloEleitorVerso: v.union(v.string(), v.null()),
comprovanteVotacao: v.union(v.string(), v.null()),
carteiraProfissionalFrente: v.union(v.string(), v.null()),
carteiraProfissionalVerso: v.union(v.string(), v.null()),
comprovantePIS: v.union(v.string(), v.null()),
certidaoRegistroCivil: v.union(v.string(), v.null()),
certidaoNascimentoDependentes: v.union(v.string(), v.null()),
cpfDependentes: v.union(v.string(), v.null()),
reservistaDoc: v.union(v.string(), v.null()),
comprovanteEscolaridade: v.union(v.string(), v.null()),
comprovanteResidencia: v.union(v.string(), v.null()),
comprovanteContaBradesco: v.union(v.string(), v.null()),
declaracaoAcumulacaoCargo: v.union(v.string(), v.null()),
declaracaoDependentesIR: v.union(v.string(), v.null()),
declaracaoIdoneidade: v.union(v.string(), v.null()),
termoNepotismo: v.union(v.string(), v.null()),
termoOpcaoRemuneracao: v.union(v.string(), v.null())
}),
handler: async (ctx, args) => {
const funcionario = await ctx.db.get(args.funcionarioId);
if (!funcionario) {
throw new Error('Funcionário não encontrado');
}
// Tipo exato do retorno para alinhar com o validator
type DocumentUrls = {
certidaoAntecedentesPF: string | null;
certidaoAntecedentesJFPE: string | null;
certidaoAntecedentesSDS: string | null;
certidaoAntecedentesTJPE: string | null;
certidaoImprobidade: string | null;
rgFrente: string | null;
rgVerso: string | null;
cpfFrente: string | null;
cpfVerso: string | null;
situacaoCadastralCPF: string | null;
tituloEleitorFrente: string | null;
tituloEleitorVerso: string | null;
comprovanteVotacao: string | null;
carteiraProfissionalFrente: string | null;
carteiraProfissionalVerso: string | null;
comprovantePIS: string | null;
certidaoRegistroCivil: string | null;
certidaoNascimentoDependentes: string | null;
cpfDependentes: string | null;
reservistaDoc: string | null;
comprovanteEscolaridade: string | null;
comprovanteResidencia: string | null;
comprovanteContaBradesco: string | null;
declaracaoAcumulacaoCargo: string | null;
declaracaoDependentesIR: string | null;
declaracaoIdoneidade: string | null;
termoNepotismo: string | null;
termoOpcaoRemuneracao: string | null;
};
// Tipo exato do retorno para alinhar com o validator
type DocumentUrls = {
certidaoAntecedentesPF: string | null;
certidaoAntecedentesJFPE: string | null;
certidaoAntecedentesSDS: string | null;
certidaoAntecedentesTJPE: string | null;
certidaoImprobidade: string | null;
rgFrente: string | null;
rgVerso: string | null;
cpfFrente: string | null;
cpfVerso: string | null;
situacaoCadastralCPF: string | null;
tituloEleitorFrente: string | null;
tituloEleitorVerso: string | null;
comprovanteVotacao: string | null;
carteiraProfissionalFrente: string | null;
carteiraProfissionalVerso: string | null;
comprovantePIS: string | null;
certidaoRegistroCivil: string | null;
certidaoNascimentoDependentes: string | null;
cpfDependentes: string | null;
reservistaDoc: string | null;
comprovanteEscolaridade: string | null;
comprovanteResidencia: string | null;
comprovanteContaBradesco: string | null;
declaracaoAcumulacaoCargo: string | null;
declaracaoDependentesIR: string | null;
declaracaoIdoneidade: string | null;
termoNepotismo: string | null;
termoOpcaoRemuneracao: string | null;
};
const urls: DocumentUrls = {
certidaoAntecedentesPF: null,
certidaoAntecedentesJFPE: null,
certidaoAntecedentesSDS: null,
certidaoAntecedentesTJPE: null,
certidaoImprobidade: null,
rgFrente: null,
rgVerso: null,
cpfFrente: null,
cpfVerso: null,
situacaoCadastralCPF: null,
tituloEleitorFrente: null,
tituloEleitorVerso: null,
comprovanteVotacao: null,
carteiraProfissionalFrente: null,
carteiraProfissionalVerso: null,
comprovantePIS: null,
certidaoRegistroCivil: null,
certidaoNascimentoDependentes: null,
cpfDependentes: null,
reservistaDoc: null,
comprovanteEscolaridade: null,
comprovanteResidencia: null,
comprovanteContaBradesco: null,
declaracaoAcumulacaoCargo: null,
declaracaoDependentesIR: null,
declaracaoIdoneidade: null,
termoNepotismo: null,
termoOpcaoRemuneracao: null,
};
const urls: DocumentUrls = {
certidaoAntecedentesPF: null,
certidaoAntecedentesJFPE: null,
certidaoAntecedentesSDS: null,
certidaoAntecedentesTJPE: null,
certidaoImprobidade: null,
rgFrente: null,
rgVerso: null,
cpfFrente: null,
cpfVerso: null,
situacaoCadastralCPF: null,
tituloEleitorFrente: null,
tituloEleitorVerso: null,
comprovanteVotacao: null,
carteiraProfissionalFrente: null,
carteiraProfissionalVerso: null,
comprovantePIS: null,
certidaoRegistroCivil: null,
certidaoNascimentoDependentes: null,
cpfDependentes: null,
reservistaDoc: null,
comprovanteEscolaridade: null,
comprovanteResidencia: null,
comprovanteContaBradesco: null,
declaracaoAcumulacaoCargo: null,
declaracaoDependentesIR: null,
declaracaoIdoneidade: null,
termoNepotismo: null,
termoOpcaoRemuneracao: null
};
const campos: Array<keyof DocumentUrls> = [
"certidaoAntecedentesPF",
"certidaoAntecedentesJFPE",
"certidaoAntecedentesSDS",
"certidaoAntecedentesTJPE",
"certidaoImprobidade",
"rgFrente",
"rgVerso",
"cpfFrente",
"cpfVerso",
"situacaoCadastralCPF",
"tituloEleitorFrente",
"tituloEleitorVerso",
"comprovanteVotacao",
"carteiraProfissionalFrente",
"carteiraProfissionalVerso",
"comprovantePIS",
"certidaoRegistroCivil",
"certidaoNascimentoDependentes",
"cpfDependentes",
"reservistaDoc",
"comprovanteEscolaridade",
"comprovanteResidencia",
"comprovanteContaBradesco",
"declaracaoAcumulacaoCargo",
"declaracaoDependentesIR",
"declaracaoIdoneidade",
"termoNepotismo",
"termoOpcaoRemuneracao",
];
const campos: Array<keyof DocumentUrls> = [
'certidaoAntecedentesPF',
'certidaoAntecedentesJFPE',
'certidaoAntecedentesSDS',
'certidaoAntecedentesTJPE',
'certidaoImprobidade',
'rgFrente',
'rgVerso',
'cpfFrente',
'cpfVerso',
'situacaoCadastralCPF',
'tituloEleitorFrente',
'tituloEleitorVerso',
'comprovanteVotacao',
'carteiraProfissionalFrente',
'carteiraProfissionalVerso',
'comprovantePIS',
'certidaoRegistroCivil',
'certidaoNascimentoDependentes',
'cpfDependentes',
'reservistaDoc',
'comprovanteEscolaridade',
'comprovanteResidencia',
'comprovanteContaBradesco',
'declaracaoAcumulacaoCargo',
'declaracaoDependentesIR',
'declaracaoIdoneidade',
'termoNepotismo',
'termoOpcaoRemuneracao'
];
for (const campo of campos) {
const storageId = (funcionario as Record<string, unknown>)[campo as string] as
| Id<"_storage">
| undefined;
if (storageId) {
urls[campo] = await ctx.storage.getUrl(storageId);
} else {
urls[campo] = null;
}
}
for (const campo of campos) {
const storageId = (funcionario as Record<string, unknown>)[campo as string] as
| Id<'_storage'>
| undefined;
if (storageId) {
urls[campo] = await ctx.storage.getUrl(storageId);
} else {
urls[campo] = null;
}
}
return urls;
},
return urls;
}
});
// Query para obter metadados de um documento
export const getDocumentoMetadata = query({
args: { storageId: v.id("_storage") },
returns: v.union(
v.object({
_id: v.id("_storage"),
_creationTime: v.number(),
contentType: v.optional(v.string()),
sha256: v.string(),
size: v.number(),
}),
v.null()
),
handler: async (ctx, args) => {
return await ctx.db.system.get(args.storageId);
},
args: { storageId: v.id('_storage') },
returns: v.union(
v.object({
_id: v.id('_storage'),
_creationTime: v.number(),
contentType: v.optional(v.string()),
sha256: v.string(),
size: v.number()
}),
v.null()
),
handler: async (ctx, args) => {
return await ctx.db.system.get(args.storageId);
}
});