mirror of
https://github.com/YuzuZensai/Minikura.git
synced 2026-03-30 14:25:37 +00:00
✨ feat: initial prototype
This commit is contained in:
76
scripts/setup-db-notifications.sql
Normal file
76
scripts/setup-db-notifications.sql
Normal file
@@ -0,0 +1,76 @@
|
||||
-- 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();
|
||||
Reference in New Issue
Block a user