47 lines
1.4 KiB
PL/PgSQL
47 lines
1.4 KiB
PL/PgSQL
|
|
|
|
CREATE TABLE IF NOT EXISTS tenants_s3_credentials (
|
|
id UUID PRIMARY KEY default gen_random_uuid(),
|
|
description text NOT NULL,
|
|
tenant_id text REFERENCES tenants(id) ON DELETE CASCADE,
|
|
access_key text NOT NULL,
|
|
secret_key text NOT NULL,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS tenants_s3_credentials_tenant_id_idx ON tenants_s3_credentials(tenant_id);
|
|
CREATE UNIQUE INDEX IF NOT EXISTS tenants_s3_credentials_access_key_idx ON tenants_s3_credentials(tenant_id, access_key);
|
|
|
|
|
|
CREATE OR REPLACE FUNCTION tenants_s3_credentials_update_notify_trigger ()
|
|
RETURNS TRIGGER
|
|
AS $$
|
|
BEGIN
|
|
PERFORM
|
|
pg_notify('tenants_s3_credentials_update', '"' || NEW.id || ':' || NEW.access_key || '"');
|
|
RETURN NULL;
|
|
END;
|
|
$$
|
|
LANGUAGE plpgsql;
|
|
|
|
CREATE OR REPLACE FUNCTION tenants_s3_credentials_delete_notify_trigger ()
|
|
RETURNS TRIGGER
|
|
AS $$
|
|
BEGIN
|
|
PERFORM
|
|
pg_notify('tenants_s3_credentials_update', '"' || OLD.id || ':' || OLD.access_key || '"');
|
|
RETURN NULL;
|
|
END;
|
|
$$
|
|
LANGUAGE plpgsql;
|
|
|
|
CREATE TRIGGER tenants_s3_credentials_update_notify_trigger
|
|
AFTER UPDATE ON tenants_s3_credentials
|
|
FOR EACH ROW
|
|
EXECUTE PROCEDURE tenants_s3_credentials_update_notify_trigger ();
|
|
|
|
CREATE TRIGGER tenants_s3_credentials_delete_notify_trigger
|
|
AFTER DELETE ON tenants_s3_credentials
|
|
FOR EACH ROW
|
|
EXECUTE PROCEDURE tenants_s3_credentials_delete_notify_trigger ();
|