Spaces:
Paused
Paused
| # 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() | |
| 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}") |