Несколько предложений ...
Создайте несколько логик преобразования c, которые сглаживают данные в памяти, т. Е. В Typescript вашего приложения используйте утверждение типа as
. https://www.typescriptlang.org/docs/handbook/interfaces.html.
создать представление в Hasura, которое объединяет столбцы user
и organization_users
. Таким образом, organization_users_view
может быть определен как
select user.id as id, users.email as email, organization_users.role as role
from organization_users
join users
on organization_users.user_id = users.id;
Таким образом, запрос выглядит так ...
export const GET_USERS = gql `
query GetUsers {
organization_users_view {
id
email
role
}
}
`;
, который ближе с меньшим количеством кода, но удваивается убедитесь, что вы сохраняете преимущества кэша Apollo в увлажнении других частей вашего приложения, что в значительной степени зависит от идентификатора и типа ресурса. Это также требует некоторых дополнительных затрат на определение и / или изменение представления каждый раз, когда вам нужно больше столбцов (при необходимости можете использовать users. * И organization_users. *). Преимущество, однако, заключается в том, что это будет хорошо сочетаться с генерацией типов и компонентов ... поэтому вам не нужно определять интерфейс вручную.