app.py 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. from time import struct_time
  2. from fastapi import FastAPI
  3. from fastapi.middleware.cors import CORSMiddleware
  4. from starlette.middleware.sessions import SessionMiddleware
  5. from config.settings import SECRET_KEY, validate_config
  6. from routes import sales
  7. def create_app() -> FastAPI:
  8. """Create and configure FastAPI application"""
  9. app = FastAPI(title="Web Pedidos Klein - FastAPI Backend",
  10. description="Backend for the Web Pedidos Klein application using FastAPI",)
  11. # Add CORS middleware
  12. app.add_middleware(
  13. CORSMiddleware,
  14. allow_origins=["*"], # Allows all origins
  15. allow_credentials=True,
  16. allow_methods=["*"], # Allows all methods
  17. allow_headers=["*"], # Allows all headers
  18. )
  19. # Add SessionMiddleware
  20. app.add_middleware(
  21. SessionMiddleware,
  22. secret_key=SECRET_KEY,
  23. max_age=60 * 60 # max_age in seconds for Starlette
  24. )
  25. return app
  26. def setup_routes(app: FastAPI):
  27. """Setup all application routes"""
  28. from routes import chat, users, products, orders, static
  29. from fastapi import Depends
  30. from auth.security import get_current_user
  31. # Chat routes
  32. app.include_router(chat.chat_router, prefix="/api/chat",tags=["Chat"], dependencies=[Depends(get_current_user)])
  33. # User routes
  34. app.include_router(users.user_router, prefix="/api/users", tags=["Users"])
  35. # Product routes
  36. app.include_router(products.product_router, prefix="/api/products", tags=["Products"],dependencies=[Depends(get_current_user)])
  37. # Order routes
  38. app.include_router(orders.order_router, prefix="/api/orders", tags=["Orders"], dependencies=[Depends(get_current_user)])
  39. # Sales routes
  40. app.include_router(sales.sales_router, prefix="/api/sales", tags=["Sales"], dependencies=[Depends(get_current_user)])
  41. # Verification routes
  42. app.include_router(users.verify_router, prefix="/verify", tags=["Verification"])
  43. # Static routes
  44. from fastapi.responses import HTMLResponse
  45. app.add_api_route("/", static.serve_app_html, methods=["GET"],
  46. response_class=HTMLResponse, include_in_schema=False)
  47. app.add_api_route("/register", static.serve_register_html, methods=["GET"],
  48. response_class=HTMLResponse, include_in_schema=False)
  49. app.add_api_route("/images/{image_path:path}", static.serve_image, methods=["GET"],
  50. response_class=HTMLResponse, include_in_schema=False)
  51. # Mount static files
  52. static.mount_main_static_files(app)
  53. static.mount_register_static_files(app)