Files
sgse-app/packages/backend/convex/tables/ferias.ts

57 lines
1.5 KiB
TypeScript

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'),
v.literal('cancelado')
),
lida: v.boolean(),
mensagem: v.string()
})
.index('by_destinatario', ['destinatarioId'])
.index('by_destinatario_and_lida', ['destinatarioId', 'lida'])
};