35d72fccbe
Feature/remove mocks * remove mocks * cleanup db migrations
63 lines
1.8 KiB
PL/PgSQL
63 lines
1.8 KiB
PL/PgSQL
-- Migration 003: Collectors (Simplified)
|
|
-- Collector versioning and configuration
|
|
-- NOTE: collectorMinTextVersions and collectorQueries removed (no longer used)
|
|
|
|
CREATE TABLE collectorVersions (
|
|
clientId varchar(255) NOT NULL,
|
|
id int NOT NULL,
|
|
addedAt timestamp NOT NULL DEFAULT current_timestamp,
|
|
FOREIGN KEY (clientId) REFERENCES clients(clientId),
|
|
PRIMARY KEY (id, clientId)
|
|
);
|
|
|
|
CREATE OR REPLACE FUNCTION setCollectorVersionNumber()
|
|
RETURNS TRIGGER AS $$
|
|
BEGIN
|
|
SELECT COALESCE(MAX(id), 0) + 1
|
|
INTO NEW.id
|
|
FROM collectorVersions
|
|
WHERE clientId = NEW.clientId;
|
|
|
|
RETURN NEW;
|
|
END;
|
|
$$ LANGUAGE plpgsql;
|
|
|
|
CREATE TRIGGER setCollectorVersionNumberTrigger
|
|
BEFORE INSERT ON collectorVersions
|
|
FOR EACH ROW
|
|
EXECUTE FUNCTION setCollectorVersionNumber();
|
|
|
|
CREATE TABLE collectorActiveVersions (
|
|
id uuid PRIMARY KEY DEFAULT uuid_generate_v7(),
|
|
clientId varchar(255) NOT NULL,
|
|
versionId int NOT NULL,
|
|
FOREIGN KEY (clientId, versionId) REFERENCES collectorVersions(clientId, id)
|
|
);
|
|
|
|
CREATE TABLE collectorMinCleanVersions (
|
|
id uuid PRIMARY KEY DEFAULT uuid_generate_v7(),
|
|
clientId varchar(255) NOT NULL,
|
|
versionId bigint NOT NULL,
|
|
addedVersion int NOT NULL,
|
|
removedVersion int,
|
|
FOREIGN KEY (clientId, addedVersion) REFERENCES collectorVersions(clientId, id),
|
|
FOREIGN KEY (clientId, removedVersion) REFERENCES collectorVersions(clientId, id),
|
|
FOREIGN KEY (clientId) REFERENCES clients(clientId)
|
|
);
|
|
|
|
CREATE OR REPLACE FUNCTION removeMinCleanVersion()
|
|
RETURNS TRIGGER AS $$
|
|
BEGIN
|
|
UPDATE collectorMinCleanVersions
|
|
SET removedVersion = NEW.addedVersion
|
|
WHERE clientId = NEW.clientId AND removedVersion IS NULL;
|
|
|
|
RETURN NEW;
|
|
END;
|
|
$$ LANGUAGE plpgsql;
|
|
|
|
CREATE TRIGGER removeMinCleanVersionTrigger
|
|
BEFORE INSERT ON collectorMinCleanVersions
|
|
FOR EACH ROW
|
|
EXECUTE FUNCTION removeMinCleanVersion();
|