Adrinalin4ik / Nestjs-Graphql-Tools

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

Closed Adrinalin4ik closed 1 year ago

Adrinalin4ik commented 1 year ago

This doesn't change API.

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()
  }

After

  @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)
      .orderBy(sorting)

    return qb.getMany()
  }