11from typing import Optional
22from fastapi import APIRouter , HTTPException , Query
33from sqlmodel import func , or_ , select , delete as sqlmodel_delete
4- from apps .system .crud .user import get_db_user , single_delete , user_ws_options
4+ from apps .system .crud .user import check_account_exists , get_db_user , single_delete , user_ws_options
55from apps .system .models .system_model import UserWsModel
66from apps .system .models .user import UserModel
77from apps .system .schemas .auth import CacheName , CacheNamespace
@@ -116,6 +116,9 @@ async def query(session: SessionDep, trans: Trans, id: int) -> UserEditor:
116116
117117@router .post ("" )
118118async def create (session : SessionDep , creator : UserCreator ):
119+ count = check_account_exists (session = session , account = creator .account )
120+ if count > 0 :
121+ raise Exception (f"Account [{ creator .account } ] already exists!" )
119122 data = creator .model_dump (exclude_unset = True )
120123 user_model = UserModel .model_validate (data )
121124 #user_model.create_time = get_timestamp()
@@ -140,6 +143,10 @@ async def create(session: SessionDep, creator: UserCreator):
140143@clear_cache (namespace = CacheNamespace .AUTH_INFO , cacheName = CacheName .USER_INFO , keyExpression = "editor.id" )
141144async def update (session : SessionDep , editor : UserEditor ):
142145 user_model : UserModel = get_db_user (session = session , user_id = editor .id )
146+ if not user_model :
147+ raise Exception (f"User with id [{ editor .id } ] not found!" )
148+ if editor .account != user_model .account :
149+ raise Exception (f"account cannot be changed!" )
143150 origin_oid : int = user_model .oid
144151 del_stmt = sqlmodel_delete (UserWsModel ).where (UserWsModel .uid == editor .id )
145152 session .exec (del_stmt )
0 commit comments