Skip to content

Commit 15a9527

Browse files
authored
Refactor the service layer db session call method (#850)
* Refactor the service layer db session call method * Fix lint * Update paging interfaces * Fix some errors
1 parent 9147d35 commit 15a9527

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

62 files changed

+1743
-1488
lines changed

backend/app/admin/api/v1/auth/auth.py

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,16 @@
1010
from backend.app.admin.service.auth_service import auth_service
1111
from backend.common.response.response_schema import ResponseModel, ResponseSchemaModel, response_base
1212
from backend.common.security.jwt import DependsJwtAuth
13+
from backend.database.db import CurrentSession, CurrentSessionTransaction
1314

1415
router = APIRouter()
1516

1617

1718
@router.post('/login/swagger', summary='swagger 调试专用', description='用于快捷获取 token 进行 swagger 认证')
18-
async def login_swagger(obj: Annotated[HTTPBasicCredentials, Depends()]) -> GetSwaggerToken:
19-
token, user = await auth_service.swagger_login(obj=obj)
19+
async def login_swagger(
20+
db: CurrentSessionTransaction, obj: Annotated[HTTPBasicCredentials, Depends()]
21+
) -> GetSwaggerToken:
22+
token, user = await auth_service.swagger_login(db=db, obj=obj)
2023
return GetSwaggerToken(access_token=token, user=user)
2124

2225

@@ -27,24 +30,24 @@ async def login_swagger(obj: Annotated[HTTPBasicCredentials, Depends()]) -> GetS
2730
dependencies=[Depends(RateLimiter(times=5, minutes=1))],
2831
)
2932
async def login(
30-
request: Request,
33+
db: CurrentSessionTransaction,
3134
response: Response,
3235
obj: AuthLoginParam,
3336
background_tasks: BackgroundTasks,
3437
) -> ResponseSchemaModel[GetLoginToken]:
35-
data = await auth_service.login(request=request, response=response, obj=obj, background_tasks=background_tasks)
38+
data = await auth_service.login(db=db, response=response, obj=obj, background_tasks=background_tasks)
3639
return response_base.success(data=data)
3740

3841

3942
@router.get('/codes', summary='获取所有授权码', description='适配 vben admin v5', dependencies=[DependsJwtAuth])
40-
async def get_codes(request: Request) -> ResponseSchemaModel[list[str]]:
41-
codes = await auth_service.get_codes(request=request)
43+
async def get_codes(db: CurrentSession, request: Request) -> ResponseSchemaModel[list[str]]:
44+
codes = await auth_service.get_codes(db=db, request=request)
4245
return response_base.success(data=codes)
4346

4447

4548
@router.post('/refresh', summary='刷新 token')
46-
async def refresh_token(request: Request) -> ResponseSchemaModel[GetNewToken]:
47-
data = await auth_service.refresh_token(request=request)
49+
async def refresh_token(db: CurrentSession, request: Request) -> ResponseSchemaModel[GetNewToken]:
50+
data = await auth_service.refresh_token(db=db, request=request)
4851
return response_base.success(data=data)
4952

5053

backend/app/admin/api/v1/auth/captcha.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from uuid import uuid4
22

33
from fast_captcha import img_captcha
4-
from fastapi import APIRouter, Depends, Request
4+
from fastapi import APIRouter, Depends
55
from fastapi_limiter.depends import RateLimiter
66
from starlette.concurrency import run_in_threadpool
77

@@ -18,7 +18,7 @@
1818
summary='获取登录验证码',
1919
dependencies=[Depends(RateLimiter(times=5, seconds=10))],
2020
)
21-
async def get_captcha(request: Request) -> ResponseSchemaModel[GetCaptchaDetail]:
21+
async def get_captcha() -> ResponseSchemaModel[GetCaptchaDetail]:
2222
"""
2323
此接口可能存在性能损耗,尽管是异步接口,但是验证码生成是IO密集型任务,使用线程池尽量减少性能损耗
2424
"""

