46 lines
1.5 KiB
TypeScript
46 lines
1.5 KiB
TypeScript
import { defineTable } from 'convex/server';
|
|
import { v } from 'convex/values';
|
|
|
|
export const planejamentosTables = {
|
|
planejamentosPedidos: defineTable({
|
|
titulo: v.string(),
|
|
descricao: v.string(),
|
|
// Armazenar como yyyy-MM-dd para facilitar input type="date" no frontend.
|
|
data: v.string(),
|
|
responsavelId: v.id('funcionarios'),
|
|
acaoId: v.optional(v.id('acoes')),
|
|
status: v.union(v.literal('rascunho'), v.literal('gerado'), v.literal('cancelado')),
|
|
criadoPor: v.id('usuarios'),
|
|
criadoEm: v.number(),
|
|
atualizadoEm: v.number()
|
|
})
|
|
.index('by_responsavelId', ['responsavelId'])
|
|
.index('by_status', ['status'])
|
|
.index('by_criadoEm', ['criadoEm']),
|
|
|
|
planejamentoItens: defineTable({
|
|
planejamentoId: v.id('planejamentosPedidos'),
|
|
// Opcional no cadastro; obrigatório para gerar pedidos.
|
|
numeroDfd: v.optional(v.string()),
|
|
objetoId: v.id('objetos'),
|
|
quantidade: v.number(),
|
|
valorEstimado: v.string(),
|
|
// Preenchido após a geração (itens foram materializados no pedido).
|
|
pedidoId: v.optional(v.id('pedidos')),
|
|
criadoEm: v.number(),
|
|
atualizadoEm: v.number()
|
|
})
|
|
.index('by_planejamentoId', ['planejamentoId'])
|
|
.index('by_planejamentoId_and_numeroDfd', ['planejamentoId', 'numeroDfd']),
|
|
|
|
planejamentoPedidosLinks: defineTable({
|
|
planejamentoId: v.id('planejamentosPedidos'),
|
|
numeroDfd: v.string(),
|
|
pedidoId: v.id('pedidos'),
|
|
criadoEm: v.number()
|
|
})
|
|
.index('by_planejamentoId', ['planejamentoId'])
|
|
.index('by_pedidoId', ['pedidoId'])
|
|
.index('by_planejamentoId_and_numeroDfd', ['planejamentoId', 'numeroDfd'])
|
|
};
|