Size: a a a

GraphQL — русскоговорящее сообщество

2019 November 22

DT

Dmitry Tsepelev in GraphQL — русскоговорящее сообщество
при чем тут интерфейсы?
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
При том, что это нарушение SRP и не ложится на ISP
источник

DT

Dmitry Tsepelev in GraphQL — русскоговорящее сообщество
не, ну можно разбить на несколько мутаций
источник

YS

Yuno Sørensen in GraphQL — русскоговорящее сообщество
Dmitry Tsepelev
я бы сделал так:
mutation signIn(email: String, login: String, password: String): User

и любое число параметров, которая либо ставит куку и отдает юзера либо отдает ошибку и все, дальше ходим в query { user { … } }
Я бы сделал Union на input типе и принимал бы либо токен, либо юзернейм с паролем, либо мыло с паролем
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
т.е. метод должен отвечать за одно действие и не может менять логику налету, но при этом интерфейс описывает поведение этого объекта в целом
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
а в языках без интерфейсов приняты подходы с утиной типизацией
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
когда если что-то похоже на Х, то является этим Х
источник

DT

Dmitry Tsepelev in GraphQL — русскоговорящее сообщество
вариант с интерфейсом выше решает твою проблему, не?
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
Нет, я же про ISP говорил
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
interface AuthenticatableByCredentials {}
interface AuthenticatableByToken {}
etc
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
и у них разные методы
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
вместо объекдинения всего возможного в одно большое и тяжёлое
источник

DT

Dmitry Tsepelev in GraphQL — русскоговорящее сообщество
ну три варианта – это не много, и да, можно сделать три похожие мутации
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
Не можно, а лучше.
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
Потому что они могут идти через разные системы
источник

DT

Dmitry Tsepelev in GraphQL — русскоговорящее сообщество
тем более ISP – это про ООП, а в слове graphql такой буквы нет
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
Есть)
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
Я три года назад зафорсил тему с ISP в Gql)))
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
А сейчас уже в спеке возможность интерфейсам имплементировать другие интерфейсы
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
Теперь форсю дженерики и алгебраические типы данных)))))
источник