feat(new): new interfaces for create or update role&permission, and query method not using pagination
This commit is contained in:
parent
58eea0e2b2
commit
89d0f2ee8f
@ -0,0 +1,45 @@
|
|||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
from fastapi import APIRouter, Depends
|
||||||
|
from pydantic import BaseModel
|
||||||
|
from typing import Optional
|
||||||
|
|
||||||
|
from backend.services.permission.permission_service import PermissionService
|
||||||
|
from common.token.token_manager import TokenManager
|
||||||
|
|
||||||
|
|
||||||
|
router = APIRouter()
|
||||||
|
token_manager = TokenManager()
|
||||||
|
permission_service = PermissionService()
|
||||||
|
|
||||||
|
|
||||||
|
class CreateOrUpdatePermissionRequest(BaseModel):
|
||||||
|
permission_key: str
|
||||||
|
permission_name: str
|
||||||
|
custom_permission_id: Optional[str] = None
|
||||||
|
description: Optional[str] = None
|
||||||
|
|
||||||
|
|
||||||
|
class PermissionResponse(BaseModel):
|
||||||
|
id: str
|
||||||
|
permission_key: str
|
||||||
|
permission_name: str
|
||||||
|
description: Optional[str] = None
|
||||||
|
created_at: datetime
|
||||||
|
updated_at: datetime
|
||||||
|
|
||||||
|
|
||||||
|
@router.post(
|
||||||
|
"/create-or-update",
|
||||||
|
response_model=PermissionResponse,
|
||||||
|
operation_id="create-or-update-permission",
|
||||||
|
summary="Create or Update Permission",
|
||||||
|
description="Create or update a permission by id."
|
||||||
|
)
|
||||||
|
async def create_or_update_permission(
|
||||||
|
req: CreateOrUpdatePermissionRequest,
|
||||||
|
#_: bool = Depends(token_manager.has_all_permissions([DefaultPermissionEnum.CHANGE_PERMISSIONS.value.permission_key]))
|
||||||
|
) -> PermissionResponse:
|
||||||
|
doc = await permission_service.create_or_update_permission(req.permission_key, req.permission_name, req.custom_permission_id,
|
||||||
|
req.description)
|
||||||
|
return PermissionResponse(**doc.dict())
|
||||||
@ -0,0 +1,45 @@
|
|||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
from fastapi import APIRouter
|
||||||
|
from pydantic import BaseModel
|
||||||
|
from typing import Optional, List
|
||||||
|
from backend.services.permission.permission_service import PermissionService
|
||||||
|
from common.token.token_manager import TokenManager
|
||||||
|
|
||||||
|
router = APIRouter()
|
||||||
|
token_manager = TokenManager()
|
||||||
|
permission_service = PermissionService()
|
||||||
|
|
||||||
|
class QueryPermissionNoPaginationRequest(BaseModel):
|
||||||
|
permission_id: Optional[str] = None
|
||||||
|
permission_key: Optional[str] = None
|
||||||
|
permission_name: Optional[str] = None
|
||||||
|
|
||||||
|
class PermissionResponse(BaseModel):
|
||||||
|
id: str
|
||||||
|
permission_key: str
|
||||||
|
permission_name: str
|
||||||
|
description: Optional[str] = None
|
||||||
|
created_at: datetime
|
||||||
|
updated_at: datetime
|
||||||
|
|
||||||
|
class QueryPermissionNoPaginationResponse(BaseModel):
|
||||||
|
items: List[PermissionResponse]
|
||||||
|
total: int
|
||||||
|
|
||||||
|
@router.post(
|
||||||
|
"/query_permission_no_pagination",
|
||||||
|
response_model=QueryPermissionNoPaginationResponse,
|
||||||
|
operation_id="query-permission-no-pagination",
|
||||||
|
summary="Query Permission No Pagination",
|
||||||
|
description="Query permissions fuzzy search."
|
||||||
|
)
|
||||||
|
async def query_permission_no_pagination(
|
||||||
|
req: QueryPermissionNoPaginationRequest,
|
||||||
|
) -> QueryPermissionNoPaginationResponse:
|
||||||
|
result = await permission_service.query_permissions_no_pagination(req.permission_id, req.permission_key, req.permission_name)
|
||||||
|
items = [PermissionResponse(**item) for item in result["items"]]
|
||||||
|
return QueryPermissionNoPaginationResponse(
|
||||||
|
items=items,
|
||||||
|
total=result["total"]
|
||||||
|
)
|
||||||
@ -0,0 +1,49 @@
|
|||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
from fastapi import APIRouter, Depends
|
||||||
|
from pydantic import BaseModel
|
||||||
|
from typing import Optional, List
|
||||||
|
|
||||||
|
from backend.services.permission.role_service import RoleService
|
||||||
|
from common.token.token_manager import TokenManager
|
||||||
|
|
||||||
|
|
||||||
|
router = APIRouter()
|
||||||
|
token_manager = TokenManager()
|
||||||
|
role_service = RoleService()
|
||||||
|
|
||||||
|
|
||||||
|
class CreateOrUpdateRoleRequest(BaseModel):
|
||||||
|
role_key: str
|
||||||
|
role_name: str
|
||||||
|
role_level: int
|
||||||
|
custom_role_id: Optional[str] = None
|
||||||
|
role_description: Optional[str] = None
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class RoleResponse(BaseModel):
|
||||||
|
id: str
|
||||||
|
role_key: str
|
||||||
|
role_name: str
|
||||||
|
role_description: Optional[str] = None
|
||||||
|
permission_ids: List[str]
|
||||||
|
role_level: int
|
||||||
|
created_at: datetime
|
||||||
|
updated_at: datetime
|
||||||
|
|
||||||
|
|
||||||
|
@router.post(
|
||||||
|
"/create-or-update",
|
||||||
|
response_model=RoleResponse,
|
||||||
|
operation_id="create-or-update-role",
|
||||||
|
summary="Create or Update Role",
|
||||||
|
description="Create or update a role by id."
|
||||||
|
)
|
||||||
|
async def create_or_update_permission(
|
||||||
|
req: CreateOrUpdateRoleRequest,
|
||||||
|
#_: bool = Depends(token_manager.has_all_permissions([DefaultPermissionEnum.CHANGE_PERMISSIONS.value.permission_key]))
|
||||||
|
) -> RoleResponse:
|
||||||
|
doc = await role_service.create_or_update_role(req.role_key, req.role_name, req.role_level, req.custom_role_id, req.role_description)
|
||||||
|
|
||||||
|
return RoleResponse(**doc.dict())
|
||||||
@ -0,0 +1,47 @@
|
|||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
from fastapi import APIRouter
|
||||||
|
from pydantic import BaseModel
|
||||||
|
from typing import Optional, List
|
||||||
|
from backend.services.permission.role_service import RoleService
|
||||||
|
from common.token.token_manager import TokenManager
|
||||||
|
|
||||||
|
router = APIRouter()
|
||||||
|
token_manager = TokenManager()
|
||||||
|
role_service = RoleService()
|
||||||
|
|
||||||
|
class QueryRoleNoPaginationRequest(BaseModel):
|
||||||
|
role_id: Optional[str] = None
|
||||||
|
role_key: Optional[str] = None
|
||||||
|
role_name: Optional[str] = None
|
||||||
|
|
||||||
|
class RoleResponse(BaseModel):
|
||||||
|
id: str
|
||||||
|
role_key: str
|
||||||
|
role_name: str
|
||||||
|
role_description: Optional[str] = None
|
||||||
|
permission_ids: List[str]
|
||||||
|
role_level: int
|
||||||
|
created_at: datetime
|
||||||
|
updated_at: datetime
|
||||||
|
|
||||||
|
class QueryRoleNoPaginationResponse(BaseModel):
|
||||||
|
items: List[RoleResponse]
|
||||||
|
total: int
|
||||||
|
|
||||||
|
@router.post(
|
||||||
|
"/query_role_no_pagination",
|
||||||
|
response_model=QueryRoleNoPaginationResponse,
|
||||||
|
operation_id="query-role-no-pagination",
|
||||||
|
summary="Query Role No Pagination",
|
||||||
|
description="Query roles fuzzy search without pagination."
|
||||||
|
)
|
||||||
|
async def query_role_no_pagination(
|
||||||
|
req: QueryRoleNoPaginationRequest,
|
||||||
|
) -> QueryRoleNoPaginationResponse:
|
||||||
|
result = await role_service.query_roles_no_pagination(req.role_id, req.role_key, req.role_name)
|
||||||
|
items = [RoleResponse(**item) for item in result["items"]]
|
||||||
|
return QueryRoleNoPaginationResponse(
|
||||||
|
items=items,
|
||||||
|
total=result["total"]
|
||||||
|
)
|
||||||
Loading…
Reference in New Issue
Block a user