Pular para conteúdo

Banco de dados

Estratégia dev/prod

Ambiente Driver Config
Dev / testes SQLite via aiosqlite Automático — sem DATABASE_URL
Produção PostgreSQL no Neon via asyncpg DATABASE_URL=postgresql+asyncpg://...

O módulo components/galgal/db/db.py detecta o ambiente pela presença de DATABASE_URL no env. Sem ela, usa SQLite em data/galgal.db.


ORM Models (components/galgal/db/models.py)

Todos os models usam SQLAlchemy 2.0 com DeclarativeBase.

Model Tabela Descrição
Tenant tenants Entidade raiz por corretor. Todo Broker pertence a um Tenant
Broker brokers Corretor: nome, slug, brand_color, bio, whatsapp, email
BrokerProperty broker_properties M2M entre Broker e Property (um imóvel pode ter múltiplos corretores)
Property properties Imóvel: title, slug, type, purpose, price, area, bedrooms, baths, neighborhood, city
PropertyPhoto property_photos Fotos do imóvel: url, is_cover, order
PropertyFeature property_features Características textuais: "Piscina", "Varanda gourmet", etc.
Lead leads Captura de lead: nome, email, telefone, mensagem, vinculado a broker + property
ScrapedProperty scraped_properties Imóvel bruto scraped. Status: new → authorized/discarded
MagicLinkToken magic_link_tokens Token de auth (UUID, expira em 15 min, uso único)

Diagrama de relacionamentos

Tenant (1) ──── (N) Broker
                    │
                    M──────────── M
                    │
                 Property (1) ─── (N) PropertyPhoto
                                      PropertyFeature
                    │
                    └── Lead (N)

NocoDB (admin visual)

URL: admin.viacorretor.com.br Login: admin@viacorretor.com.br Conectado ao: Neon PostgreSQL (mesma instância de produção)

Permite gerenciar imóveis, corretores e leads via interface visual sem SQL. Útil para o time não-técnico.


Migrações

O projeto usa Alembic para migrações de schema:

# Gerar nova migration
uv run alembic revision --autogenerate -m "descrição"

# Aplicar migrações
uv run alembic upgrade head

# Verificar estado
uv run alembic current

As migrations ficam em components/galgal/db/alembic/versions/.


Seed (dados de desenvolvimento)

uv run python scripts/init_db.py    # cria tabelas
uv run python scripts/seed.py       # 6 imóveis de amostra + corretor Glauci