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

get_user_id_and_balance

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

Тело функции

declare
  v_user_id  uuid;
  v_balance  numeric;
begin
  -- 1) ищем пользователя по tg_user_id
  select id
  into v_user_id
  from public.users
  where tg_user_id = p_tg_user_id
  limit 1;

  if v_user_id is null then
    return jsonb_build_object(
      'ok', false,
      'reason', 'user_not_found',
      'tg_user_id', p_tg_user_id
    );
  end if;

  -- 2) читаем баланс кошелька (если кошелька нет — считаем 0)
  select w.balance
  into v_balance
  from public.wallets w
  where w.user_id = v_user_id;

  return jsonb_build_object(
    'ok', true,
    'user_id', v_user_id,
    'tg_user_id', p_tg_user_id,
    'balance', coalesce(v_balance, 0)
  );
end;