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