feat: initial prototype

This commit is contained in:
2026-02-13 15:52:13 +07:00
parent 134351b326
commit e8dbefde43
140 changed files with 12390 additions and 1369 deletions

View 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();