NestJS Graphql Tools is a flexible solution that provides a bunch of decorators for solving problems like n+1 request, filtering, sorting, pagination, polymorphic relation, graphql field extraction. It is fully based on decorators. To use it you can just add a decorator to your resolver.
GNU General Public License v3.0
80
stars
8
forks
source link
Remove default properties from the filter and sorting decorators. #18
This change is for a better development experience. Default arguments with name field were removed from the schema. Now, in order to determine the index of filter or sorting argument uses metadata.
This change is fixing hasura's remote schema permissions as before it didn't pass validation because of default values with name.
Also this change removes unnecessary checks in the resolver. Before, in order to use order_by you have to check if argument is provided. Now you don't need to do that.
Before it was
@Query(() => [UserObjectType])
@GraphqlFilter()
@GraphqlSorting()
users(
@Filter(() => [UserObjectType, UserFilterInputType], {sqlAlias: 'u'}) filter: Brackets,
@Sorting(() => [UserObjectType, UserSortingInputType], { sqlAlias: 'u' }) sorting: SortArgs<UserObjectType>
) {
const qb = this.userRepository.createQueryBuilder('u')
.leftJoin('task', 't', 't.assignee_id = u.id')
.where(filter);
if (sorting) { // you have to check if the argument was passed
qb.orderBy(sorting)
}
return qb.getMany()
}
This doesn't change API.
Before it was
After