From fae93b5ab8664df0ded35c002cd4968515aba3f4 Mon Sep 17 00:00:00 2001 From: mamamiyear Date: Wed, 12 Nov 2025 01:38:03 +0800 Subject: [PATCH] feat: add api routers for updating people - put /people/{people_id} --- src/services/people.py | 12 ++++++++++++ src/web/api.py | 29 ++++++++++++++++++++++------- 2 files changed, 34 insertions(+), 7 deletions(-) diff --git a/src/services/people.py b/src/services/people.py index e60f87f..34e6094 100644 --- a/src/services/people.py +++ b/src/services/people.py @@ -40,6 +40,18 @@ class PeopleService: self.rldb.delete(people_orm) return error(0, "") + def get(self, people_id: str) -> (People, error): + """ + 从数据库获取人物 + + :param people_id: 人物ID + :return: 人物对象 + """ + people_orm = self.rldb.get(PeopleRLDBModel, people_id) + if not people_orm: + return None, error(1, f"people {people_id} not found") + return People.from_rldb_model(people_orm), error(0, "") + def list(self, conds: dict = {}, limit: int = 10, offset: int = 0) -> (list[People], error): """ 从数据库列出人物 diff --git a/src/web/api.py b/src/web/api.py index 88ebe6c..5f04e04 100644 --- a/src/web/api.py +++ b/src/web/api.py @@ -88,6 +88,28 @@ async def post_people(post_people_request: PostPeopleRequest): return BaseResponse(error_code=error.code, error_info=error.info) return BaseResponse(error_code=0, error_info="success", data=people.id) +@api.put("/people/{people_id}") +async def update_people(people_id: str, post_people_request: PostPeopleRequest): + logging.debug(f"post_people_request: {post_people_request}") + people = People.from_dict(post_people_request.people) + people.id = people_id + service = get_people_service() + res, error = service.get(people_id) + if not error.success or not res: + return BaseResponse(error_code=error.code, error_info=error.info) + _, error = service.save(people) + if not error.success: + return BaseResponse(error_code=error.code, error_info=error.info) + return BaseResponse(error_code=0, error_info="success") + +@api.delete("/people/{people_id}") +async def delete_people(people_id: str): + service = get_people_service() + error = service.delete(people_id) + if not error.success: + return BaseResponse(error_code=error.code, error_info=error.info) + return BaseResponse(error_code=0, error_info="success") + class GetPeopleRequest(BaseModel): query: Optional[str] = None conds: Optional[dict] = None @@ -128,10 +150,3 @@ async def get_peoples( peoples = [people.to_dict() for people in results] return BaseResponse(error_code=0, error_info="success", data=peoples) -@api.delete("/people/{people_id}") -async def delete_people(people_id: str): - service = get_people_service() - error = service.delete(people_id) - if not error.success: - return BaseResponse(error_code=error.code, error_info=error.info) - return BaseResponse(error_code=0, error_info="success") \ No newline at end of file