Skip to content

Commit bd34399

Browse files
committed
Replace DbSort with new metadata decorator
1 parent 8fa212a commit bd34399

File tree

2 files changed

+7
-16
lines changed

2 files changed

+7
-16
lines changed

src/common/db-sort.decorator.ts

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
import { AbstractClassType } from './types';
2-
3-
const DbSortSymbol = Symbol('DbSortSymbol');
1+
import { createMetadataDecorator } from '@seedcompany/nest';
42

53
/**
64
* A function given a cypher variable will output cypher to transform it for sorting.
@@ -10,11 +8,7 @@ export type SortTransformer = (value: string) => string;
108
/**
119
* Customize the way this field is sorted upon.
1210
*/
13-
export const DbSort = (transformer: SortTransformer) =>
14-
Reflect.metadata(DbSortSymbol, transformer);
15-
16-
export const getDbSortTransformer = (
17-
type: AbstractClassType<unknown>,
18-
property: string,
19-
): SortTransformer | undefined =>
20-
Reflect.getMetadata(DbSortSymbol, type.prototype, property);
11+
export const DbSort = createMetadataDecorator({
12+
types: ['property'],
13+
setter: (transformer: SortTransformer) => transformer,
14+
});

src/core/database/query/sorting.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,7 @@ import { node, Query, relation } from 'cypher-query-builder';
33
import { identity } from 'rxjs';
44
import { LiteralUnion } from 'type-fest';
55
import { MadeEnum, Order, Resource, ResourceShape } from '~/common';
6-
import {
7-
getDbSortTransformer,
8-
SortTransformer,
9-
} from '~/common/db-sort.decorator';
6+
import { DbSort, SortTransformer } from '~/common/db-sort.decorator';
107
import { apoc } from './cypher-functions';
118
import { ACTIVE } from './matching';
129

@@ -128,7 +125,7 @@ export const defineSorters = <TResourceStatic extends ResourceShape<any>>(
128125
matchers: SortMatchers<SortFieldOf<TResourceStatic>>,
129126
): DefinedSorters<SortFieldOf<TResourceStatic>> => {
130127
const fn = ({ sort, order }: Sort<SortFieldOf<TResourceStatic>>) => {
131-
const transformer = getDbSortTransformer(resource, sort) ?? identity;
128+
const transformer = DbSort.get(resource, sort as string) ?? identity;
132129
const common = { sort, order, transformer };
133130

134131
const exactCustom = matchers[sort];

0 commit comments

Comments
 (0)