Skip to content

Commit b735f55

Browse files
perf: Global Transaction Mechanism
1 parent 2cf44ac commit b735f55

File tree

3 files changed

+15
-16
lines changed

3 files changed

+15
-16
lines changed

backend/apps/system/api/user.py

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,6 @@ async def ws_change(session: SessionDep, current_user: CurrentUser, trans:Trans,
127127
user_model: UserModel = get_db_user(session = session, user_id = current_user.id)
128128
user_model.oid = oid
129129
session.add(user_model)
130-
session.commit()
131130

132131
@router.get("/{id}", response_model=UserEditor, summary=f"{PLACEHOLDER_PREFIX}user_detail_api", description=f"{PLACEHOLDER_PREFIX}user_detail_api")
133132
@require_permissions(permission=SqlbotPermission(role=['admin']))
@@ -142,6 +141,9 @@ async def query(session: SessionDep, trans: Trans, id: int = Path(description=f"
142141

143142
@router.post("", summary=f"{PLACEHOLDER_PREFIX}user_create_api", description=f"{PLACEHOLDER_PREFIX}user_create_api")
144143
@require_permissions(permission=SqlbotPermission(role=['admin']))
144+
async def user_create(session: SessionDep, creator: UserCreator, trans: Trans):
145+
await create(session=session, creator=creator, trans=trans)
146+
145147
async def create(session: SessionDep, creator: UserCreator, trans: Trans):
146148
if check_account_exists(session=session, account=creator.account):
147149
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):
167169
session.add_all(db_model_list)
168170
user_model.oid = creator.oid_list[0]
169171
session.add(user_model)
170-
session.commit()
171172

172173

173174
@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):
204205
session.add_all(db_model_list)
205206
user_model.oid = origin_oid if origin_oid in editor.oid_list else editor.oid_list[0]
206207
session.add(user_model)
207-
session.commit()
208208

209209
@router.delete("/{id}", summary=f"{PLACEHOLDER_PREFIX}user_del_api", description=f"{PLACEHOLDER_PREFIX}user_del_api")
210210
@require_permissions(permission=SqlbotPermission(role=['admin']))
@@ -226,7 +226,6 @@ async def langChange(session: SessionDep, current_user: CurrentUser, trans: Tran
226226
db_user: UserModel = get_db_user(session=session, user_id=current_user.id)
227227
db_user.language = lang
228228
session.add(db_user)
229-
session.commit()
230229

231230

232231
@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,
238237
db_user: UserModel = get_db_user(session=session, user_id=id)
239238
db_user.password = default_md5_pwd()
240239
session.add(db_user)
241-
session.commit()
242240

243241
@router.put("/pwd", summary=f"{PLACEHOLDER_PREFIX}update_pwd", description=f"{PLACEHOLDER_PREFIX}update_pwd")
244242
@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
251249
raise Exception(trans('i18n_error', key = trans('i18n_user.password')))
252250
db_user.password = md5pwd(new_pwd)
253251
session.add(db_user)
254-
session.commit()
255252

256253

257254
@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
265262
return {"message": "status not supported"}
266263
db_user: UserModel = get_db_user(session=session, user_id=statusDto.id)
267264
db_user.status = status
268-
session.add(db_user)
269-
session.commit()
265+
session.add(db_user)

backend/apps/system/api/workspace.py

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -141,10 +141,12 @@ async def create(session: SessionDep, current_user: CurrentUser, trans: Trans, c
141141
await clean_user_cache(uid)
142142

143143
session.add_all(db_model_list)
144-
session.commit()
145144

146145
@router.put("/uws", summary=f"{PLACEHOLDER_PREFIX}ws_user_status_api", description=f"{PLACEHOLDER_PREFIX}ws_user_status_api")
147146
@require_permissions(permission=SqlbotPermission(role=['admin']))
147+
async def uws_edit(session: SessionDep, trans: Trans, editor: UserWsEditor):
148+
await edit(session, trans, editor)
149+
148150
async def edit(session: SessionDep, trans: Trans, editor: UserWsEditor):
149151
if not editor.oid or not editor.uid:
150152
raise Exception(trans('i18n_miss_args', key = '[oid, uid]'))
@@ -158,7 +160,6 @@ async def edit(session: SessionDep, trans: Trans, editor: UserWsEditor):
158160
session.add(db_model)
159161

160162
await clean_user_cache(editor.uid)
161-
session.commit()
162163

163164
@router.delete("/uws", summary=f"{PLACEHOLDER_PREFIX}ws_user_unbind_api", description=f"{PLACEHOLDER_PREFIX}ws_user_unbind_api")
164165
@require_permissions(permission=SqlbotPermission(role=['ws_admin']))
@@ -176,8 +177,6 @@ async def delete(session: SessionDep, current_user: CurrentUser, trans: Trans, d
176177
await reset_single_user_oid(session, uid, oid, False)
177178
await clean_user_cache(uid)
178179

179-
session.commit()
180-
181180
@router.get("", response_model=list[WorkspaceModel], summary=f"{PLACEHOLDER_PREFIX}ws_all_api", description=f"{PLACEHOLDER_PREFIX}ws_all_api")
182181
@require_permissions(permission=SqlbotPermission(role=['admin']))
183182
async def query(session: SessionDep, trans: Trans):
@@ -194,7 +193,6 @@ async def add(session: SessionDep, creator: WorkspaceBase):
194193
db_model = WorkspaceModel.model_validate(creator)
195194
db_model.create_time = get_timestamp()
196195
session.add(db_model)
197-
session.commit()
198196

199197
@router.put("", summary=f"{PLACEHOLDER_PREFIX}ws_update_api", description=f"{PLACEHOLDER_PREFIX}ws_update_api")
200198
@require_permissions(permission=SqlbotPermission(role=['admin']))
@@ -205,7 +203,6 @@ async def update(session: SessionDep, editor: WorkspaceEditor):
205203
raise HTTPException(f"WorkspaceModel with id {id} not found")
206204
db_model.name = editor.name
207205
session.add(db_model)
208-
session.commit()
209206

210207
@router.get("/{id}", response_model=WorkspaceModel, summary=f"{PLACEHOLDER_PREFIX}ws_query_api", description=f"{PLACEHOLDER_PREFIX}ws_query_api")
211208
@require_permissions(permission=SqlbotPermission(role=['admin']))
@@ -245,6 +242,5 @@ async def single_delete(session: SessionDep, current_user: CurrentUser, id: int
245242
session.exec(sqlmodel_delete(UserWsModel).where(UserWsModel.oid == id))
246243

247244
session.delete(db_model)
248-
session.commit()
249245

250246

backend/common/core/db.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,14 @@
1111

1212
def get_session():
1313
with Session(engine) as session:
14-
yield session
14+
try:
15+
yield session
16+
session.commit()
17+
except Exception:
18+
session.rollback()
19+
raise
20+
finally:
21+
session.close()
1522

1623

1724
def init_db():

0 commit comments

Comments
 (0)