backend/app/admin/api/v1/log/login_log.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@
44

55
from backend.app.admin.schema.login_log import DeleteLoginLogParam, GetLoginLogDetail
66
from backend.app.admin.service.login_log_service import login_log_service
7-
from backend.common.pagination import DependsPagination, PageData, paging_data
7+
from backend.common.pagination import DependsPagination, PageData
88
from backend.common.response.response_schema import ResponseModel, ResponseSchemaModel, response_base
99
from backend.common.security.jwt import DependsJwtAuth
1010
from backend.common.security.permission import RequestPermission
1111
from backend.common.security.rbac import DependsRBAC
12-
from backend.database.db import CurrentSession
12+
from backend.database.db import CurrentSession, CurrentSessionTransaction
1313

1414
router = APIRouter()
1515

@@ -22,14 +22,14 @@
2222
DependsPagination,
2323
],
2424
)
25-
async def get_login_logs_paged(
25+
async def get_login_logs_paginated(
2626
db: CurrentSession,
2727
username: Annotated[str | None, Query(description='用户名')] = None,
2828
status: Annotated[int | None, Query(description='状态')] = None,
2929
ip: Annotated[str | None, Query(description='IP 地址')] = None,
3030
) -> ResponseSchemaModel[PageData[GetLoginLogDetail]]:
31-
log_select = await login_log_service.get_select(username=username, status=status, ip=ip)
32-
page_data = await paging_data(db, log_select)
31+
page_data = await login_log_service.get_list(db=db, username=username, status=status, ip=ip)
32+
3333
return response_base.success(data=page_data)
3434

3535

@@ -41,8 +41,8 @@ async def get_login_logs_paged(
4141
DependsRBAC,
4242
],
4343
)
44-
async def delete_login_logs(obj: DeleteLoginLogParam) -> ResponseModel:
45-
count = await login_log_service.delete(obj=obj)
44+
async def delete_login_logs(db: CurrentSessionTransaction, obj: DeleteLoginLogParam) -> ResponseModel:
45+
count = await login_log_service.delete(db=db, obj=obj)
4646
if count > 0:
4747
return response_base.success()
4848
return response_base.fail()
@@ -56,6 +56,6 @@ async def delete_login_logs(obj: DeleteLoginLogParam) -> ResponseModel:
5656
DependsRBAC,
5757
],
5858
)
59-
async def delete_all_login_logs() -> ResponseModel:
60-
await login_log_service.delete_all()
59+
async def delete_all_login_logs(db: CurrentSessionTransaction) -> ResponseModel:
60+
await login_log_service.delete_all(db=db)
6161
return response_base.success()

backend/app/admin/api/v1/log/opera_log.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@
44

55
from backend.app.admin.schema.opera_log import DeleteOperaLogParam, GetOperaLogDetail
66
from backend.app.admin.service.opera_log_service import opera_log_service
7-
from backend.common.pagination import DependsPagination, PageData, paging_data
7+
from backend.common.pagination import DependsPagination, PageData
88
from backend.common.response.response_schema import ResponseModel, ResponseSchemaModel, response_base
99
from backend.common.security.jwt import DependsJwtAuth
1010
from backend.common.security.permission import RequestPermission
1111
from backend.common.security.rbac import DependsRBAC
12-
from backend.database.db import CurrentSession
12+
from backend.database.db import CurrentSession, CurrentSessionTransaction
1313

1414
router = APIRouter()
1515

