feat (infra): Trae 完成 asset_helper_backend 微服务基础架构 V1 初始化
核心实现:搭建 Monorepo 架构,完成 shared 共享包、gateway、user-service 基础框架开发 技术落地:严格匹配指定技术栈版本,完成 Docker、gRPC、FastAPI、PostgreSQL、Redis 等配置,实现服务间基础连通 配套文件:生成 Makefile、环境变量模板、数据库 / 脚本初始化文件及启动验证文档 架构定位:仅搭建基础架构骨架,无任何业务逻辑、业务规则及业务相关字段,为后续业务开发提供支撑
This commit is contained in:
40
asset_helper_backend/services/gateway/app/api/v1/users.py
Normal file
40
asset_helper_backend/services/gateway/app/api/v1/users.py
Normal file
@@ -0,0 +1,40 @@
|
||||
from fastapi import APIRouter, Depends, HTTPException
|
||||
from app.grpc_generated import user_pb2, user_pb2_grpc
|
||||
from app.dependencies import get_user_service_client
|
||||
from typing import List
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
@router.get("/users/{user_id}")
|
||||
async def get_user(user_id: int, client: user_pb2_grpc.UserServiceStub = Depends(get_user_service_client)):
|
||||
request = user_pb2.GetUserRequest(id=user_id)
|
||||
response = await client.GetUser(request)
|
||||
if not response.user.id:
|
||||
raise HTTPException(status_code=404, detail="User not found")
|
||||
return response.user
|
||||
|
||||
@router.post("/users")
|
||||
async def create_user(username: str, password_hash: str, client: user_pb2_grpc.UserServiceStub = Depends(get_user_service_client)):
|
||||
request = user_pb2.CreateUserRequest(username=username, password_hash=password_hash)
|
||||
response = await client.CreateUser(request)
|
||||
return response.user
|
||||
|
||||
@router.put("/users/{user_id}")
|
||||
async def update_user(user_id: int, username: str, password_hash: str, client: user_pb2_grpc.UserServiceStub = Depends(get_user_service_client)):
|
||||
request = user_pb2.UpdateUserRequest(id=user_id, username=username, password_hash=password_hash)
|
||||
response = await client.UpdateUser(request)
|
||||
if not response.user.id:
|
||||
raise HTTPException(status_code=404, detail="User not found")
|
||||
return response.user
|
||||
|
||||
@router.delete("/users/{user_id}")
|
||||
async def delete_user(user_id: int, client: user_pb2_grpc.UserServiceStub = Depends(get_user_service_client)):
|
||||
request = user_pb2.DeleteUserRequest(id=user_id)
|
||||
await client.DeleteUser(request)
|
||||
return {"message": "User deleted successfully"}
|
||||
|
||||
@router.get("/users")
|
||||
async def list_users(page: int = 1, page_size: int = 10, client: user_pb2_grpc.UserServiceStub = Depends(get_user_service_client)):
|
||||
request = user_pb2.ListUsersRequest(page=page, page_size=page_size)
|
||||
response = await client.ListUsers(request)
|
||||
return {"users": response.users, "total": response.total}
|
||||
Reference in New Issue
Block a user