From b58fd6a8c6c9d5711732c1ee0288515a3e6ab580 Mon Sep 17 00:00:00 2001 From: carry <2641257231@qq.com> Date: Tue, 21 Jan 2025 13:41:01 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E8=B7=AF=E7=94=B1=E5=92=8Cap?= =?UTF-8?q?i=E9=AA=A8=E6=9E=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 45 +++++++++++++++++++++++++++++++++++++++++++++ routes/auth.py | 17 +++++++++++++++++ routes/users.py | 30 ++++++++++++++++++++++++++++++ 3 files changed, 92 insertions(+) create mode 100644 main.py create mode 100644 routes/auth.py create mode 100644 routes/users.py diff --git a/main.py b/main.py new file mode 100644 index 0000000..6704193 --- /dev/null +++ b/main.py @@ -0,0 +1,45 @@ +import logging +from fastapi import FastAPI +from fastapi.middleware.cors import CORSMiddleware +from config import DATABASE_CONFIG, JWT_CONFIG, LOGGING_CONFIG, SYSTEM_ADMIN_CONFIG +from sqlalchemy.ext.asyncio import create_async_engine +from services.init_db import init_db +from routes.auth import auth_router +from routes.users import users_router + +# 配置日志 +logging.basicConfig( + level=LOGGING_CONFIG['level'], + format=LOGGING_CONFIG['format'], + filename=LOGGING_CONFIG['filename'] +) +logger = logging.getLogger(__name__) + +# 初始化FastAPI应用 +app = FastAPI( + title="User Management System", + description="API for managing users with role-based access control", + version="1.0.0" +) + +# 创建数据库引擎 +engine = create_async_engine( + f"mysql+asyncmy://{DATABASE_CONFIG['user']}:{DATABASE_CONFIG['password']}@" + f"{DATABASE_CONFIG['host']}:{DATABASE_CONFIG['port']}/{DATABASE_CONFIG['database']}", + echo=True +) + +# 初始化数据库 +@app.on_event("startup") +async def startup_event(): + logger.info("Initializing database...") + await init_db(engine) + logger.info("Database initialized successfully") + +# 注册路由 +app.include_router(auth_router, prefix="/api/auth", tags=["auth"]) +app.include_router(users_router, prefix="/api/users", tags=["users"]) + +if __name__ == "__main__": + import uvicorn + uvicorn.run(app, host="0.0.0.0", port=8000) diff --git a/routes/auth.py b/routes/auth.py new file mode 100644 index 0000000..d23d65c --- /dev/null +++ b/routes/auth.py @@ -0,0 +1,17 @@ +from schemas.auth import Token +from fastapi import APIRouter + + +router = APIRouter(prefix="/api/auth", tags=["auth"]) + +@router.post("/login", response_model=Token) +async def login(): + pass + +@router.post("/logout") +async def logout(): + pass + +@router.post("/refresh", response_model=Token) +async def refresh_token(): + pass diff --git a/routes/users.py b/routes/users.py new file mode 100644 index 0000000..5ebdcdb --- /dev/null +++ b/routes/users.py @@ -0,0 +1,30 @@ +from fastapi import APIRouter, Depends, HTTPException, status +from fastapi.security import OAuth2PasswordBearer +from typing import List, Optional +from models.user import User +from schemas.user import UserCreate, UserUpdate, UserResponse +from services.auth import get_current_user + +router = APIRouter() + +oauth2_scheme = OAuth2PasswordBearer(tokenUrl="api/auth/login") + +@router.get("/", response_model=List[UserResponse]) +async def get_users(): + # 实现获取用户列表逻辑 + pass + +@router.post("/", response_model=UserResponse, status_code=status.HTTP_201_CREATED) +async def create_user(): + # 实现创建用户逻辑 + pass + +@router.put("/{user_id}", response_model=UserResponse) +async def update_user(): + # 实现更新用户逻辑 + pass + +@router.delete("/{user_id}", status_code=status.HTTP_204_NO_CONTENT) +async def delete_user(): + # 实现删除用户逻辑 + pass