Skip to content

Commit fbd75e9

Browse files
committed
Define new style sorters for FieldRegion & FieldZone
1 parent 890a1bd commit fbd75e9

File tree

2 files changed

+25
-5
lines changed

2 files changed

+25
-5
lines changed

src/components/field-region/field-region.repository.ts

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,17 @@ import {
1414
ACTIVE,
1515
createNode,
1616
createRelationships,
17+
defineSorters,
1718
filter,
1819
matchProps,
1920
merge,
2021
paginate,
21-
sorting,
22+
sortWith,
2223
} from '~/core/database/query';
23-
import { fieldZoneFilters } from '../field-zone/field-zone.repository';
24+
import {
25+
fieldZoneFilters,
26+
fieldZoneSorters,
27+
} from '../field-zone/field-zone.repository';
2428
import {
2529
type CreateFieldRegion,
2630
FieldRegion,
@@ -113,7 +117,7 @@ export class FieldRegionRepository extends DtoRepository(FieldRegion) {
113117
.query()
114118
.match(node('node', 'FieldRegion'))
115119
.apply(fieldRegionFilters(input.filter))
116-
.apply(sorting(FieldRegion, input))
120+
.apply(sortWith(fieldRegionSorters, input))
117121
.apply(paginate(input, this.hydrate()))
118122
.first();
119123
return result!; // result from paginate() will always have 1 row.
@@ -143,3 +147,16 @@ export const fieldRegionFilters = filter.define(() => FieldRegionFilters, {
143147
]),
144148
),
145149
});
150+
151+
export const fieldRegionSorters = defineSorters(FieldRegion, {
152+
// eslint-disable-next-line @typescript-eslint/naming-convention
153+
'fieldZone.*': (query, input) =>
154+
query
155+
.with('node as region')
156+
.match([
157+
node('region'),
158+
relation('out', '', 'zone', ACTIVE),
159+
node('node', 'FieldZone'),
160+
])
161+
.apply(sortWith(fieldZoneSorters, input)),
162+
});

src/components/field-zone/field-zone.repository.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,12 @@ import {
1515
ACTIVE,
1616
createNode,
1717
createRelationships,
18+
defineSorters,
1819
filter,
1920
matchProps,
2021
merge,
2122
paginate,
22-
sorting,
23+
sortWith,
2324
} from '~/core/database/query';
2425
import {
2526
type CreateFieldZone,
@@ -131,7 +132,7 @@ export class FieldZoneRepository extends DtoRepository(FieldZone) {
131132
.query()
132133
.match(node('node', 'FieldZone'))
133134
.apply(fieldZoneFilters(input.filter))
134-
.apply(sorting(FieldZone, input))
135+
.apply(sortWith(fieldZoneSorters, input))
135136
.apply(paginate(input, this.hydrate()))
136137
.first();
137138
return result!; // result from paginate() will always have 1 row.
@@ -154,3 +155,5 @@ export class FieldZoneRepository extends DtoRepository(FieldZone) {
154155
export const fieldZoneFilters = filter.define(() => FieldZoneFilters, {
155156
id: filter.baseNodeProp(),
156157
});
158+
159+
export const fieldZoneSorters = defineSorters(FieldZone, {});

0 commit comments

Comments
 (0)