3
3
from __future__ import annotations
4
4
5
5
from typing import TYPE_CHECKING , Annotated
6
- from uuid import UUID
7
6
8
7
from litestar import Controller , delete , get , patch , post
9
8
from sqlalchemy import select
15
14
from app .domain .teams .guards import requires_team_admin , requires_team_membership
16
15
from app .domain .teams .schemas import Team , TeamCreate , TeamUpdate
17
16
from app .domain .teams .services import TeamService
18
- from app .lib .deps import create_filter_dependencies , create_service_provider
17
+ from app .lib .deps import create_service_provider
19
18
20
19
if TYPE_CHECKING :
20
+ from uuid import UUID
21
+
22
+ from advanced_alchemy .service import FilterTypeT
21
23
from advanced_alchemy .service .pagination import OffsetPagination
22
24
from litestar .params import Dependency , Parameter
23
25
24
- from app .lib .dependencies import FilterTypes
25
-
26
26
27
27
class TeamController (Controller ):
28
28
"""Teams."""
29
29
30
30
tags = ["Teams" ]
31
31
dependencies = {
32
32
"teams_service" : create_service_provider (TeamService , load = [m .Team .tags , m .Team .members ]),
33
- "filters" : create_filter_dependencies (
34
- {
35
- "id_filter" : UUID ,
36
- "created_at" : True ,
37
- "updated_at" : True ,
38
- "pagination_size" : 1 ,
39
- "sort_field" : "name" ,
40
- "sort_order" : "asc" ,
41
- "search_fields" : ["name" , "slug" ],
42
- },
43
- ),
44
33
}
45
34
guards = [requires_active_user ]
46
35
@@ -49,7 +38,7 @@ async def list_teams(
49
38
self ,
50
39
teams_service : TeamService ,
51
40
current_user : m .User ,
52
- filters : Annotated [list [FilterTypes ], Dependency (skip_validation = True )],
41
+ filters : Annotated [list [FilterTypeT ], Dependency (skip_validation = True )],
53
42
) -> OffsetPagination [Team ]:
54
43
"""List teams that your account can access.."""
55
44
if not teams_service .can_view_all (current_user ):
@@ -60,12 +49,7 @@ async def list_teams(
60
49
return teams_service .to_schema (data = results , total = total , schema_type = Team , filters = filters )
61
50
62
51
@post (operation_id = "CreateTeam" , path = urls .TEAM_CREATE )
63
- async def create_team (
64
- self ,
65
- teams_service : TeamService ,
66
- current_user : m .User ,
67
- data : TeamCreate ,
68
- ) -> Team :
52
+ async def create_team (self , teams_service : TeamService , current_user : m .User , data : TeamCreate ) -> Team :
69
53
"""Create a new team."""
70
54
obj = data .to_dict ()
71
55
obj .update ({"owner_id" : current_user .id , "owner" : current_user })
0 commit comments