li7y/migrations/20240711110525_item_class_simplify.up.sql
Simon Bruder 00d7647187
Switch to sqlx
While diesel has a native rust interface, writing more complex queries
is easier when you can just pass a SQL query string.
2024-07-19 00:05:26 +02:00

35 lines
831 B
PL/PgSQL

-- SPDX-FileCopyrightText: 2024 Simon Bruder <simon@sbruder.de>
--
-- SPDX-License-Identifier: AGPL-3.0-or-later
DROP TRIGGER prevent_item_class_recursion ON item_classes;
DROP FUNCTION check_item_class_parent;
ALTER TABLE item_classes
DROP CONSTRAINT parent_only_for_specific;
ALTER TABLE item_classes
DROP type;
DROP TYPE item_class_type;
CREATE FUNCTION check_item_class_recursion_depth()
RETURNS TRIGGER AS $$
BEGIN
IF NEW.parent IS NULL THEN
RETURN NEW;
END IF;
IF (SELECT parent FROM item_classes WHERE id = NEW.parent) IS NULL THEN
RETURN NEW;
END IF;
RAISE EXCEPTION 'Item classes may only be nested one level deep';
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER prevent_item_class_recursion
BEFORE INSERT OR UPDATE ON item_classes
FOR EACH ROW
EXECUTE FUNCTION check_item_class_recursion_depth();