Skip to content

Commit 9c595a9

Browse files
committed
add order, paginationa and filter to active sectors query
1 parent d395d30 commit 9c595a9

File tree

1 file changed

+34
-6
lines changed

1 file changed

+34
-6
lines changed

api/schema/sector_schema.py

Lines changed: 34 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
import uuid
2-
from typing import List, Optional
2+
from typing import Any, List, Optional
33

44
import strawberry
55
import strawberry_django
66
from strawberry import auto
77
from strawberry.types import Info
88
from strawberry_django.mutations import mutations
9+
from strawberry_django.pagination import OffsetPaginationInput
910

1011
from api.models import Sector
11-
from api.types.type_sector import TypeSector
12+
from api.types.type_sector import SectorFilter, SectorOrder, TypeSector
1213
from api.utils.enums import DatasetStatus
1314

1415

@@ -41,11 +42,38 @@ def sector(self, info: Info, id: uuid.UUID) -> Optional[TypeSector]:
4142
except Sector.DoesNotExist:
4243
raise ValueError(f"Sector with ID {id} does not exist.")
4344

44-
@strawberry_django.field
45-
def active_sectors(self, info: Info) -> list[TypeSector]:
45+
@strawberry_django.field(
46+
filters=SectorFilter,
47+
pagination=True,
48+
order=SectorOrder,
49+
)
50+
def active_sectors(
51+
self,
52+
info: Info,
53+
filters: Optional[SectorFilter] = strawberry.UNSET,
54+
pagination: Optional[OffsetPaginationInput] = strawberry.UNSET,
55+
order: Optional[SectorOrder] = strawberry.UNSET,
56+
) -> list[TypeSector]:
4657
"""Get sectors with published datasets."""
47-
queryset = Sector.objects.filter(datasets__status=DatasetStatus.PUBLISHED)
48-
return TypeSector.from_django_list(queryset)
58+
# Start with base queryset filtering for active sectors
59+
queryset = Sector.objects.filter(
60+
datasets__status=DatasetStatus.PUBLISHED
61+
).distinct()
62+
63+
# Apply filters if provided
64+
if filters is not strawberry.UNSET:
65+
queryset = strawberry_django.filters.apply(filters, queryset, info)
66+
67+
# Apply ordering if provided
68+
if order is not strawberry.UNSET:
69+
queryset = strawberry_django.ordering.apply(order, queryset, info)
70+
71+
# Apply pagination if provided
72+
if pagination is not strawberry.UNSET:
73+
# Apply pagination to the list
74+
queryset = strawberry_django.pagination.apply(pagination, queryset)
75+
76+
return [TypeSector.from_django(instance) for instance in queryset]
4977

5078

5179
@strawberry.type

0 commit comments

Comments
 (0)