feat: Introduce structured table definitions in convex/tables for various entities and remove the todos example table.

This commit is contained in:
2025-12-02 09:55:07 -03:00
parent 1c0bd219b2
commit 05e7f1181d
30 changed files with 2700 additions and 2535 deletions

View File

@@ -0,0 +1,55 @@
import { defineTable } from 'convex/server';
import { v } from 'convex/values';
export const feriasTables = {
ferias: defineTable({
funcionarioId: v.id('funcionarios'),
anoReferencia: v.number(),
dataInicio: v.string(),
dataFim: v.string(),
diasFerias: v.number(),
status: v.union(
v.literal('aguardando_aprovacao'),
v.literal('aprovado'),
v.literal('reprovado'),
v.literal('data_ajustada_aprovada'),
v.literal('EmFérias'),
v.literal('Cancelado_RH')
),
gestorId: v.optional(v.id('usuarios')),
observacao: v.optional(v.string()),
motivoReprovacao: v.optional(v.string()),
dataAprovacao: v.optional(v.number()),
dataReprovacao: v.optional(v.number()),
diasAbono: v.number(),
historicoAlteracoes: v.optional(
v.array(
v.object({
data: v.number(),
usuarioId: v.id('usuarios'),
acao: v.string()
})
)
)
})
.index('by_funcionario', ['funcionarioId'])
.index('by_funcionario_and_ano', ['funcionarioId', 'anoReferencia'])
.index('by_funcionario_and_status', ['funcionarioId', 'status'])
.index('by_status', ['status'])
.index('by_ano', ['anoReferencia']),
notificacoesFerias: defineTable({
destinatarioId: v.id('usuarios'),
feriasId: v.id('ferias'),
tipo: v.union(
v.literal('nova_solicitacao'),
v.literal('aprovado'),
v.literal('reprovado'),
v.literal('data_ajustada')
),
lida: v.boolean(),
mensagem: v.string()
})
.index('by_destinatario', ['destinatarioId'])
.index('by_destinatario_and_lida', ['destinatarioId', 'lida'])
};