habulaj's picture
Update routers/db.py
fe6cebc verified
# 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}")