@@ -22,14 +22,14 @@
2222
DependsPagination,
2323
],
2424
)
25-
async def get_opera_logs_paged(
25+
async def get_opera_logs_paginated(
2626
db: CurrentSession,
2727
username: Annotated[str | None, Query(description='用户名')] = None,
2828
status: Annotated[int | None, Query(description='状态')] = None,
2929
ip: Annotated[str | None, Query(description='IP 地址')] = None,
3030
) -> ResponseSchemaModel[PageData[GetOperaLogDetail]]:
31-
log_select = await opera_log_service.get_select(username=username, status=status, ip=ip)
32-
page_data = await paging_data(db, log_select)
31+
page_data = await opera_log_service.get_list(db=db, username=username, status=status, ip=ip)
32+
3333
return response_base.success(data=page_data)
3434

3535

@@ -41,8 +41,8 @@ async def get_opera_logs_paged(
4141
DependsRBAC,
4242
],
4343
)
44-
async def delete_opera_logs(obj: DeleteOperaLogParam) -> ResponseModel:
45-
count = await opera_log_service.delete(obj=obj)
44+
async def delete_opera_logs(db: CurrentSessionTransaction, obj: DeleteOperaLogParam) -> ResponseModel:
45+
count = await opera_log_service.delete(db=db, obj=obj)
4646
if count > 0:
4747
return response_base.success()
4848
return response_base.fail()
@@ -56,6 +56,6 @@ async def delete_opera_logs(obj: DeleteOperaLogParam) -> ResponseModel:
5656
DependsRBAC,
5757
],
5858
)
59-
async def delete_all_opera_logs() -> ResponseModel:
60-
await opera_log_service.delete_all()
59+
async def delete_all_opera_logs(db: CurrentSessionTransaction) -> ResponseModel:
60+
await opera_log_service.delete_all(db=db)
6161
return response_base.success()

backend/app/admin/api/v1/monitor/online.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
from typing import Annotated
44

5-
from fastapi import APIRouter, Path, Query, Request
5+
from fastapi import APIRouter, Path, Query
66

77
from backend.app.admin.schema.token import GetTokenDetail
88
from backend.common.enums import StatusType
@@ -76,7 +76,6 @@ def append_token_detail() -> None:
7676
dependencies=[DependsSuperUser],
7777
)
7878
async def delete_session(
79-
request: Request,
8079
pk: Annotated[int, Path(description='用户 ID')],
8180
session_uuid: Annotated[str, Query(description='会话 UUID')],
8281
) -> ResponseModel:

backend/app/admin/api/v1/sys/data_rule.py

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,12 @@
1010
UpdateDataRuleParam,
1111
)
1212
from backend.app.admin.service.data_rule_service import data_rule_service
13-
from backend.common.pagination import DependsPagination, PageData, paging_data
13+
from backend.common.pagination import DependsPagination, PageData
1414
from backend.common.response.response_schema import ResponseModel, ResponseSchemaModel, response_base
1515
from backend.common.security.jwt import DependsJwtAuth
1616
from backend.common.security.permission import RequestPermission
1717
from backend.common.security.rbac import DependsRBAC
18-
from backend.database.db import CurrentSession
18+
from backend.database.db import CurrentSession, CurrentSessionTransaction
1919

2020
router = APIRouter()
2121

