2018-03-10 10:15:56 +01:00
|
|
|
class UpdatePoolCountTriggers < ActiveRecord::Migration[5.1]
|
2011-01-16 20:38:15 +00:00
|
|
|
def self.up
|
|
|
|
execute <<-EOS
|
|
|
|
CREATE OR REPLACE FUNCTION pools_posts_delete_trg() RETURNS "trigger" AS $$
|
|
|
|
BEGIN
|
|
|
|
IF (OLD.active) THEN
|
|
|
|
UPDATE pools SET post_count = post_count - 1 WHERE id = OLD.pool_id;
|
|
|
|
END IF;
|
|
|
|
RETURN OLD;
|
|
|
|
END;
|
|
|
|
$$ LANGUAGE plpgsql;
|
|
|
|
EOS
|
|
|
|
|
|
|
|
execute <<-EOS
|
|
|
|
CREATE OR REPLACE FUNCTION pools_posts_insert_trg() RETURNS "trigger" AS $$
|
|
|
|
BEGIN
|
|
|
|
IF (NEW.active) THEN
|
|
|
|
UPDATE pools SET post_count = post_count + 1 WHERE id = NEW.pool_id;
|
|
|
|
END IF;
|
|
|
|
RETURN NEW;
|
|
|
|
END;
|
|
|
|
$$ LANGUAGE plpgsql;
|
|
|
|
EOS
|
|
|
|
|
|
|
|
execute <<-EOS
|
|
|
|
CREATE OR REPLACE FUNCTION pools_posts_update_trg() RETURNS "trigger" AS $$
|
|
|
|
BEGIN
|
|
|
|
IF (OLD.active <> NEW.active) THEN
|
|
|
|
IF (NEW.active) THEN
|
|
|
|
UPDATE pools SET post_count = post_count + 1 WHERE id = NEW.pool_id;
|
|
|
|
ELSE
|
|
|
|
UPDATE pools SET post_count = post_count - 1 WHERE id = NEW.pool_id;
|
|
|
|
END IF;
|
|
|
|
END IF;
|
|
|
|
RETURN NEW;
|
|
|
|
END;
|
|
|
|
$$ LANGUAGE plpgsql;
|
|
|
|
EOS
|
|
|
|
|
|
|
|
execute <<-EOS
|
|
|
|
CREATE TRIGGER pools_posts_update_trg
|
|
|
|
BEFORE UPDATE ON pools_posts
|
|
|
|
FOR EACH ROW EXECUTE PROCEDURE pools_posts_update_trg();
|
|
|
|
EOS
|
|
|
|
end
|
|
|
|
|
|
|
|
def self.down
|
|
|
|
raise IrreversibleMigration
|
|
|
|
end
|
|
|
|
end
|