Перейти к содержанию

set_user_lang

Сигнатура: set_user_lang("p_tg_user_id" bigint, "p_lang" "text") RETURNS "jsonb"
Язык: sql
Security: DEFINER

Тело функции

declare
  v_user_id uuid;
  v_lang text := lower(coalesce(p_lang,'ru'));
begin
  if v_lang not in ('ru','en') then
    v_lang := 'ru';
  end if;

  select id into v_user_id
  from public.users
  where tg_user_id = p_tg_user_id::bigint
  limit 1;

  if v_user_id is null then
    insert into public.users (tg_user_id, lang)
    values (p_tg_user_id::bigint, v_lang)
    returning id into v_user_id;
  else
    update public.users
    set lang = v_lang
    where id = v_user_id;
  end if;

  return jsonb_build_object('ok', true, 'user_id', v_user_id, 'lang', v_lang);
end;