64 lines
1.3 KiB
Python
64 lines
1.3 KiB
Python
import time
|
|
|
|
from fastapi import FastAPI
|
|
from fastapi.middleware.cors import CORSMiddleware
|
|
|
|
from app.services.builds import build_history
|
|
from app.services.menu import build_menu
|
|
from app.services.prices import prices_payload, random_price
|
|
from app.settings import settings
|
|
|
|
START_TIME = time.time()
|
|
|
|
|
|
def uptime() -> int:
|
|
return int(time.time() - START_TIME)
|
|
|
|
|
|
app = FastAPI(
|
|
title="Cafetería API",
|
|
description="Devuelve precios y el menú del día.",
|
|
version="0.1.0",
|
|
)
|
|
|
|
# Frontend and API will likely run on different ports; allow everything to keep the workshop simple.
|
|
app.add_middleware(
|
|
CORSMiddleware,
|
|
allow_origins=["*"],
|
|
allow_credentials=True,
|
|
allow_methods=["*"],
|
|
allow_headers=["*"],
|
|
)
|
|
|
|
|
|
@app.get("/health")
|
|
def health():
|
|
return {
|
|
"status": "ok",
|
|
"version": settings.app_version,
|
|
"commit": settings.git_commit,
|
|
"build": settings.build_number,
|
|
"author": settings.commit_author,
|
|
"uptime_seconds": uptime()
|
|
}
|
|
|
|
|
|
@app.get("/menu")
|
|
def menu():
|
|
return build_menu()
|
|
|
|
|
|
@app.get("/prices")
|
|
def prices():
|
|
return prices_payload()
|
|
|
|
|
|
@app.get("/prices/{item}")
|
|
def price_for_item(item: str):
|
|
return random_price(item)
|
|
|
|
|
|
@app.get("/builds")
|
|
def builds():
|
|
return build_history()
|