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:
@@ -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);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user