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']) };