Files
sgse-app/packages/backend/convex/tables/atas.ts

43 lines
1.3 KiB
TypeScript

import { defineTable } from 'convex/server';
import { v } from 'convex/values';
export const atasTables = {
atas: defineTable({
numero: v.string(),
dataInicio: v.optional(v.string()),
dataFim: v.optional(v.string()),
dataProrrogacao: v.optional(v.string()),
empresaId: v.id('empresas'),
numeroSei: v.string(),
criadoPor: v.id('usuarios'),
criadoEm: v.number(),
atualizadoEm: v.number()
})
.index('by_numero', ['numero'])
.index('by_empresaId', ['empresaId'])
.index('by_numeroSei', ['numeroSei']),
atasObjetos: defineTable({
ataId: v.id('atas'),
objetoId: v.id('objetos'),
// Configuração de limite de uso por (ataId, objetoId)
quantidadeTotal: v.optional(v.number()),
limitePercentual: v.optional(v.number()), // padrão lógico: 50
// Controle transacional para evitar corrida; se ausente, pode ser inicializado via rebuild.
quantidadeUsada: v.optional(v.number())
})
.index('by_ataId', ['ataId'])
.index('by_objetoId', ['objetoId'])
.index('by_ataId_and_objetoId', ['ataId', 'objetoId']),
atasDocumentos: defineTable({
ataId: v.id('atas'),
nome: v.string(),
storageId: v.id('_storage'),
tipo: v.string(), // MIME type
tamanho: v.number(), // bytes
criadoPor: v.id('usuarios'),
criadoEm: v.number()
}).index('by_ataId', ['ataId'])
};