43 lines
1.3 KiB
TypeScript
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'])
|
|
};
|