1- from typing import Any
2-
31from fastapi import APIRouter , status
42from fastapi .responses import JSONResponse
53
64from app .core .dependencies import ResponseFactoryDep
75from app .core .exceptions import AppHTTPException
86from app .db .exceptions import ResourceAlreadyExistsError
9- from app .schemas .response import GenericSuccessContent
107
118from ..dependencies import CurrentUserSessionDep , RoleServiceDep , require_permission
12- from ..entities import Role as RoleEntity
139from ..schemas import AddRolePermissionsDTO , CreateRoleDTO , ReplaceRoleDTO , UpdateRoleDTO
10+ from .swagger_utils import (
11+ add_role_perms_swagger ,
12+ create_role_swagger ,
13+ delete_role_swagger ,
14+ get_role_perms_swagger ,
15+ get_role_swagger ,
16+ list_roles_swagger ,
17+ replace_role_swagger ,
18+ update_role_swagger ,
19+ )
1420
1521role_router = APIRouter ()
1622
17- post_role_responses : dict [int | str , dict [str , Any ]] = {
18- status .HTTP_201_CREATED : {"description" : "Role created successfully" },
19- status .HTTP_409_CONFLICT : {"description" : "Role with this name already exists" },
20- }
21-
2223
2324@role_router .post (
2425 "/" ,
2526 tags = ["Roles" ],
26- response_model = GenericSuccessContent [RoleEntity ],
27- responses = post_role_responses ,
2827 dependencies = [require_permission ("role:create" )],
28+ ** create_role_swagger ,
2929)
3030async def create_role (
3131 dto : CreateRoleDTO ,
@@ -49,11 +49,8 @@ async def create_role(
4949@role_router .get (
5050 "/" ,
5151 tags = ["Roles" ],
52- response_model = GenericSuccessContent [list [RoleEntity ]],
53- responses = {
54- status .HTTP_200_OK : {"description" : "List of all roles" },
55- },
5652 dependencies = [require_permission ("role:list" )],
53+ ** list_roles_swagger ,
5754)
5855async def get_roles (
5956 _auth : CurrentUserSessionDep , service : RoleServiceDep , response : ResponseFactoryDep
@@ -65,7 +62,10 @@ async def get_roles(
6562 )
6663
6764
68- @role_router .get ("/{id}" , tags = ["Roles" ], dependencies = [require_permission ("role:read" )])
65+ @role_router .get (
66+ "/{id}" , tags = ["Roles" ], dependencies = [require_permission ("role:read" )],
67+ ** get_role_swagger ,
68+ )
6969async def get_role (
7070 id : int , _auth : CurrentUserSessionDep , service : RoleServiceDep , response : ResponseFactoryDep
7171) -> JSONResponse :
@@ -80,7 +80,10 @@ async def get_role(
8080 )
8181
8282
83- @role_router .put ("/{id}" , tags = ["Roles" ], dependencies = [require_permission ("role:replace" )])
83+ @role_router .put (
84+ "/{id}" , tags = ["Roles" ], dependencies = [require_permission ("role:replace" )],
85+ ** replace_role_swagger ,
86+ )
8487async def replace_role (
8588 id : int ,
8689 dto : ReplaceRoleDTO ,
@@ -99,7 +102,10 @@ async def replace_role(
99102 )
100103
101104
102- @role_router .patch ("/{id}" , tags = ["Roles" ], dependencies = [require_permission ("role:update" )])
105+ @role_router .patch (
106+ "/{id}" , tags = ["Roles" ], dependencies = [require_permission ("role:update" )],
107+ ** update_role_swagger ,
108+ )
103109async def update_role (
104110 id : int ,
105111 dto : UpdateRoleDTO ,
@@ -118,7 +124,10 @@ async def update_role(
118124 )
119125
120126
121- @role_router .delete ("/{id}" , tags = ["Roles" ], dependencies = [require_permission ("role:delete" )])
127+ @role_router .delete (
128+ "/{id}" , tags = ["Roles" ], dependencies = [require_permission ("role:delete" )],
129+ ** delete_role_swagger ,
130+ )
122131async def delete_role (
123132 id : int ,
124133 _auth : CurrentUserSessionDep ,
@@ -140,6 +149,7 @@ async def delete_role(
140149 "/{id}/permissions" ,
141150 tags = ["Roles" , "Permissions" ],
142151 dependencies = [require_permission ("role:read_permissions" )],
152+ ** get_role_perms_swagger ,
143153)
144154async def get_role_permissions (
145155 id : int ,
@@ -159,6 +169,7 @@ async def get_role_permissions(
159169 "/{id}/permissions" ,
160170 tags = ["Roles" , "Permissions" ],
161171 dependencies = [require_permission ("role:add_permissions" )],
172+ ** add_role_perms_swagger ,
162173)
163174async def add_role_permissions (
164175 id : int ,
0 commit comments