Compare commits

..

2 Commits

View File

@@ -10,7 +10,6 @@ export const simboloTipo = v.union(
export type SimboloTipo = Infer<typeof simboloTipo>; export type SimboloTipo = Infer<typeof simboloTipo>;
export default defineSchema({ export default defineSchema({
...tables,
todos: defineTable({ todos: defineTable({
text: v.string(), text: v.string(),
completed: v.boolean(), completed: v.boolean(),
@@ -32,26 +31,26 @@ export default defineSchema({
desligamentoData: v.optional(v.string()), desligamentoData: v.optional(v.string()),
simboloId: v.id("simbolos"), simboloId: v.id("simbolos"),
simboloTipo: simboloTipo, simboloTipo: simboloTipo,
// Dados Pessoais Adicionais (opcionais) // Dados Pessoais Adicionais (opcionais)
nomePai: v.optional(v.string()), nomePai: v.optional(v.string()),
nomeMae: v.optional(v.string()), nomeMae: v.optional(v.string()),
naturalidade: v.optional(v.string()), naturalidade: v.optional(v.string()),
naturalidadeUF: v.optional(v.string()), naturalidadeUF: v.optional(v.string()),
sexo: v.optional(v.union( sexo: v.optional(
v.literal("masculino"), v.union(v.literal("masculino"), v.literal("feminino"), v.literal("outro"))
v.literal("feminino"), ),
v.literal("outro") estadoCivil: v.optional(
)), v.union(
estadoCivil: v.optional(v.union( v.literal("solteiro"),
v.literal("solteiro"), v.literal("casado"),
v.literal("casado"), v.literal("divorciado"),
v.literal("divorciado"), v.literal("viuvo"),
v.literal("viuvo"), v.literal("uniao_estavel")
v.literal("uniao_estavel") )
)), ),
nacionalidade: v.optional(v.string()), nacionalidade: v.optional(v.string()),
// Documentos Pessoais // Documentos Pessoais
rgOrgaoExpedidor: v.optional(v.string()), rgOrgaoExpedidor: v.optional(v.string()),
rgDataEmissao: v.optional(v.string()), rgDataEmissao: v.optional(v.string()),
@@ -64,29 +63,25 @@ export default defineSchema({
tituloEleitorZona: v.optional(v.string()), tituloEleitorZona: v.optional(v.string()),
tituloEleitorSecao: v.optional(v.string()), tituloEleitorSecao: v.optional(v.string()),
pisNumero: v.optional(v.string()), pisNumero: v.optional(v.string()),
// Formação e Saúde // Formação e Saúde
grauInstrucao: v.optional(v.union( grauInstrucao: v.optional(
v.literal("fundamental"), v.union(
v.literal("medio"), v.literal("fundamental"),
v.literal("superior"), v.literal("medio"),
v.literal("pos_graduacao"), v.literal("superior"),
v.literal("mestrado"), v.literal("pos_graduacao"),
v.literal("doutorado") v.literal("mestrado"),
)), v.literal("doutorado")
)
),
formacao: v.optional(v.string()), formacao: v.optional(v.string()),
formacaoRegistro: v.optional(v.string()), formacaoRegistro: v.optional(v.string()),
grupoSanguineo: v.optional(v.union( grupoSanguineo: v.optional(
v.literal("A"), v.union(v.literal("A"), v.literal("B"), v.literal("AB"), v.literal("O"))
v.literal("B"), ),
v.literal("AB"), fatorRH: v.optional(v.union(v.literal("positivo"), v.literal("negativo"))),
v.literal("O")
)),
fatorRH: v.optional(v.union(
v.literal("positivo"),
v.literal("negativo")
)),
// Cargo e Vínculo // Cargo e Vínculo
descricaoCargo: v.optional(v.string()), descricaoCargo: v.optional(v.string()),
nomeacaoPortaria: v.optional(v.string()), nomeacaoPortaria: v.optional(v.string()),
@@ -94,17 +89,15 @@ export default defineSchema({
nomeacaoDOE: v.optional(v.string()), nomeacaoDOE: v.optional(v.string()),
pertenceOrgaoPublico: v.optional(v.boolean()), pertenceOrgaoPublico: v.optional(v.boolean()),
orgaoOrigem: v.optional(v.string()), orgaoOrigem: v.optional(v.string()),
aposentado: v.optional(v.union( aposentado: v.optional(
v.literal("nao"), v.union(v.literal("nao"), v.literal("funape_ipsep"), v.literal("inss"))
v.literal("funape_ipsep"), ),
v.literal("inss")
)),
// Dados Bancários // Dados Bancários
contaBradescoNumero: v.optional(v.string()), contaBradescoNumero: v.optional(v.string()),
contaBradescoDV: v.optional(v.string()), contaBradescoDV: v.optional(v.string()),
contaBradescoAgencia: v.optional(v.string()), contaBradescoAgencia: v.optional(v.string()),
// Documentos Anexos (Storage IDs) // Documentos Anexos (Storage IDs)
certidaoAntecedentesPF: v.optional(v.id("_storage")), certidaoAntecedentesPF: v.optional(v.id("_storage")),
certidaoAntecedentesJFPE: v.optional(v.id("_storage")), certidaoAntecedentesJFPE: v.optional(v.id("_storage")),
@@ -129,7 +122,7 @@ export default defineSchema({
comprovanteEscolaridade: v.optional(v.id("_storage")), comprovanteEscolaridade: v.optional(v.id("_storage")),
comprovanteResidencia: v.optional(v.id("_storage")), comprovanteResidencia: v.optional(v.id("_storage")),
comprovanteContaBradesco: v.optional(v.id("_storage")), comprovanteContaBradesco: v.optional(v.id("_storage")),
// Declarações (Storage IDs) // Declarações (Storage IDs)
declaracaoAcumulacaoCargo: v.optional(v.id("_storage")), declaracaoAcumulacaoCargo: v.optional(v.id("_storage")),
declaracaoDependentesIR: v.optional(v.id("_storage")), declaracaoDependentesIR: v.optional(v.id("_storage")),
@@ -198,26 +191,28 @@ export default defineSchema({
ultimoAcesso: v.optional(v.number()), ultimoAcesso: v.optional(v.number()),
criadoEm: v.number(), criadoEm: v.number(),
atualizadoEm: v.number(), atualizadoEm: v.number(),
// Controle de Bloqueio e Segurança // Controle de Bloqueio e Segurança
bloqueado: v.optional(v.boolean()), bloqueado: v.optional(v.boolean()),
motivoBloqueio: v.optional(v.string()), motivoBloqueio: v.optional(v.string()),
dataBloqueio: v.optional(v.number()), dataBloqueio: v.optional(v.number()),
tentativasLogin: v.optional(v.number()), // contador de tentativas falhas tentativasLogin: v.optional(v.number()), // contador de tentativas falhas
ultimaTentativaLogin: v.optional(v.number()), // timestamp da última tentativa ultimaTentativaLogin: v.optional(v.number()), // timestamp da última tentativa
// Campos de Chat e Perfil // Campos de Chat e Perfil
avatar: v.optional(v.string()), // "avatar-1" até "avatar-15" ou storageId avatar: v.optional(v.string()), // "avatar-1" até "avatar-15" ou storageId
fotoPerfil: v.optional(v.id("_storage")), fotoPerfil: v.optional(v.id("_storage")),
setor: v.optional(v.string()), setor: v.optional(v.string()),
statusMensagem: v.optional(v.string()), // max 100 chars statusMensagem: v.optional(v.string()), // max 100 chars
statusPresenca: v.optional(v.union( statusPresenca: v.optional(
v.literal("online"), v.union(
v.literal("offline"), v.literal("online"),
v.literal("ausente"), v.literal("offline"),
v.literal("externo"), v.literal("ausente"),
v.literal("em_reuniao") v.literal("externo"),
)), v.literal("em_reuniao")
)
),
ultimaAtividade: v.optional(v.number()), // timestamp ultimaAtividade: v.optional(v.number()), // timestamp
notificacoesAtivadas: v.optional(v.boolean()), notificacoesAtivadas: v.optional(v.boolean()),
somNotificacao: v.optional(v.boolean()), somNotificacao: v.optional(v.boolean()),
@@ -412,8 +407,7 @@ export default defineSchema({
testadoEm: v.optional(v.number()), testadoEm: v.optional(v.number()),
configuradoPor: v.id("usuarios"), configuradoPor: v.id("usuarios"),
atualizadoEm: v.number(), atualizadoEm: v.number(),
}) }).index("by_ativo", ["ativo"]),
.index("by_ativo", ["ativo"]),
// Fila de Emails // Fila de Emails
notificacoesEmail: defineTable({ notificacoesEmail: defineTable({
@@ -444,8 +438,7 @@ export default defineSchema({
chave: v.string(), // "sessao_duracao", "max_tentativas_login", etc. chave: v.string(), // "sessao_duracao", "max_tentativas_login", etc.
valor: v.string(), valor: v.string(),
descricao: v.string(), descricao: v.string(),
}) }).index("by_chave", ["chave"]),
.index("by_chave", ["chave"]),
// Sistema de Chat // Sistema de Chat
conversas: defineTable({ conversas: defineTable({
@@ -475,10 +468,14 @@ export default defineSchema({
arquivoNome: v.optional(v.string()), arquivoNome: v.optional(v.string()),
arquivoTamanho: v.optional(v.number()), arquivoTamanho: v.optional(v.number()),
arquivoTipo: v.optional(v.string()), arquivoTipo: v.optional(v.string()),
reagiuPor: v.optional(v.array(v.object({ reagiuPor: v.optional(
usuarioId: v.id("usuarios"), v.array(
emoji: v.string() v.object({
}))), usuarioId: v.id("usuarios"),
emoji: v.string(),
})
)
),
mencoes: v.optional(v.array(v.id("usuarios"))), mencoes: v.optional(v.array(v.id("usuarios"))),
agendadaPara: v.optional(v.number()), // timestamp agendadaPara: v.optional(v.number()), // timestamp
enviadaEm: v.number(), enviadaEm: v.number(),