Допустим, у меня есть таблица 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. Как я могу передать сообщение об исключении обратно клиенту?