CDB_MapConfig table and triggers script
This commit is contained in:
parent
da5a566ecf
commit
9894fab2b4
57
scripts-available/CDB_MapConfig.sql
Normal file
57
scripts-available/CDB_MapConfig.sql
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
-- Table to save map configs
|
||||||
|
CREATE TABLE IF NOT EXISTS
|
||||||
|
@extschema@.CDB_MapConfig (
|
||||||
|
id char(32) not null primary key,
|
||||||
|
map jsonb not null,
|
||||||
|
used_at timestamp with time zone NOT NULL DEFAULT now()
|
||||||
|
);
|
||||||
|
|
||||||
|
-- trigger function which updates the last day date
|
||||||
|
-- only when the current date is older than 1 day
|
||||||
|
CREATE OR REPLACE FUNCTION @extschema@._CDB_MapConfig_Update_Used_At()
|
||||||
|
RETURNS trigger
|
||||||
|
AS $$
|
||||||
|
BEGIN
|
||||||
|
IF NEW."used_at" < (now() - '1 days'::interval) THEN
|
||||||
|
NEW."used_at" = NOW();
|
||||||
|
RETURN NEW;
|
||||||
|
END IF;
|
||||||
|
END;
|
||||||
|
$$ LANGUAGE plpgsql VOLATILE PARALLEL UNSAFE;
|
||||||
|
|
||||||
|
-- create trigger
|
||||||
|
DROP TRIGGER IF EXISTS update_used_at ON @extschema@.CDB_MapConfig;
|
||||||
|
CREATE TRIGGER update_used_at
|
||||||
|
AFTER SELECT ON @extschema@.CDB_MapConfig
|
||||||
|
FOR EACH ROW EXECUTE PROCEDURE @extschema@._CDB_MapConfig_Update_Used_At();
|
||||||
|
|
||||||
|
|
||||||
|
-- trigger function which removes the latest map config
|
||||||
|
-- if the date is older than 30 days
|
||||||
|
CREATE OR REPLACE FUNCTION @extschema@._CDB_MapConfig_Remove_Latest_One()
|
||||||
|
RETURNS trigger
|
||||||
|
AS $$
|
||||||
|
BEGIN
|
||||||
|
SELECT id
|
||||||
|
FROM @extschema@.CDB_MapConfig
|
||||||
|
WHERE used_at < (now() - '30 days'::interval)
|
||||||
|
ORDER BY used_at ASC
|
||||||
|
LIMIT 1
|
||||||
|
INTO map_id;
|
||||||
|
|
||||||
|
IF map_id IS NOT NULL THEN
|
||||||
|
DELETE FROM @extschema@.CDB_MapConfig
|
||||||
|
WHERE id = map_id;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
END;
|
||||||
|
$$ LANGUAGE plpgsql VOLATILE PARALLEL UNSAFE;
|
||||||
|
|
||||||
|
-- create trigger
|
||||||
|
DROP TRIGGER IF EXISTS remove_latest_one ON @extschema@.CDB_MapConfig;
|
||||||
|
CREATE TRIGGER remove_latest_one
|
||||||
|
BEFORE INSERT ON @extschema@.CDB_MapConfig
|
||||||
|
FOR EACH STATEMENT EXECUTE PROCEDURE @extschema@._CDB_MapConfig_Remove_Latest_One();
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user