Banco de Dados

O RadarBov usa PostgreSQL 14 com a extensão PostGIS para o servidor, e SQLite no app mobile para funcionamento offline.


PostgreSQL — Servidor

Por que PostGIS

PostGIS adiciona suporte a tipos e funções geoespaciais ao PostgreSQL. O RadarBov usa isso para:

  • Armazenar coordenadas de paradas e viagens
  • Verificações de conformidade territorial (sobreposição com áreas embargadas)
  • Consultas geográficas de estabelecimentos

Extensão ltree

A extensão ltree é usada para representar hierarquias de acesso (ver Sistema de Acesso). Permite consultas hierárquicas eficientes como “todos os registros desta organização e seus sub-estabelecimentos”.

Principais tabelas

TabelaDomínioDescrição
usersAccountsUsuários
user_profilesAccountsPerfis/papéis do usuário
organizationsOrganizationsOrganizações
establishmentsEstablishmentsEstabelecimentos/propriedades
control_unitsEstablishmentsSubdivisões de estabelecimento
tagsTagsBrincos RFID
animals_ingressesAnimalsEntradas de animais
animals_egressesAnimalsSaídas de animais
tags_identificationsAnimalsIdentificações
gtasGTAsGuias de Trânsito Animal
travelsTravelsViagens
vehiclesTravelsVeículos
stopsTravelsParadas com GPS
sharesSharesCompartilhamentos ativos
invitesInvitesConvites pendentes e histórico

Migrações

As migrações são gerenciadas pelo Ecto. Cada migração está versionada no repositório e é aplicada automaticamente no deploy.


SQLite — App Mobile

O app mobile usa SQLite (via sqflite) para persistência local. O schema está na versão 34 e o arquivo é radarbov_db.db.

Principais tabelas locais

TabelaDescrição
userUsuário autenticado localmente
establishmentEstabelecimentos sincronizados
tagBrincos baixados/registrados offline
animals_ingressEntradas criadas offline
animals_ingress_m2mAssociação entrada ↔ brinco
animals_egressSaídas criadas offline
animals_egress_m2mAssociação saída ↔ brinco
animals_identificationsIdentificações offline
animals_identifications_m2mAssociação identificação ↔ brinco
gtaGTAs baixadas para uso offline
vehicleVeículos cadastrados
tripViagens
stopParadas GPS
synchronization_errorErros de sync para retry

Campo synced

Registros criados offline têm synced = false. O serviço de sincronização marca como synced = true após envio bem-sucedido ao servidor. Falhas ficam em synchronization_error para retry manual.


Ver também