app.py 2.0 KB

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