56 lines
1.5 KiB
TypeScript
56 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')
|
|
),
|
|
lida: v.boolean(),
|
|
mensagem: v.string()
|
|
})
|
|
.index('by_destinatario', ['destinatarioId'])
|
|
.index('by_destinatario_and_lida', ['destinatarioId', 'lida'])
|
|
};
|