GraphQL-HotChocolate(c#)| Hotchocolate OOTB-фильтр, но разные модели баз данных и доменов

#c# #graphql #hotchocolate

Вопрос:

Я пытался использовать атрибут UseFilter hotchocolate, как показано ниже:

 [HotChocolate.Data.UseFiltering]
public IMongoQueryable<DB> GetTestValues([Service] IMongoDatabase mongoDatabase)
{
   return mongoDatabase.GetCollection<DB>("test_coll").AsQueryable();
}
 

Ниже приведена сущность mongodb

 public class DB
{
  [BsonId]
  public int Id { get; set; }
  [BsonElement("firstName")]
  public string FirstName { get; set; }
  [BsonElement("lastName")]
  public string LastName { get; set; }
}
 

Фильтр из FE будет применен самим HC ниже запроса FE также предоставляется.Мы можем вернуть данные клиенту до сих пор так хорошо. Но чего я хочу добиться, так это того, что мне нужна отдельная модель для клиента и mongodb. Ниже приведен dto(для отправки клиенту)

 public class Dto
{
        public int PersonId { get; set; }
        public string Name { get; set; }
        public string firstName { get; set; }
        public string lastName { get; set; }
}
 

Если это возможно с помощью HC, я мог бы добавить некоторый слой отображения(автоматический) для его достижения?
Приведенный выше пример немного надуман, но, надеюсь, этого достаточно, чтобы понять проблему.

Запрос FE выглядит так

 query GetTestValues{
    testValues(where:{firstName: {contains: "Tar"}}
            ){
        personId
        name
    }
}
 

Комментарии:

1. docs.automapper.org/en/latest/Queryable-Extensions.html