Skip to content

Commit 527afc7

Browse files
committed
refactor(graphql): simplify queries, migrate to order_type, and clean lint issues
- Replace resolver-based pagination with plain offset_paginated fields - Migrate deprecated strawberry_django.order to order_type - Fix typo in sentry transaction helper (atrack → attrack) - Clean up list concatenations and docstrings for ruff compliance
1 parent 20bddb3 commit 527afc7

File tree

18 files changed

+44
-269
lines changed

18 files changed

+44
-269
lines changed

.pre-commit-config.yaml

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,3 @@ repos:
7878
typing_extensions,
7979
wadler_lindig,
8080
]
81-
82-
# TODO: Setup https://pre-commit.ci/
83-
# sets up .pre-commit-ci.yaml to ensure pre-commit dependencies stay up to date
84-
# ci:
85-
# autoupdate_schedule: weekly
86-
# skip: []
87-
# submodules: false

apps/common/graphql/__init__.py

Whitespace-only changes.

apps/tool_picker/admin.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -337,13 +337,16 @@ class UserAnswerAdmin(admin.ModelAdmin): # type: ignore[reportMissingTypeArgume
337337
search_fields = ["submission__id", "question__title"]
338338

339339
def get_fields(self, request, obj=None): # type: ignore[reportMissingTypeArgument]
340-
"""Show only relevant fields based on question type"""
340+
"""Show only relevant fields based on question type."""
341341
base_fields = ["submission", "question"]
342+
342343
if obj and obj.question.question_type == "ordinal":
343-
return base_fields + ["ordinal_value"]
344+
return [*base_fields, "ordinal_value"]
345+
344346
if obj and obj.question.question_type == "checkbox":
345-
return base_fields + ["selected_options"]
346-
return base_fields + ["ordinal_value", "selected_options"]
347+
return [*base_fields, "selected_options"]
348+
349+
return [*base_fields, "ordinal_value", "selected_options"]
347350

348351
def get_form(self, request, obj=None, **kwargs): # type: ignore[reportMissingTypeArgument]
349352
form = super().get_form(request, obj, **kwargs)

apps/tool_picker/graphql/filters.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
@strawberry_django.filters.filter(Catalog, lookups=True)
88
class CatalogFilter:
99
id: strawberry.ID | None
10-
show_in_help_me_choose: strawberry.auto
10+
show_in_help_me_choose: bool | None
1111

1212

1313
@strawberry_django.filters.filter(Tool, lookups=True)

apps/tool_picker/graphql/orders.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@
44
from apps.tool_picker.models import Catalog, Tool
55

66

7-
@strawberry_django.ordering.order(Catalog)
7+
@strawberry_django.order_type(Catalog)
88
class CatalogOrder:
99
id: strawberry.auto
1010

1111

12-
@strawberry_django.ordering.order(Tool)
12+
@strawberry_django.order_type(Tool)
1313
class ToolOrder:
1414
id: strawberry.auto
Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,24 @@
11
import strawberry
22
import strawberry_django
3-
from django.db.models import QuerySet
43
from strawberry_django.pagination import OffsetPaginated
54

6-
from apps.tool_picker.models import Catalog, Tool
7-
85
from .filters import CatalogFilter, ToolFilter
96
from .orders import CatalogOrder, ToolOrder
107
from .types import CatalogType, ToolType
118

129

1310
@strawberry.type
1411
class Query:
15-
@strawberry_django.offset_paginated(
16-
OffsetPaginated[CatalogType],
12+
catalogs: OffsetPaginated[CatalogType] = strawberry_django.offset_paginated(
1713
order=CatalogOrder,
1814
filters=CatalogFilter,
1915
)
20-
def catalogs(
21-
self,
22-
) -> QuerySet[Catalog]:
23-
return Catalog.objects.all()
2416

2517
catalog: CatalogType = strawberry_django.field()
2618

27-
@strawberry_django.offset_paginated(
28-
OffsetPaginated[ToolType],
19+
tools: OffsetPaginated[ToolType] = strawberry_django.offset_paginated(
2920
order=ToolOrder,
3021
filters=ToolFilter,
3122
)
32-
def tools(
33-
self,
34-
) -> QuerySet[Tool]:
35-
return Tool.objects.all()
3623

3724
tool: ToolType = strawberry_django.field()

apps/user/graphql/dataloaders.py

Lines changed: 0 additions & 22 deletions
This file was deleted.

apps/user/graphql/filters.py

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,9 @@
11
import strawberry
22
import strawberry_django
3-
from django.db import models
43

54
from apps.user.models import User
65

76

87
@strawberry_django.filters.filter(User, lookups=True)
98
class UserFilter:
109
id: strawberry.auto
11-
12-
@strawberry_django.filter_field
13-
def search(
14-
self,
15-
queryset: models.QuerySet[User],
16-
value: str,
17-
prefix: str,
18-
) -> tuple[models.QuerySet[User], models.Q]:
19-
return queryset, models.Q(
20-
**{
21-
f"{prefix}display_name__icontains": value,
22-
},
23-
)

apps/user/graphql/orders.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
from apps.user.models import User
55

66

7-
@strawberry_django.ordering.order(User)
7+
@strawberry_django.order_type(User)
88
class UserOrder:
99
id: strawberry.auto
10-
display_name: strawberry.auto

apps/user/graphql/queries.py

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,9 @@
11
import strawberry
2-
import strawberry_django
32
from asgiref.sync import sync_to_async
4-
from django.db import models
5-
from strawberry_django.pagination import OffsetPaginated
6-
from strawberry_django.permissions import IsAuthenticated
73

8-
from apps.user.models import User
94
from main.graphql.context import Info
105

11-
from .filters import UserFilter
12-
from .orders import UserOrder
13-
from .types import UserMeType, UserType
6+
from .types import UserMeType
147

158

169
@strawberry.type
@@ -23,14 +16,3 @@ def me(self, info: Info) -> UserMeType | None:
2316
if user.is_authenticated:
2417
return user # type: ignore[reportGeneralTypeIssues]
2518
return None
26-
27-
# Private --------------------
28-
# --- Paginated
29-
@strawberry_django.offset_paginated(
30-
OffsetPaginated[UserType],
31-
order=UserOrder,
32-
filters=UserFilter,
33-
extensions=[IsAuthenticated()],
34-
)
35-
def users(self) -> models.QuerySet[User]:
36-
return User.objects.filter(is_active=True)

0 commit comments

Comments
 (0)