mirror of
https://github.com/YuzuZensai/Minikura.git
synced 2026-03-30 12:25:35 +00:00
77 lines
2.2 KiB
PL/PgSQL
77 lines
2.2 KiB
PL/PgSQL
-- Enable NOTIFY triggers for real-time server updates
|
|
|
|
-- Function to notify when Server table changes
|
|
CREATE OR REPLACE FUNCTION notify_server_change()
|
|
RETURNS TRIGGER AS $$
|
|
BEGIN
|
|
PERFORM pg_notify('server_change', JSON_BUILD_OBJECT(
|
|
'id', NEW.id,
|
|
'action', TG_OP
|
|
)::text);
|
|
RETURN NEW;
|
|
END;
|
|
$$ LANGUAGE plpgsql;
|
|
|
|
-- Function to notify when ReverseProxyServer table changes
|
|
CREATE OR REPLACE FUNCTION notify_reverse_proxy_server_change()
|
|
RETURNS TRIGGER AS $$
|
|
BEGIN
|
|
PERFORM pg_notify('reverse_proxy_server_change', JSON_BUILD_OBJECT(
|
|
'id', NEW.id,
|
|
'action', TG_OP
|
|
)::text);
|
|
RETURN NEW;
|
|
END;
|
|
$$ LANGUAGE plpgsql;
|
|
|
|
-- Drop existing triggers if they exist
|
|
DROP TRIGGER IF EXISTS server_change_trigger ON "Server";
|
|
DROP TRIGGER IF EXISTS reverse_proxy_server_change_trigger ON "ReverseProxyServer";
|
|
|
|
-- Create triggers for Server table (INSERT, UPDATE, DELETE)
|
|
CREATE TRIGGER server_change_trigger
|
|
AFTER INSERT OR UPDATE OR DELETE ON "Server"
|
|
FOR EACH ROW
|
|
EXECUTE FUNCTION notify_server_change();
|
|
|
|
-- Create triggers for ReverseProxyServer table (INSERT, UPDATE, DELETE)
|
|
CREATE TRIGGER reverse_proxy_server_change_trigger
|
|
AFTER INSERT OR UPDATE OR DELETE ON "ReverseProxyServer"
|
|
FOR EACH ROW
|
|
EXECUTE FUNCTION notify_reverse_proxy_server_change();
|
|
|
|
-- Function to notify when CustomEnvironmentVariable table changes (for servers and reverse proxies)
|
|
CREATE OR REPLACE FUNCTION notify_env_var_change()
|
|
RETURNS TRIGGER AS $$
|
|
DECLARE
|
|
server_id TEXT;
|
|
proxy_id TEXT;
|
|
BEGIN
|
|
server_id := NEW.server_id;
|
|
proxy_id := NEW.reverse_proxy_id;
|
|
|
|
IF server_id IS NOT NULL THEN
|
|
PERFORM pg_notify('server_change', JSON_BUILD_OBJECT(
|
|
'id', server_id,
|
|
'action', 'env_var_change'
|
|
)::text);
|
|
ELSIF proxy_id IS NOT NULL THEN
|
|
PERFORM pg_notify('reverse_proxy_server_change', JSON_BUILD_OBJECT(
|
|
'id', proxy_id,
|
|
'action', 'env_var_change'
|
|
)::text);
|
|
END IF;
|
|
|
|
RETURN NEW;
|
|
END;
|
|
$$ LANGUAGE plpgsql;
|
|
|
|
-- Drop existing env var trigger if it exists
|
|
DROP TRIGGER IF EXISTS env_var_change_trigger ON "CustomEnvironmentVariable";
|
|
|
|
-- Create trigger for CustomEnvironmentVariable table
|
|
CREATE TRIGGER env_var_change_trigger
|
|
AFTER INSERT OR UPDATE OR DELETE ON "CustomEnvironmentVariable"
|
|
FOR EACH ROW
|
|
EXECUTE FUNCTION notify_env_var_change();
|