📨
SlackClone
  • Introduction
  • Server
    • Server Introduction
    • Getting Started
      • Install .NET Core 3
      • Create a Project
      • Install Dependencies - Mongo
      • Install Dependencies - PostgreSQL
        • PostgreSQL Install - Windows
        • Connect to PostgreSQL DB - pgAdmin
    • API
      • Setup HotChocolate Server
      • Add Playground
      • Data Model - PostgreSQL
        • PostgreSQL Entities
        • Database Context
        • Queries
          • Filtering
          • Sorting
        • Mutations
        • Subscriptions
      • Data Model - Mongo
        • Mongo Entities
        • Queries
  • Authorization
  • Authentication
  • Error Handling
  • Testing
  • Backend Summary
  • Client
    • Client Introduction
    • Getting Started
      • Install Dependencies
      • Create Project
    • App
      • Routing
      • Queries
        • Pagination
        • Sorting
        • Filtering
      • Mutations
      • Subscriptions
      • Authentication
    • Frontend Summary
Powered by GitBook
On this page
  1. Server
  2. API
  3. Data Model - PostgreSQL
  4. Queries

Sorting

PreviousFilteringNextMutations

Last updated 5 years ago

Note: Be sure to install the HotChocolate.Types.SortingNuGet package.

Next we will add sorting to the users query, so we can sort on fields provided in the entity.

This is simply done by adding .UseSorting() on the field we want to sort, like seen below. You can chain sorting and filtering.

./GraphQL/QueryType.cs
using HotChocolate.Types;

namespace SlackClone.GraphQL
{
    public class QueryType : ObjectType<Query>
    {
        protected override void Configure(IObjectTypeDescriptor<Query> descriptor)
        {
            descriptor.Field(t => t.GetUsers())
                .UseFiltering()
                .UseSorting();
            descriptor.Field(t => t.GetUserStatuses());
        }
    }
}

Now we can run the server again and test what we have added. Reading the schema documentation you can see the sorting capabilities added to users query.

Lets test the sorting with the following query in the playground.

{
  users(order_by: { email: ASC }) {
    id
    firstName
    lastName
    fullName
    email
    username
  }
}

If everything went well you should see the following response.

{
  "data": {
    "users": [
      {
        "id": "eabf53a0-3101-4599-90fa-9db68620af81",
        "firstName": "Barack",
        "lastName": "Obama",
        "fullName": "Barack Obama",
        "email": "bobama@us.gov",
        "username": "bobama"
      },
      {
        "id": "1964199a-e8be-440a-a178-8998d114fd12",
        "firstName": "Donald",
        "lastName": "Trump",
        "fullName": "Donald Trump",
        "email": "dtrump@us.gov",
        "username": "dtrump"
      },
      {
        "id": "f58e8993-430d-4fd7-8281-4fab3fc3a086",
        "firstName": "George",
        "lastName": "Bush",
        "fullName": "George Bush",
        "email": "gbush@us.gov",
        "username": "gbush"
      }
    ]
  }
}