Append shared env versioning sql scripts to route as comment
This commit is contained in:
@@ -71,6 +71,66 @@ CREATE TABLE IF NOT EXISTS timer_function_shared_envs (
|
|||||||
);
|
);
|
||||||
|
|
||||||
CREATE INDEX idx_timer_func_shared_env ON timer_function_shared_envs(timer_function_id);
|
CREATE INDEX idx_timer_func_shared_env ON timer_function_shared_envs(timer_function_id);
|
||||||
|
|
||||||
|
CREATE INDEX idx_shared_env_versions ON shared_environment_versions(shared_env_id);
|
||||||
|
|
||||||
|
-- 2. Add version_number column to main table
|
||||||
|
ALTER TABLE shared_environments
|
||||||
|
ADD COLUMN IF NOT EXISTS version_number INT NOT NULL DEFAULT 1;
|
||||||
|
|
||||||
|
-- 3. Create trigger function for automatic versioning
|
||||||
|
CREATE OR REPLACE FUNCTION fn_shared_env_versioning()
|
||||||
|
RETURNS TRIGGER
|
||||||
|
LANGUAGE plpgsql
|
||||||
|
AS $$
|
||||||
|
DECLARE
|
||||||
|
next_version INT;
|
||||||
|
BEGIN
|
||||||
|
IF TG_OP = 'INSERT' THEN
|
||||||
|
-- Create initial version record
|
||||||
|
INSERT INTO shared_environment_versions (shared_env_id, environment, version_number)
|
||||||
|
VALUES (NEW.id, NEW.environment, 1);
|
||||||
|
|
||||||
|
-- Ensure version_number is set explicitly
|
||||||
|
UPDATE shared_environments
|
||||||
|
SET version_number = 1
|
||||||
|
WHERE id = NEW.id;
|
||||||
|
|
||||||
|
RETURN NEW;
|
||||||
|
|
||||||
|
ELSIF TG_OP = 'UPDATE' THEN
|
||||||
|
-- Only create new version if environment JSON changed
|
||||||
|
IF NEW.environment IS DISTINCT FROM OLD.environment THEN
|
||||||
|
-- Get next version number
|
||||||
|
SELECT COALESCE(MAX(version_number), 0) + 1
|
||||||
|
INTO next_version
|
||||||
|
FROM shared_environment_versions
|
||||||
|
WHERE shared_env_id = NEW.id;
|
||||||
|
|
||||||
|
-- Insert new version record
|
||||||
|
INSERT INTO shared_environment_versions (shared_env_id, environment, version_number)
|
||||||
|
VALUES (NEW.id, NEW.environment, next_version);
|
||||||
|
|
||||||
|
-- Update main table version number
|
||||||
|
UPDATE shared_environments
|
||||||
|
SET version_number = next_version
|
||||||
|
WHERE id = NEW.id;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
RETURN NEW;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
RETURN NEW;
|
||||||
|
END;
|
||||||
|
$$;
|
||||||
|
|
||||||
|
-- 4. Create trigger to fire on INSERT or UPDATE
|
||||||
|
CREATE TRIGGER tr_shared_env_versioning
|
||||||
|
AFTER INSERT OR UPDATE
|
||||||
|
ON shared_environments
|
||||||
|
FOR EACH ROW
|
||||||
|
EXECUTE PROCEDURE fn_shared_env_versioning();
|
||||||
|
|
||||||
'''
|
'''
|
||||||
|
|
||||||
shared_env = Blueprint('shared_env', __name__)
|
shared_env = Blueprint('shared_env', __name__)
|
||||||
|
|||||||
Reference in New Issue
Block a user