@@ -35,16 +35,17 @@ async def get_data_rule_model_columns(
3535

3636

3737
@router.get('/all', summary='获取所有数据规则', dependencies=[DependsJwtAuth])
38-
async def get_all_data_rules() -> ResponseSchemaModel[list[GetDataRuleDetail]]:
39-
data = await data_rule_service.get_all()
38+
async def get_all_data_rules(db: CurrentSession) -> ResponseSchemaModel[list[GetDataRuleDetail]]:
39+
data = await data_rule_service.get_all(db=db)
4040
return response_base.success(data=data)
4141

4242

4343
@router.get('/{pk}', summary='获取数据规则详情', dependencies=[DependsJwtAuth])
4444
async def get_data_rule(
45+
db: CurrentSession,
4546
pk: Annotated[int, Path(description='数据规则 ID')],
4647
) -> ResponseSchemaModel[GetDataRuleDetail]:
47-
data = await data_rule_service.get(pk=pk)
48+
data = await data_rule_service.get(db=db, pk=pk)
4849
return response_base.success(data=data)
4950

5051

@@ -56,12 +57,11 @@ async def get_data_rule(
5657
DependsPagination,
5758
],
5859
)
59-
async def get_data_rules_paged(
60+
async def get_data_rules_paginated(
6061
db: CurrentSession,
6162
name: Annotated[str | None, Query(description='规则名称')] = None,
6263
) -> ResponseSchemaModel[PageData[GetDataRuleDetail]]:
63-
data_rule_select = await data_rule_service.get_select(name=name)
64-
page_data = await paging_data(db, data_rule_select)
64+
page_data = await data_rule_service.get_list(db=db, name=name)
6565
return response_base.success(data=page_data)
6666

6767

@@ -73,8 +73,8 @@ async def get_data_rules_paged(
7373
DependsRBAC,
7474
],
7575
)
76-
async def create_data_rule(obj: CreateDataRuleParam) -> ResponseModel:
77-
await data_rule_service.create(obj=obj)
76+
async def create_data_rule(db: CurrentSessionTransaction, obj: CreateDataRuleParam) -> ResponseModel:
77+
await data_rule_service.create(db=db, obj=obj)
7878
return response_base.success()
7979

8080

@@ -87,10 +87,11 @@ async def create_data_rule(obj: CreateDataRuleParam) -> ResponseModel:
8787
],
8888
)
8989
async def update_data_rule(
90+
db: CurrentSessionTransaction,
9091
pk: Annotated[int, Path(description='数据规则 ID')],
9192
obj: UpdateDataRuleParam,
9293
) -> ResponseModel:
93-
count = await data_rule_service.update(pk=pk, obj=obj)
94+
count = await data_rule_service.update(db=db, pk=pk, obj=obj)
9495
if count > 0:
9596
return response_base.success()
9697
return response_base.fail()
@@ -104,8 +105,8 @@ async def update_data_rule(
104105
DependsRBAC,
105106
],
106107
)
107-
async def delete_data_rules(obj: DeleteDataRuleParam) -> ResponseModel:
108-
count = await data_rule_service.delete(obj=obj)
108+
async def delete_data_rules(db: CurrentSessionTransaction, obj: DeleteDataRuleParam) -> ResponseModel:
109+
count = await data_rule_service.delete(db=db, obj=obj)
109110
if count > 0:
110111
return response_base.success()
111112
return response_base.fail()

backend/app/admin/api/v1/sys/data_scope.py

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -11,35 +11,37 @@
1111
UpdateDataScopeRuleParam,
1212
)
1313
from backend.app.admin.service.data_scope_service import data_scope_service
14-
from backend.common.pagination import DependsPagination, PageData, paging_data
14+
from backend.common.pagination import DependsPagination, PageData
1515
from backend.common.response.response_schema import ResponseModel, ResponseSchemaModel, response_base
1616
from backend.common.security.jwt import DependsJwtAuth
1717
from backend.common.security.permission import RequestPermission
1818
from backend.common.security.rbac import DependsRBAC
19-
from backend.database.db import CurrentSession
19+
from backend.database.db import CurrentSession, CurrentSessionTransaction
2020

2121
router = APIRouter()
2222

2323

2424
@router.get('/all', summary='获取所有数据范围', dependencies=[DependsJwtAuth])
25-
async def get_all_data_scope() -> ResponseSchemaModel[list[GetDataScopeDetail]]:
26-
data = await data_scope_service.get_all()
25+
async def get_all_data_scope(db: CurrentSession) -> ResponseSchemaModel[list[GetDataScopeDetail]]:
26+
data = await data_scope_service.get_all(db=db)
2727
return response_base.success(data=data)
2828

2929

3030
@router.get('/{pk}', summary='获取数据范围详情', dependencies=[DependsJwtAuth])
3131
async def get_data_scope(
32+
db: CurrentSession,
3233
pk: Annotated[int, Path(description='数据范围 ID')],
3334
) -> ResponseSchemaModel[GetDataScopeDetail]:
34-
data = await data_scope_service.get(pk=pk)
35+
data = await data_scope_service.get(db=db, pk=pk)
3536
return response_base.success(data=data)
3637

