2024-08-08 16:30:01 +02:00
|
|
|
-- migrate:up
|
2024-08-08 22:29:04 +02:00
|
|
|
CREATE FUNCTION internal.check_user_not_website_owner ()
|
|
|
|
|
RETURNS TRIGGER
|
|
|
|
|
AS $$
|
2024-08-08 16:30:01 +02:00
|
|
|
BEGIN
|
|
|
|
|
IF EXISTS (
|
2024-08-08 22:29:04 +02:00
|
|
|
SELECT
|
|
|
|
|
1
|
|
|
|
|
FROM
|
|
|
|
|
internal.website
|
|
|
|
|
WHERE
|
|
|
|
|
id = NEW.website_id
|
|
|
|
|
AND user_id = NEW.user_id) THEN
|
|
|
|
|
RAISE foreign_key_violation
|
|
|
|
|
USING message = 'User cannot be added as a collaborator to their own website';
|
|
|
|
|
END IF;
|
2024-08-08 16:30:01 +02:00
|
|
|
RETURN NEW;
|
|
|
|
|
END;
|
2024-08-08 22:29:04 +02:00
|
|
|
$$
|
|
|
|
|
LANGUAGE plpgsql
|
|
|
|
|
SECURITY DEFINER;
|
2024-08-08 16:30:01 +02:00
|
|
|
|
|
|
|
|
CREATE CONSTRAINT TRIGGER check_user_not_website_owner
|
2024-08-08 22:29:04 +02:00
|
|
|
AFTER INSERT ON internal.collab
|
|
|
|
|
FOR EACH ROW
|
|
|
|
|
EXECUTE FUNCTION internal.check_user_not_website_owner ();
|
2024-08-08 16:30:01 +02:00
|
|
|
|
|
|
|
|
-- migrate:down
|
|
|
|
|
DROP TRIGGER check_user_not_website_owner ON internal.collab;
|
2024-08-08 22:29:04 +02:00
|
|
|
|
|
|
|
|
DROP FUNCTION internal.check_user_not_website_owner ();
|
|
|
|
|
|