mirror of
https://gh-proxy.org/https://github.com/klinsmaya/SQLBot.git
synced 2026-11-08 09:17:06 +08:00
perf: Global Transaction Mechanism
This commit is contained in:
committed by
fit2cloud-chenyw
parent
2cf44ac364
commit
52b094a344
@@ -127,7 +127,6 @@ async def ws_change(session: SessionDep, current_user: CurrentUser, trans:Trans,
|
||||
user_model: UserModel = get_db_user(session = session, user_id = current_user.id)
|
||||
user_model.oid = oid
|
||||
session.add(user_model)
|
||||
session.commit()
|
||||
|
||||
@router.get("/{id}", response_model=UserEditor, summary=f"{PLACEHOLDER_PREFIX}user_detail_api", description=f"{PLACEHOLDER_PREFIX}user_detail_api")
|
||||
@require_permissions(permission=SqlbotPermission(role=['admin']))
|
||||
@@ -142,6 +141,9 @@ async def query(session: SessionDep, trans: Trans, id: int = Path(description=f"
|
||||
|
||||
@router.post("", summary=f"{PLACEHOLDER_PREFIX}user_create_api", description=f"{PLACEHOLDER_PREFIX}user_create_api")
|
||||
@require_permissions(permission=SqlbotPermission(role=['admin']))
|
||||
async def user_create(session: SessionDep, creator: UserCreator, trans: Trans):
|
||||
await create(session=session, creator=creator, trans=trans)
|
||||
|
||||
async def create(session: SessionDep, creator: UserCreator, trans: Trans):
|
||||
if check_account_exists(session=session, account=creator.account):
|
||||
raise Exception(trans('i18n_exist', msg = f"{trans('i18n_user.account')} [{creator.account}]"))
|
||||
@@ -167,7 +169,6 @@ async def create(session: SessionDep, creator: UserCreator, trans: Trans):
|
||||
session.add_all(db_model_list)
|
||||
user_model.oid = creator.oid_list[0]
|
||||
session.add(user_model)
|
||||
session.commit()
|
||||
|
||||
|
||||
@router.put("", summary=f"{PLACEHOLDER_PREFIX}user_update_api", description=f"{PLACEHOLDER_PREFIX}user_update_api")
|
||||
@@ -204,7 +205,6 @@ async def update(session: SessionDep, editor: UserEditor, trans: Trans):
|
||||
session.add_all(db_model_list)
|
||||
user_model.oid = origin_oid if origin_oid in editor.oid_list else editor.oid_list[0]
|
||||
session.add(user_model)
|
||||
session.commit()
|
||||
|
||||
@router.delete("/{id}", summary=f"{PLACEHOLDER_PREFIX}user_del_api", description=f"{PLACEHOLDER_PREFIX}user_del_api")
|
||||
@require_permissions(permission=SqlbotPermission(role=['admin']))
|
||||
@@ -226,7 +226,6 @@ async def langChange(session: SessionDep, current_user: CurrentUser, trans: Tran
|
||||
db_user: UserModel = get_db_user(session=session, user_id=current_user.id)
|
||||
db_user.language = lang
|
||||
session.add(db_user)
|
||||
session.commit()
|
||||
|
||||
|
||||
@router.patch("/pwd/{id}", summary=f"{PLACEHOLDER_PREFIX}reset_pwd", description=f"{PLACEHOLDER_PREFIX}reset_pwd")
|
||||
@@ -238,7 +237,6 @@ async def pwdReset(session: SessionDep, current_user: CurrentUser, trans: Trans,
|
||||
db_user: UserModel = get_db_user(session=session, user_id=id)
|
||||
db_user.password = default_md5_pwd()
|
||||
session.add(db_user)
|
||||
session.commit()
|
||||
|
||||
@router.put("/pwd", summary=f"{PLACEHOLDER_PREFIX}update_pwd", description=f"{PLACEHOLDER_PREFIX}update_pwd")
|
||||
@clear_cache(namespace=CacheNamespace.AUTH_INFO, cacheName=CacheName.USER_INFO, keyExpression="current_user.id")
|
||||
@@ -251,7 +249,6 @@ async def pwdUpdate(session: SessionDep, current_user: CurrentUser, trans: Trans
|
||||
raise Exception(trans('i18n_error', key = trans('i18n_user.password')))
|
||||
db_user.password = md5pwd(new_pwd)
|
||||
session.add(db_user)
|
||||
session.commit()
|
||||
|
||||
|
||||
@router.patch("/status", summary=f"{PLACEHOLDER_PREFIX}update_status", description=f"{PLACEHOLDER_PREFIX}update_status")
|
||||
@@ -265,5 +262,4 @@ async def statusChange(session: SessionDep, current_user: CurrentUser, trans: Tr
|
||||
return {"message": "status not supported"}
|
||||
db_user: UserModel = get_db_user(session=session, user_id=statusDto.id)
|
||||
db_user.status = status
|
||||
session.add(db_user)
|
||||
session.commit()
|
||||
session.add(db_user)
|
||||
@@ -141,10 +141,12 @@ async def create(session: SessionDep, current_user: CurrentUser, trans: Trans, c
|
||||
await clean_user_cache(uid)
|
||||
|
||||
session.add_all(db_model_list)
|
||||
session.commit()
|
||||
|
||||
@router.put("/uws", summary=f"{PLACEHOLDER_PREFIX}ws_user_status_api", description=f"{PLACEHOLDER_PREFIX}ws_user_status_api")
|
||||
@require_permissions(permission=SqlbotPermission(role=['admin']))
|
||||
async def uws_edit(session: SessionDep, trans: Trans, editor: UserWsEditor):
|
||||
await edit(session, trans, editor)
|
||||
|
||||
async def edit(session: SessionDep, trans: Trans, editor: UserWsEditor):
|
||||
if not editor.oid or not editor.uid:
|
||||
raise Exception(trans('i18n_miss_args', key = '[oid, uid]'))
|
||||
@@ -158,7 +160,6 @@ async def edit(session: SessionDep, trans: Trans, editor: UserWsEditor):
|
||||
session.add(db_model)
|
||||
|
||||
await clean_user_cache(editor.uid)
|
||||
session.commit()
|
||||
|
||||
@router.delete("/uws", summary=f"{PLACEHOLDER_PREFIX}ws_user_unbind_api", description=f"{PLACEHOLDER_PREFIX}ws_user_unbind_api")
|
||||
@require_permissions(permission=SqlbotPermission(role=['ws_admin']))
|
||||
@@ -176,8 +177,6 @@ async def delete(session: SessionDep, current_user: CurrentUser, trans: Trans, d
|
||||
await reset_single_user_oid(session, uid, oid, False)
|
||||
await clean_user_cache(uid)
|
||||
|
||||
session.commit()
|
||||
|
||||
@router.get("", response_model=list[WorkspaceModel], summary=f"{PLACEHOLDER_PREFIX}ws_all_api", description=f"{PLACEHOLDER_PREFIX}ws_all_api")
|
||||
@require_permissions(permission=SqlbotPermission(role=['admin']))
|
||||
async def query(session: SessionDep, trans: Trans):
|
||||
@@ -194,7 +193,6 @@ async def add(session: SessionDep, creator: WorkspaceBase):
|
||||
db_model = WorkspaceModel.model_validate(creator)
|
||||
db_model.create_time = get_timestamp()
|
||||
session.add(db_model)
|
||||
session.commit()
|
||||
|
||||
@router.put("", summary=f"{PLACEHOLDER_PREFIX}ws_update_api", description=f"{PLACEHOLDER_PREFIX}ws_update_api")
|
||||
@require_permissions(permission=SqlbotPermission(role=['admin']))
|
||||
@@ -205,7 +203,6 @@ async def update(session: SessionDep, editor: WorkspaceEditor):
|
||||
raise HTTPException(f"WorkspaceModel with id {id} not found")
|
||||
db_model.name = editor.name
|
||||
session.add(db_model)
|
||||
session.commit()
|
||||
|
||||
@router.get("/{id}", response_model=WorkspaceModel, summary=f"{PLACEHOLDER_PREFIX}ws_query_api", description=f"{PLACEHOLDER_PREFIX}ws_query_api")
|
||||
@require_permissions(permission=SqlbotPermission(role=['admin']))
|
||||
@@ -245,6 +242,5 @@ async def single_delete(session: SessionDep, current_user: CurrentUser, id: int
|
||||
session.exec(sqlmodel_delete(UserWsModel).where(UserWsModel.oid == id))
|
||||
|
||||
session.delete(db_model)
|
||||
session.commit()
|
||||
|
||||
|
||||
|
||||
@@ -11,7 +11,14 @@ engine = create_engine(str(settings.SQLALCHEMY_DATABASE_URI),
|
||||
|
||||
def get_session():
|
||||
with Session(engine) as session:
|
||||
yield session
|
||||
try:
|
||||
yield session
|
||||
session.commit()
|
||||
except Exception:
|
||||
session.rollback()
|
||||
raise
|
||||
finally:
|
||||
session.close()
|
||||
|
||||
|
||||
def init_db():
|
||||
|
||||
Reference in New Issue
Block a user