# db.py from fastapi import APIRouter, HTTPException from pydantic import BaseModel from typing import Optional import databases import sqlalchemy import os # Opção 1: Apenas variável de ambiente (mais seguro) DATABASE_URL = os.getenv("DATABASE_URL") # Verificação se a variável existe if not DATABASE_URL: raise ValueError("DATABASE_URL environment variable is not set") database = databases.Database(DATABASE_URL, min_size=5, max_size=20) metadata = sqlalchemy.MetaData() igbio = sqlalchemy.Table( "igbio", metadata, sqlalchemy.Column("url_instagram", sqlalchemy.Text), sqlalchemy.Column("url_web", sqlalchemy.Text), sqlalchemy.Column("image", sqlalchemy.Text), ) router = APIRouter() class IGPost(BaseModel): url_instagram: Optional[str] = None url_web: Optional[str] = None image: Optional[str] = None async def connect_db(): await database.connect() async def disconnect_db(): await database.disconnect() @router.post("/igbio") async def add_igbio(item: IGPost): def clean_value(value: Optional[str]) -> Optional[str]: if value is None: return None val = value.strip() if val == "" or val.lower() == "null": return None return val query = igbio.insert().values( url_instagram=clean_value(item.url_instagram), url_web=clean_value(item.url_web), image=clean_value(item.image), ) try: record_id = await database.execute(query) return {"success": True, "id": record_id} except Exception as e: raise HTTPException(status_code=500, detail=f"Erro ao inserir no banco: {e}")