70 lines
1.8 KiB
Python
70 lines
1.8 KiB
Python
import sys
|
|
from pathlib import Path
|
|
|
|
# Add backend directory to Python path
|
|
backend_dir = Path(__file__).resolve().parent.parent
|
|
if str(backend_dir) not in sys.path:
|
|
sys.path.insert(0, str(backend_dir))
|
|
|
|
from fastapi import FastAPI
|
|
from fastapi.middleware.cors import CORSMiddleware
|
|
from fastapi.staticfiles import StaticFiles
|
|
import uvicorn
|
|
from app.database.database import engine, Base
|
|
from app.config import settings
|
|
from app.routers import auth, users, products, categories, cart, orders, wishlist, contact, models, brands
|
|
|
|
# Create uploads directory if it doesn't exist
|
|
uploads_dir = Path("uploads")
|
|
uploads_dir.mkdir(exist_ok=True)
|
|
|
|
# Create tables
|
|
Base.metadata.create_all(bind=engine)
|
|
|
|
app = FastAPI(
|
|
title="E-commerce API",
|
|
description="Full-featured e-commerce API for clothing and shoes",
|
|
version="1.0.0",
|
|
)
|
|
|
|
# CORS middleware
|
|
app.add_middleware(
|
|
CORSMiddleware,
|
|
allow_origins=[settings.frontend_url, "http://localhost:3000", "http://localhost:5173"],
|
|
allow_credentials=True,
|
|
allow_methods=["*"],
|
|
allow_headers=["*"],
|
|
)
|
|
|
|
# Include routers
|
|
app.include_router(auth.router)
|
|
app.include_router(users.router)
|
|
app.include_router(products.router)
|
|
app.include_router(categories.router)
|
|
app.include_router(models.router)
|
|
app.include_router(brands.router)
|
|
app.include_router(cart.router)
|
|
app.include_router(orders.router)
|
|
app.include_router(wishlist.router)
|
|
app.include_router(contact.router)
|
|
|
|
# Mount static files for uploads
|
|
app.mount("/uploads", StaticFiles(directory="uploads"), name="uploads")
|
|
|
|
|
|
@app.get("/")
|
|
def read_root():
|
|
return {
|
|
"message": "E-commerce API",
|
|
"version": "1.0.0",
|
|
"docs": "/docs",
|
|
}
|
|
|
|
|
|
@app.get("/health")
|
|
def health_check():
|
|
return {"status": "healthy"}
|
|
|
|
|
|
if __name__ == "__main__":
|
|
uvicorn.run("app.main:app", host="0.0.0.0", port=8000, reload=True) |