habulaj commited on
Commit
199c06b
·
verified ·
1 Parent(s): 0e89474

Create db.py

Browse files
Files changed (1) hide show
  1. routers/db.py +60 -0
routers/db.py ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # db.py
2
+ import os
3
+ from fastapi import FastAPI, APIRouter, HTTPException
4
+ from pydantic import BaseModel, HttpUrl
5
+ import databases
6
+ import sqlalchemy
7
+
8
+ # 🌐 Pega a URL do banco do ambiente
9
+ DATABASE_URL = os.getenv("DATABASE_URL")
10
+ if not DATABASE_URL:
11
+ raise ValueError("DATABASE_URL não configurada!")
12
+
13
+ # ⚡ Banco assíncrono
14
+ database = databases.Database(DATABASE_URL)
15
+ metadata = sqlalchemy.MetaData()
16
+
17
+ # 🏗️ Tabela igbio
18
+ igbio = sqlalchemy.Table(
19
+ "igbio",
20
+ metadata,
21
+ sqlalchemy.Column("url_instagram", sqlalchemy.Text),
22
+ sqlalchemy.Column("url_web", sqlalchemy.Text),
23
+ sqlalchemy.Column("image", sqlalchemy.Text),
24
+ )
25
+
26
+ # 🚀 FastAPI e router
27
+ app = FastAPI()
28
+ router = APIRouter()
29
+
30
+ # 📦 Modelo de request
31
+ class IGPost(BaseModel):
32
+ url_instagram: str | None = None
33
+ url_web: str | None = None
34
+ image: str | None = None
35
+
36
+ # 🔗 Connect / Disconnect DB
37
+ @app.on_event("startup")
38
+ async def startup():
39
+ await database.connect()
40
+
41
+ @app.on_event("shutdown")
42
+ async def shutdown():
43
+ await database.disconnect()
44
+
45
+ # 📝 POST endpoint para inserir dados
46
+ @router.post("/igbio")
47
+ async def add_igbio(item: IGPost):
48
+ query = igbio.insert().values(
49
+ url_instagram=item.url_instagram,
50
+ url_web=item.url_web,
51
+ image=item.image,
52
+ )
53
+ try:
54
+ record_id = await database.execute(query)
55
+ return {"success": True, "id": record_id}
56
+ except Exception as e:
57
+ raise HTTPException(status_code=500, detail=str(e))
58
+
59
+ # 🔌 Adiciona router à app
60
+ app.include_router(router)