46 lines
1.3 KiB
TypeScript
46 lines
1.3 KiB
TypeScript
import { defineTable } from 'convex/server';
|
|
import { v } from 'convex/values';
|
|
|
|
export const ausenciasTables = {
|
|
// Solicitações de Ausências
|
|
solicitacoesAusencias: defineTable({
|
|
funcionarioId: v.id('funcionarios'),
|
|
dataInicio: v.string(),
|
|
dataFim: v.string(),
|
|
motivo: v.string(),
|
|
status: v.union(
|
|
v.literal('aguardando_aprovacao'),
|
|
v.literal('aprovado'),
|
|
v.literal('reprovado')
|
|
),
|
|
gestorId: v.optional(v.id('usuarios')),
|
|
dataAprovacao: v.optional(v.number()),
|
|
dataReprovacao: v.optional(v.number()),
|
|
motivoReprovacao: v.optional(v.string()),
|
|
observacao: v.optional(v.string()),
|
|
criadoEm: 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_status', ['status'])
|
|
.index('by_funcionario_and_status', ['funcionarioId', 'status']),
|
|
|
|
notificacoesAusencias: defineTable({
|
|
destinatarioId: v.id('usuarios'),
|
|
solicitacaoAusenciaId: v.id('solicitacoesAusencias'),
|
|
tipo: v.union(v.literal('nova_solicitacao'), v.literal('aprovado'), v.literal('reprovado')),
|
|
lida: v.boolean(),
|
|
mensagem: v.string()
|
|
})
|
|
.index('by_destinatario', ['destinatarioId'])
|
|
.index('by_destinatario_and_lida', ['destinatarioId', 'lida'])
|
|
};
|