GraphQL и DAO - PullRequest
       43

GraphQL и DAO

0 голосов
/ 01 мая 2019

Скажем, у вас есть объект доступа к данным:

class Person {
   constructor(id) {
   }
   getName(){}
   setName(name){}
   ...
}

И у вас есть служба GraphQL с запросом и мутацией Person:

query {
   person(id: ID!) { name }
}
mutation {
   person(id: ID!, name: String!): Boolean
}

И у вас есть PersistenceFactory, которая обрабатывает сохранение() операции над Person ():

pf.getPerson(id)
...
pf.savePerson(p)

Куда идут запросы GraphQL?

На фабрике персистентности?В этом случае вам нужно создать конструктор Person, который будет принимать результаты запроса.

В Person DAO?Обычно не имеет смысла связывать Person с определенной стратегией персистентности, но с GraphQL в миксе у вас уже есть такое разделение интересов.

А как насчет агрегированных запросов?:

query {
   person(id: ID) {name}
   cow(id: ID) {name}
}

если каждая сущность обрабатывается индивидуально, то этого нельзя сделать без какого-либо объекта, такого как PersonCow, или такого метода, как pf.getEntities({person: personId, cow: cowId})

Вам даже нужен DAO?

...