add initial template
This commit is contained in:
parent
4ed1e88dc2
commit
45a93e5a23
13 changed files with 457 additions and 13 deletions
|
@ -1,3 +0,0 @@
|
|||
# ENV
|
||||
- MONGO_INITDB_ROOT_USERNAME=
|
||||
- MONGO_INITDB_ROOT_PASSWORD=
|
|
@ -1,15 +1,30 @@
|
|||
version: '3.8'
|
||||
|
||||
services:
|
||||
mongodb:
|
||||
image: mongo:8.0.0
|
||||
container_name: mongodb
|
||||
restart: unless-stopped
|
||||
image: mongo:7.0
|
||||
container_name: simple_mongodb
|
||||
ports:
|
||||
- "27017:27017"
|
||||
environment:
|
||||
- MONGO_INITDB_ROOT_USERNAME=${MONGO_INITDB_ROOT_USERNAME}
|
||||
- MONGO_INITDB_ROOT_PASSWORD=${MONGO_INITDB_ROOT_PASSWORD}
|
||||
MONGO_INITDB_ROOT_USERNAME: admin
|
||||
MONGO_INITDB_ROOT_PASSWORD: password
|
||||
volumes:
|
||||
- mongo-data:/data/db
|
||||
- mongodb_data:/data/db
|
||||
restart: unless-stopped
|
||||
|
||||
mongo-express:
|
||||
image: mongo-express:latest
|
||||
container_name: mongo_express
|
||||
ports:
|
||||
- "8081:8081"
|
||||
environment:
|
||||
ME_CONFIG_MONGODB_ADMINUSERNAME: admin
|
||||
ME_CONFIG_MONGODB_ADMINPASSWORD: password
|
||||
ME_CONFIG_MONGODB_URL: mongodb://admin:password@mongodb:27017/
|
||||
depends_on:
|
||||
- mongodb
|
||||
restart: unless-stopped
|
||||
|
||||
volumes:
|
||||
mongo-data:
|
||||
mongodb_data:
|
||||
|
|
22
backend/main.py
Normal file
22
backend/main.py
Normal file
|
@ -0,0 +1,22 @@
|
|||
from fastapi import FastAPI
|
||||
from fastapi.middleware.cors import CORSMiddleware
|
||||
from routes import router
|
||||
|
||||
app = FastAPI(title="Simple Fullstack API")
|
||||
|
||||
# CORS per permettere richieste dal frontend
|
||||
app.add_middleware(
|
||||
CORSMiddleware,
|
||||
allow_origins=["*"],
|
||||
allow_credentials=True,
|
||||
allow_methods=["*"],
|
||||
allow_headers=["*"],
|
||||
)
|
||||
|
||||
# Includi le route
|
||||
app.include_router(router)
|
||||
|
||||
if __name__ == "__main__":
|
||||
import uvicorn
|
||||
print("🚀 Avvio server FastAPI...")
|
||||
uvicorn.run(app, host="0.0.0.0", port=8000)
|
|
@ -0,0 +1,4 @@
|
|||
fastapi==0.104.1
|
||||
uvicorn[standard]==0.24.0
|
||||
pymongo==4.6.0
|
||||
python-multipart==0.0.6
|
50
backend/routes.py
Normal file
50
backend/routes.py
Normal file
|
@ -0,0 +1,50 @@
|
|||
from fastapi import APIRouter, HTTPException
|
||||
from pymongo import MongoClient
|
||||
from datetime import datetime
|
||||
|
||||
# Router per le API
|
||||
router = APIRouter()
|
||||
|
||||
# Connessione MongoDB
|
||||
client = MongoClient("mongodb://localhost:27017/")
|
||||
db = client["simple_db"]
|
||||
collection = db["items"]
|
||||
|
||||
@router.get("/")
|
||||
def read_root():
|
||||
"""Root endpoint per test connessione"""
|
||||
return {"message": "Simple Fullstack API is running!"}
|
||||
|
||||
@router.get("/api/data")
|
||||
def get_data():
|
||||
"""GET: Ottiene il primo documento dal database"""
|
||||
try:
|
||||
# Trova il primo documento disponibile
|
||||
document = collection.find_one()
|
||||
if document:
|
||||
# Converti ObjectId in stringa per JSON serialization
|
||||
document["_id"] = str(document["_id"])
|
||||
return {"success": True, "data": document}
|
||||
else:
|
||||
return {"success": False, "message": "Nessun dato trovato nel database"}
|
||||
except Exception as e:
|
||||
raise HTTPException(status_code=500, detail=f"Errore database: {str(e)}")
|
||||
|
||||
@router.post("/api/data")
|
||||
def create_data():
|
||||
"""POST: Inserisce un dato hardcoded nel database"""
|
||||
try:
|
||||
# Dato hardcoded da inserire
|
||||
new_item = {
|
||||
"name": "Item di esempio",
|
||||
"description": "Questo è un item creato tramite API",
|
||||
"timestamp": datetime.now().isoformat(),
|
||||
"value": 42
|
||||
}
|
||||
|
||||
result = collection.insert_one(new_item)
|
||||
new_item["_id"] = str(result.inserted_id)
|
||||
|
||||
return {"success": True, "message": "Dato inserito con successo", "data": new_item}
|
||||
except Exception as e:
|
||||
raise HTTPException(status_code=500, detail=f"Errore inserimento: {str(e)}")
|
Loading…
Add table
Add a link
Reference in a new issue