import { defineTable } from 'convex/server';
import { v } from 'convex/values';

export const pedidosTables = {
	pedidos: defineTable({
		numeroSei: v.optional(v.string()),
		status: v.union(
			v.literal('em_rascunho'),
			v.literal('aguardando_aceite'),
			v.literal('em_analise'),
			v.literal('precisa_ajustes'),
			v.literal('cancelado'),
			v.literal('concluido')
		),
		acaoId: v.optional(v.id('acoes')),
		criadoPor: v.id('usuarios'),
		criadoEm: v.number(),
		atualizadoEm: v.number()
	})
		.index('by_numeroSei', ['numeroSei'])
		.index('by_status', ['status'])
		.index('by_criadoPor', ['criadoPor'])
		.index('by_acaoId', ['acaoId']),

	pedidoItems: defineTable({
		pedidoId: v.id('pedidos'),
		produtoId: v.id('produtos'),
		valorEstimado: v.string(),
		valorReal: v.optional(v.string()),
		quantidade: v.number(),
		adicionadoPor: v.id('funcionarios'),
		criadoEm: v.number()
	})
		.index('by_pedidoId', ['pedidoId'])
		.index('by_produtoId', ['produtoId'])
		.index('by_adicionadoPor', ['adicionadoPor']),

	historicoPedidos: defineTable({
		pedidoId: v.id('pedidos'),
		usuarioId: v.id('usuarios'),
		acao: v.string(), // "criacao", "alteracao_status", "adicao_item", "remocao_item", "edicao_item"
		detalhes: v.optional(v.string()), // JSON string
		data: v.number()
	})
		.index('by_pedidoId', ['pedidoId'])
		.index('by_usuarioId', ['usuarioId'])
		.index('by_data', ['data'])
};
