chore: test retroactive migration fix (#891)
This commit is contained in:
parent
d4b77c3c27
commit
72c2227df1
|
|
@ -18,7 +18,7 @@ CREATE OR REPLACE FUNCTION update_updated_at_column_func() RETURNS TRIGGER AS $$
|
||||||
RETURN NEW;
|
RETURN NEW;
|
||||||
END;
|
END;
|
||||||
$$ language 'plpgsql';
|
$$ language 'plpgsql';
|
||||||
CREATE TRIGGER update_af_user_modtime BEFORE
|
CREATE OR REPLACE TRIGGER update_af_user_modtime BEFORE
|
||||||
UPDATE ON af_user FOR EACH ROW EXECUTE PROCEDURE update_updated_at_column_func();
|
UPDATE ON af_user FOR EACH ROW EXECUTE PROCEDURE update_updated_at_column_func();
|
||||||
CREATE OR REPLACE FUNCTION prevent_reset_encryption_sign_func() RETURNS TRIGGER AS $$ BEGIN IF OLD.encryption_sign IS NOT NULL
|
CREATE OR REPLACE FUNCTION prevent_reset_encryption_sign_func() RETURNS TRIGGER AS $$ BEGIN IF OLD.encryption_sign IS NOT NULL
|
||||||
AND NEW.encryption_sign IS DISTINCT
|
AND NEW.encryption_sign IS DISTINCT
|
||||||
|
|
@ -27,20 +27,5 @@ END IF;
|
||||||
RETURN NEW;
|
RETURN NEW;
|
||||||
END;
|
END;
|
||||||
$$ LANGUAGE plpgsql;
|
$$ LANGUAGE plpgsql;
|
||||||
CREATE TRIGGER trigger_prevent_reset_encryption_sign BEFORE
|
CREATE OR REPLACE TRIGGER trigger_prevent_reset_encryption_sign BEFORE
|
||||||
UPDATE ON af_user FOR EACH ROW EXECUTE FUNCTION prevent_reset_encryption_sign_func();
|
UPDATE ON af_user FOR EACH ROW EXECUTE FUNCTION prevent_reset_encryption_sign_func();
|
||||||
|
|
||||||
-- Enable RLS on the af_user table
|
|
||||||
-- Policy for INSERT
|
|
||||||
ALTER TABLE af_user ENABLE ROW LEVEL SECURITY;
|
|
||||||
CREATE POLICY af_user_insert_policy ON public.af_user FOR
|
|
||||||
INSERT TO anon,
|
|
||||||
authenticated WITH CHECK (true);
|
|
||||||
-- Policy for UPDATE
|
|
||||||
CREATE POLICY af_user_update_policy ON public.af_user FOR
|
|
||||||
UPDATE USING (true) WITH CHECK (true);
|
|
||||||
-- Policy for SELECT
|
|
||||||
CREATE POLICY af_user_select_policy ON public.af_user FOR
|
|
||||||
SELECT TO anon,
|
|
||||||
authenticated USING (true);
|
|
||||||
ALTER TABLE af_user FORCE ROW LEVEL SECURITY;
|
|
||||||
|
|
@ -10,12 +10,6 @@ CREATE TABLE IF NOT EXISTS af_workspace (
|
||||||
workspace_name TEXT DEFAULT 'My Workspace'
|
workspace_name TEXT DEFAULT 'My Workspace'
|
||||||
);
|
);
|
||||||
|
|
||||||
-- Enable RLS on the af_workspace table
|
|
||||||
ALTER TABLE af_workspace ENABLE ROW LEVEL SECURITY;
|
|
||||||
CREATE POLICY af_workspace_policy ON af_workspace FOR ALL TO anon,
|
|
||||||
authenticated USING (true);
|
|
||||||
ALTER TABLE af_workspace FORCE ROW LEVEL SECURITY;
|
|
||||||
|
|
||||||
-- af_workspace_member contains all the members associated with a workspace and their roles.
|
-- af_workspace_member contains all the members associated with a workspace and their roles.
|
||||||
CREATE TABLE IF NOT EXISTS af_workspace_member (
|
CREATE TABLE IF NOT EXISTS af_workspace_member (
|
||||||
uid BIGINT NOT NULL,
|
uid BIGINT NOT NULL,
|
||||||
|
|
@ -26,15 +20,7 @@ CREATE TABLE IF NOT EXISTS af_workspace_member (
|
||||||
PRIMARY KEY (uid, workspace_id)
|
PRIMARY KEY (uid, workspace_id)
|
||||||
);
|
);
|
||||||
|
|
||||||
-- Enable RLS on the af_workspace_member table
|
|
||||||
ALTER TABLE af_workspace_member ENABLE ROW LEVEL SECURITY;
|
|
||||||
CREATE POLICY af_workspace_member_policy ON af_workspace_member FOR ALL TO anon,
|
|
||||||
authenticated USING (true);
|
|
||||||
ALTER TABLE af_workspace_member FORCE ROW LEVEL SECURITY;
|
|
||||||
|
|
||||||
-- Listener for af_workspace_member table
|
-- Listener for af_workspace_member table
|
||||||
DROP TRIGGER IF EXISTS af_workspace_member_change_trigger ON af_workspace_member;
|
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION notify_af_workspace_member_change() RETURNS trigger AS $$
|
CREATE OR REPLACE FUNCTION notify_af_workspace_member_change() RETURNS trigger AS $$
|
||||||
DECLARE
|
DECLARE
|
||||||
payload TEXT;
|
payload TEXT;
|
||||||
|
|
@ -55,12 +41,12 @@ BEGIN
|
||||||
END;
|
END;
|
||||||
$$ LANGUAGE plpgsql;
|
$$ LANGUAGE plpgsql;
|
||||||
|
|
||||||
CREATE TRIGGER af_workspace_member_change_trigger
|
CREATE OR REPLACE TRIGGER af_workspace_member_change_trigger
|
||||||
AFTER INSERT OR UPDATE OR DELETE ON af_workspace_member
|
AFTER INSERT OR UPDATE OR DELETE ON af_workspace_member
|
||||||
FOR EACH ROW EXECUTE FUNCTION notify_af_workspace_member_change();
|
FOR EACH ROW EXECUTE FUNCTION notify_af_workspace_member_change();
|
||||||
|
|
||||||
-- Index
|
-- Index
|
||||||
CREATE UNIQUE INDEX idx_af_workspace_member ON af_workspace_member (uid, workspace_id, role_id);
|
CREATE UNIQUE INDEX IF NOT EXISTS idx_af_workspace_member ON af_workspace_member (uid, workspace_id, role_id);
|
||||||
-- Insert a workspace member if the user with given uid is the owner of the workspace
|
-- Insert a workspace member if the user with given uid is the owner of the workspace
|
||||||
CREATE OR REPLACE FUNCTION insert_af_workspace_member_if_owner(
|
CREATE OR REPLACE FUNCTION insert_af_workspace_member_if_owner(
|
||||||
p_uid BIGINT,
|
p_uid BIGINT,
|
||||||
|
|
@ -11,20 +11,20 @@ CREATE TABLE IF NOT EXISTS af_collab (
|
||||||
workspace_id UUID NOT NULL REFERENCES af_workspace(workspace_id) ON DELETE CASCADE,
|
workspace_id UUID NOT NULL REFERENCES af_workspace(workspace_id) ON DELETE CASCADE,
|
||||||
PRIMARY KEY (oid, partition_key)
|
PRIMARY KEY (oid, partition_key)
|
||||||
) PARTITION BY LIST (partition_key);
|
) PARTITION BY LIST (partition_key);
|
||||||
CREATE TABLE af_collab_document PARTITION OF af_collab FOR
|
CREATE TABLE IF NOT EXISTS af_collab_document PARTITION OF af_collab FOR
|
||||||
VALUES IN (0);
|
VALUES IN (0);
|
||||||
CREATE TABLE af_collab_database PARTITION OF af_collab FOR
|
CREATE TABLE IF NOT EXISTS af_collab_database PARTITION OF af_collab FOR
|
||||||
VALUES IN (1);
|
VALUES IN (1);
|
||||||
CREATE TABLE af_collab_w_database PARTITION OF af_collab FOR
|
CREATE TABLE IF NOT EXISTS af_collab_w_database PARTITION OF af_collab FOR
|
||||||
VALUES IN (2);
|
VALUES IN (2);
|
||||||
CREATE TABLE af_collab_folder PARTITION OF af_collab FOR
|
CREATE TABLE IF NOT EXISTS af_collab_folder PARTITION OF af_collab FOR
|
||||||
VALUES IN (3);
|
VALUES IN (3);
|
||||||
CREATE TABLE af_collab_database_row PARTITION OF af_collab FOR
|
CREATE TABLE IF NOT EXISTS af_collab_database_row PARTITION OF af_collab FOR
|
||||||
VALUES IN (4);
|
VALUES IN (4);
|
||||||
CREATE TABLE af_collab_user_awareness PARTITION OF af_collab FOR
|
CREATE TABLE IF NOT EXISTS af_collab_user_awareness PARTITION OF af_collab FOR
|
||||||
VALUES IN (5);
|
VALUES IN (5);
|
||||||
|
|
||||||
CREATE TABLE af_collab_member (
|
CREATE TABLE IF NOT EXISTS af_collab_member (
|
||||||
uid BIGINT REFERENCES af_user(uid) ON DELETE CASCADE,
|
uid BIGINT REFERENCES af_user(uid) ON DELETE CASCADE,
|
||||||
oid TEXT NOT NULL,
|
oid TEXT NOT NULL,
|
||||||
permission_id INTEGER REFERENCES af_permissions(id) NOT NULL,
|
permission_id INTEGER REFERENCES af_permissions(id) NOT NULL,
|
||||||
|
|
@ -32,8 +32,6 @@ CREATE TABLE af_collab_member (
|
||||||
);
|
);
|
||||||
|
|
||||||
-- Listener
|
-- Listener
|
||||||
DROP TRIGGER IF EXISTS af_collab_member_change_trigger ON af_collab_member;
|
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION notify_af_collab_member_change() RETURNS trigger AS $$
|
CREATE OR REPLACE FUNCTION notify_af_collab_member_change() RETURNS trigger AS $$
|
||||||
DECLARE
|
DECLARE
|
||||||
payload TEXT;
|
payload TEXT;
|
||||||
|
|
@ -54,7 +52,7 @@ END IF;
|
||||||
END;
|
END;
|
||||||
$$ LANGUAGE plpgsql;
|
$$ LANGUAGE plpgsql;
|
||||||
|
|
||||||
CREATE TRIGGER af_collab_member_change_trigger
|
CREATE OR REPLACE TRIGGER af_collab_member_change_trigger
|
||||||
AFTER INSERT OR UPDATE OR DELETE ON af_collab_member
|
AFTER INSERT OR UPDATE OR DELETE ON af_collab_member
|
||||||
FOR EACH ROW EXECUTE FUNCTION notify_af_collab_member_change();
|
FOR EACH ROW EXECUTE FUNCTION notify_af_collab_member_change();
|
||||||
|
|
||||||
|
|
@ -69,9 +67,4 @@ CREATE TABLE IF NOT EXISTS af_collab_snapshot (
|
||||||
workspace_id UUID NOT NULL REFERENCES af_workspace(workspace_id) ON DELETE CASCADE,
|
workspace_id UUID NOT NULL REFERENCES af_workspace(workspace_id) ON DELETE CASCADE,
|
||||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP NOT NULL
|
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP NOT NULL
|
||||||
);
|
);
|
||||||
CREATE INDEX idx_af_collab_snapshot_oid ON af_collab_snapshot(oid);
|
CREATE INDEX IF NOT EXISTS idx_af_collab_snapshot_oid ON af_collab_snapshot(oid);
|
||||||
-- Enable RLS on the af_collab table
|
|
||||||
ALTER TABLE af_collab ENABLE ROW LEVEL SECURITY;
|
|
||||||
CREATE POLICY af_collab_policy ON af_collab FOR ALL TO anon,
|
|
||||||
authenticated USING (true);
|
|
||||||
ALTER TABLE af_collab FORCE ROW LEVEL SECURITY;
|
|
||||||
Loading…
Reference in New Issue