Как передать сообщение об исключении процедуры postgres на ответ о мутации hasura? - PullRequest
0 голосов
/ 01 августа 2020

Допустим, у меня есть таблица items в моем экземпляре hasura, в которую я могу добавлять данные с помощью автоматического c hasura api. Скажем, у меня есть мутация insert_items_one. Кроме того, предположим, что вставка элементов может завершиться ошибкой при определенных условиях. Для этого предположим, что у меня есть такой триггер:

CREATE FUNCTION check_item_insertion() RETURNS trigger AS $emp_stamp$
  BEGIN
    IF my_condition_on_new_item_insertion THEN
      RAISE EXCEPTION 'My clear explanation on what happened';
    END IF;
    RETURN NEW;
  END;
$emp_stamp$ LANGUAGE plpgsql;
CREATE TRIGGER check_item_insertion_trigger BEFORE INSERT OR UPDATE ON items FOR EACH ROW EXECUTE PROCEDURE check_item_insertion();

Теперь, если я попытаюсь вставить новый элемент с insert_items_one именно в том случае, когда my_condition_on_new_item_insertion истинно, тогда hasura ответит:

{'extensions': {'path': '$.selectionSet.insert_items_one.args.object', 'code': 'unexpected'}, 'message': 'database query error'}

Это довольно обманчиво, потому что мое сообщение об исключении очень четкое и предоставляет полезную информацию клиенту api. Как я могу передать сообщение об исключении обратно клиенту?

...