62886dbba8
Remove Job * removejob * rmjob * sync * cleanup * precommit * startslow * startslow * startslow * openapi * clean * test * scripts * littlecleanercmds * mermaid
78 lines
2.9 KiB
SQL
78 lines
2.9 KiB
SQL
CREATE VIEW collectorCurrentActiveVersions as
|
|
SELECT DISTINCT
|
|
j.id as clientId,
|
|
coalesce(
|
|
(FIRST_VALUE(v.versionId) OVER (PARTITION BY j.id ORDER BY v.id DESC)),
|
|
0
|
|
)::int as activeVersion
|
|
FROM clients as j
|
|
LEFT JOIN collectorActiveVersions as v on v.clientId = j.id;
|
|
|
|
CREATE VIEW collectorLatestVersions as
|
|
SELECT
|
|
j.id as clientId,
|
|
coalesce(max(v.id), 0)::int as latestVersion
|
|
FROM clients as j
|
|
LEFT JOIN collectorVersions as v on v.clientId = j.id
|
|
GROUP BY j.id;
|
|
|
|
CREATE VIEW currentCollectorMinTextVersions as
|
|
SELECT DISTINCT
|
|
av.clientId,
|
|
coalesce(ctv.versionId, 0) as minTextVersion
|
|
FROM collectorCurrentActiveVersions as av
|
|
LEFT JOIN collectorMinTextVersions AS ctv ON av.clientId = ctv.clientId
|
|
and isInVersion(av.activeVersion, ctv.addedVersion, ctv.removedVersion);
|
|
|
|
CREATE VIEW currentCollectorMinCleanVersions as
|
|
SELECT DISTINCT
|
|
av.clientId,
|
|
coalesce(ctv.versionId, 0) as minCleanVersion
|
|
FROM collectorCurrentActiveVersions as av
|
|
LEFT JOIN collectorMinCleanVersions AS ctv ON av.clientId = ctv.clientId
|
|
and isInVersion(av.activeVersion, ctv.addedVersion, ctv.removedVersion);
|
|
|
|
CREATE VIEW currentCollectorQueries as
|
|
SELECT DISTINCT
|
|
av.clientId,
|
|
q.name,
|
|
q.queryId
|
|
FROM collectorCurrentActiveVersions as av
|
|
LEFT JOIN collectorQueries AS q ON av.clientId = q.clientId
|
|
and isInVersion(av.activeVersion, q.addedVersion, q.removedVersion);
|
|
|
|
CREATE VIEW currentCollectorQueriesJSONAGG as
|
|
SELECT DISTINCT
|
|
clientId,
|
|
jsonb_object_agg(name, queryId) FILTER (WHERE name is not null) AS fields
|
|
FROM currentCollectorQueries
|
|
GROUP BY clientId;
|
|
|
|
CREATE VIEW fullActiveCollectors AS
|
|
SELECT DISTINCT av.clientId,
|
|
ccv.minCleanVersion, ctv.minTextVersion,
|
|
av.activeVersion, lv.latestVersion,
|
|
q.fields
|
|
FROM collectorCurrentActiveVersions as av
|
|
JOIN collectorLatestVersions as lv on lv.clientId = av.clientId
|
|
JOIN currentCollectorMinCleanVersions AS ccv ON av.clientId = ccv.clientId
|
|
JOIN currentCollectorMinTextVersions AS ctv ON av.clientId = ctv.clientId
|
|
JOIN currentCollectorQueriesJSONAGG AS q ON av.clientId = q.clientId;
|
|
|
|
CREATE VIEW collectorQueryDependencyTree AS
|
|
WITH RECURSIVE collectorQueryDependencyTree AS (
|
|
SELECT cq.clientId, cq.queryId, ri.requiredIds
|
|
FROM currentCollectorQueries as cq
|
|
JOIN queryCurrentRequiredIdsAGG as ri on cq.queryId = ri.queryId
|
|
|
|
UNION ALL
|
|
|
|
SELECT acq.clientId, q.queryId, q.requiredIds
|
|
FROM queryCurrentRequiredIdsAGG as q
|
|
JOIN collectorQueryDependencyTree as acq on q.queryId = ANY(acq.requiredIds)
|
|
)
|
|
SELECT DISTINCT ct.clientId, ct.queryId, q.type, av.activeVersion as queryVersion, ct.requiredIds
|
|
FROM collectorQueryDependencyTree as ct
|
|
JOIN queryCurrentActiveVersions as av on ct.queryId = av.queryId
|
|
JOIN queries as q on q.id = ct.queryId;
|