3738

3839
@router.get('/{pk}/rules', summary='获取数据范围所有规则', dependencies=[DependsJwtAuth])
3940
async def get_data_scope_rules(
41+
db: CurrentSession,
4042
pk: Annotated[int, Path(description='数据范围 ID')],
4143
) -> ResponseSchemaModel[GetDataScopeWithRelationDetail]:
42-
data = await data_scope_service.get_rules(pk=pk)
44+
data = await data_scope_service.get_rules(db=db, pk=pk)
4345
return response_base.success(data=data)
4446

4547

@@ -51,13 +53,12 @@ async def get_data_scope_rules(
5153
DependsPagination,
5254
],
5355
)
54-
async def get_data_scopes_paged(
56+
async def get_data_scopes_paginated(
5557
db: CurrentSession,
5658
name: Annotated[str | None, Query(description='范围名称')] = None,
5759
status: Annotated[int | None, Query(description='状态')] = None,
5860
) -> ResponseSchemaModel[PageData[GetDataScopeDetail]]:
59-
data_scope_select = await data_scope_service.get_select(name=name, status=status)
60-
page_data = await paging_data(db, data_scope_select)
61+
page_data = await data_scope_service.get_list(db=db, name=name, status=status)
6162
return response_base.success(data=page_data)
6263

6364

@@ -69,8 +70,8 @@ async def get_data_scopes_paged(
6970
DependsRBAC,
7071
],
7172
)
72-
async def create_data_scope(obj: CreateDataScopeParam) -> ResponseModel:
73-
await data_scope_service.create(obj=obj)
73+
async def create_data_scope(db: CurrentSessionTransaction, obj: CreateDataScopeParam) -> ResponseModel:
74+
await data_scope_service.create(db=db, obj=obj)
7475
return response_base.success()
7576

7677

@@ -83,10 +84,11 @@ async def create_data_scope(obj: CreateDataScopeParam) -> ResponseModel:
8384
],
8485
)
8586
async def update_data_scope(
87+
db: CurrentSessionTransaction,
8688
pk: Annotated[int, Path(description='数据范围 ID')],
8789
obj: UpdateDataScopeParam,
8890
) -> ResponseModel:
89-
count = await data_scope_service.update(pk=pk, obj=obj)
91+
count = await data_scope_service.update(db=db, pk=pk, obj=obj)
9092
if count > 0:
9193
return response_base.success()
9294
return response_base.fail()
@@ -101,10 +103,11 @@ async def update_data_scope(
101103
],
102104
)
103105
async def update_data_scope_rules(
106+
db: CurrentSessionTransaction,
104107
pk: Annotated[int, Path(description='数据范围 ID')],
105108
rule_ids: UpdateDataScopeRuleParam,
106109
) -> ResponseModel:
107-
count = await data_scope_service.update_data_scope_rule(pk=pk, rule_ids=rule_ids)
110+
count = await data_scope_service.update_data_scope_rule(db=db, pk=pk, rule_ids=rule_ids)
108111
if count > 0:
109112
return response_base.success()
110113
return response_base.fail()
@@ -118,8 +121,8 @@ async def update_data_scope_rules(
118121
DependsRBAC,
119122
],
120123
)
121-
async def delete_data_scopes(obj: DeleteDataScopeParam) -> ResponseModel:
122-
count = await data_scope_service.delete(obj=obj)
124+
async def delete_data_scopes(db: CurrentSessionTransaction, obj: DeleteDataScopeParam) -> ResponseModel:
125+
count = await data_scope_service.delete(db=db, obj=obj)
123126
if count > 0:
124127
return response_base.success()
125128
return response_base.fail()

0 commit comments

Comments
 (0)