Как передать заголовок в хасура-сессии?

Я запускаю проект Hasura и использую поле вычислений в Hasura. Как я могу передать и получить заголовок в запросе? Уже существует открытая проблема, но люди также говорят об обходном пути, но у меня это не сработало.

Вот заголовок:x-hasura-preferred-lang: de_de

Вот запрос

      CREATE OR REPLACE FUNCTION public.interest_translation_function(interest_row interest, hasura_session json)
 RETURNS text
 LANGUAGE sql
 STABLE
AS $function$
SELECT
    CASE
        WHEN (hasura_session ->> 'x-hasura-preferred-lang' = 'en_us' AND T.en_us IS NOT NULL) THEN T.en_us
        WHEN (hasura_session ->> 'x-hasura-preferred-lang' = 'de_de' AND T.de_de IS NOT NULL) THEN T.de_de
        ELSE T.source
    END
FROM i18n T
WHERE T.source = interest_row.name;
$function$

Как видите, сейчас я использую hasura_session, который мы получим от jwt, но я хочу передать заголовок без jwt. хотя бы по этому поводу

Я ожидаю получить переведенное значение без передачи токена, когда у той же таблицы есть разрешение.

1 ответ

Я не смог найти никакого решения. Кажется, для этого существует открытый вопрос . В итоге я использую следующий подход.

  1. Вы можете передать код языка в мутации Hasura, не создавая никаких новых действий.
    Вы можете обновить SQL поля вычислений, как показано ниже.
      CREATE OR REPLACE FUNCTION public.interest_translation_function(interest_row interest, lang_code text)
 RETURNS text
 LANGUAGE sql
 STABLE
AS $function$
SELECT
    CASE
        WHEN (lang_code = 'en_us' AND T.en_us IS NOT NULL) THEN T.en_us
        WHEN (lang_code = 'de_de' AND T.de_de IS NOT NULL) THEN T.de_de
        ELSE T.source
    END
FROM i18n T
WHERE T.source = interest_row.name;
$function$ 
  1. Запрос будет выглядеть примерно так.
      query GetInterest {
  interest {
    name
    translated(args: {lang_code: "de_de"})
  }
}
Другие вопросы по тегам