fix: cast compliance_pct to numeric for PostgreSQL ROUND()
All checks were successful
CI Pipeline / Rust Format Check (push) Successful in 5s
CI Pipeline / Clippy Lints (push) Successful in 56s
CI Pipeline / Rust Unit Tests (push) Successful in 1m16s
CI Pipeline / Security Audit (push) Successful in 4s
CI Pipeline / Frontend Lint & Type Check (push) Successful in 15s
CI Pipeline / Build .deb & Release (push) Has been skipped
All checks were successful
CI Pipeline / Rust Format Check (push) Successful in 5s
CI Pipeline / Clippy Lints (push) Successful in 56s
CI Pipeline / Rust Unit Tests (push) Successful in 1m16s
CI Pipeline / Security Audit (push) Successful in 4s
CI Pipeline / Frontend Lint & Type Check (push) Successful in 15s
CI Pipeline / Build .deb & Release (push) Has been skipped
This commit is contained in:
@ -30,7 +30,7 @@ SELECT
|
|||||||
COALESCE(jsonb_array_length(pd.installed_packages), 0) AS total_packages,
|
COALESCE(jsonb_array_length(pd.installed_packages), 0) AS total_packages,
|
||||||
COALESCE(pd.patch_count, 0) AS pending_patches,
|
COALESCE(pd.patch_count, 0) AS pending_patches,
|
||||||
CASE WHEN COALESCE(jsonb_array_length(pd.installed_packages), 0) = 0 THEN 100.0
|
CASE WHEN COALESCE(jsonb_array_length(pd.installed_packages), 0) = 0 THEN 100.0
|
||||||
ELSE ROUND((1.0 - pd.patch_count::float / NULLIF(jsonb_array_length(pd.installed_packages), 0)) * 100, 1)
|
ELSE ROUND(CAST((1.0 - pd.patch_count::float / NULLIF(jsonb_array_length(pd.installed_packages), 0)) * 100 AS numeric), 1)
|
||||||
END AS compliance_pct,
|
END AS compliance_pct,
|
||||||
COALESCE(string_agg(DISTINCT g.name, ', '), '') AS group_names
|
COALESCE(string_agg(DISTINCT g.name, ', '), '') AS group_names
|
||||||
FROM hosts h
|
FROM hosts h
|
||||||
@ -40,7 +40,7 @@ LEFT JOIN groups g ON g.id = hg.group_id
|
|||||||
WHERE h.id IN (
|
WHERE h.id IN (
|
||||||
SELECT host_id FROM host_groups WHERE group_id = $1
|
SELECT host_id FROM host_groups WHERE group_id = $1
|
||||||
)
|
)
|
||||||
GROUP BY h.id, pd.installed_packages, pd.patch_count
|
GROUP BY h.id, h.health_status, pd.installed_packages, pd.patch_count
|
||||||
ORDER BY compliance_pct ASC
|
ORDER BY compliance_pct ASC
|
||||||
",
|
",
|
||||||
)
|
)
|
||||||
@ -60,14 +60,14 @@ SELECT
|
|||||||
COALESCE(jsonb_array_length(pd.installed_packages), 0) AS total_packages,
|
COALESCE(jsonb_array_length(pd.installed_packages), 0) AS total_packages,
|
||||||
COALESCE(pd.patch_count, 0) AS pending_patches,
|
COALESCE(pd.patch_count, 0) AS pending_patches,
|
||||||
CASE WHEN COALESCE(jsonb_array_length(pd.installed_packages), 0) = 0 THEN 100.0
|
CASE WHEN COALESCE(jsonb_array_length(pd.installed_packages), 0) = 0 THEN 100.0
|
||||||
ELSE ROUND((1.0 - pd.patch_count::float / NULLIF(jsonb_array_length(pd.installed_packages), 0)) * 100, 1)
|
ELSE ROUND(CAST((1.0 - pd.patch_count::float / NULLIF(jsonb_array_length(pd.installed_packages), 0)) * 100 AS numeric), 1)
|
||||||
END AS compliance_pct,
|
END AS compliance_pct,
|
||||||
COALESCE(string_agg(DISTINCT g.name, ', '), '') AS group_names
|
COALESCE(string_agg(DISTINCT g.name, ', '), '') AS group_names
|
||||||
FROM hosts h
|
FROM hosts h
|
||||||
LEFT JOIN host_patch_data pd ON pd.host_id = h.id
|
LEFT JOIN host_patch_data pd ON pd.host_id = h.id
|
||||||
LEFT JOIN host_groups hg ON hg.host_id = h.id
|
LEFT JOIN host_groups hg ON hg.host_id = h.id
|
||||||
LEFT JOIN groups g ON g.id = hg.group_id
|
LEFT JOIN groups g ON g.id = hg.group_id
|
||||||
GROUP BY h.id, pd.installed_packages, pd.patch_count
|
GROUP BY h.id, h.health_status, pd.installed_packages, pd.patch_count
|
||||||
ORDER BY compliance_pct ASC
|
ORDER BY compliance_pct ASC
|
||||||
",
|
",
|
||||||
)
|
)
|
||||||
|
|||||||
@ -253,12 +253,12 @@ SELECT h.display_name, h.fqdn,
|
|||||||
COALESCE(jsonb_array_length(pd.installed_packages),0) AS total_packages,
|
COALESCE(jsonb_array_length(pd.installed_packages),0) AS total_packages,
|
||||||
COALESCE(pd.patch_count,0) AS pending_patches,
|
COALESCE(pd.patch_count,0) AS pending_patches,
|
||||||
CASE WHEN COALESCE(jsonb_array_length(pd.installed_packages),0)=0 THEN 100.0
|
CASE WHEN COALESCE(jsonb_array_length(pd.installed_packages),0)=0 THEN 100.0
|
||||||
ELSE ROUND((1.0-pd.patch_count::float/NULLIF(jsonb_array_length(pd.installed_packages),0))*100,1)
|
ELSE ROUND(CAST((1.0-pd.patch_count::float/NULLIF(jsonb_array_length(pd.installed_packages),0))*100 AS numeric),1)
|
||||||
END AS compliance_pct,
|
END AS compliance_pct,
|
||||||
h.health_status::text AS health_status
|
h.health_status::text AS health_status
|
||||||
FROM hosts h LEFT JOIN host_patch_data pd ON pd.host_id=h.id
|
FROM hosts h LEFT JOIN host_patch_data pd ON pd.host_id=h.id
|
||||||
WHERE h.id IN (SELECT host_id FROM host_groups WHERE group_id=$1)
|
WHERE h.id IN (SELECT host_id FROM host_groups WHERE group_id=$1)
|
||||||
GROUP BY h.id, pd.installed_packages, pd.patch_count
|
GROUP BY h.id, h.health_status, pd.installed_packages, pd.patch_count
|
||||||
ORDER BY compliance_pct ASC",
|
ORDER BY compliance_pct ASC",
|
||||||
)
|
)
|
||||||
.bind(gid)
|
.bind(gid)
|
||||||
@ -272,11 +272,11 @@ SELECT h.display_name, h.fqdn,
|
|||||||
COALESCE(jsonb_array_length(pd.installed_packages),0) AS total_packages,
|
COALESCE(jsonb_array_length(pd.installed_packages),0) AS total_packages,
|
||||||
COALESCE(pd.patch_count,0) AS pending_patches,
|
COALESCE(pd.patch_count,0) AS pending_patches,
|
||||||
CASE WHEN COALESCE(jsonb_array_length(pd.installed_packages),0)=0 THEN 100.0
|
CASE WHEN COALESCE(jsonb_array_length(pd.installed_packages),0)=0 THEN 100.0
|
||||||
ELSE ROUND((1.0-pd.patch_count::float/NULLIF(jsonb_array_length(pd.installed_packages),0))*100,1)
|
ELSE ROUND(CAST((1.0-pd.patch_count::float/NULLIF(jsonb_array_length(pd.installed_packages),0))*100 AS numeric),1)
|
||||||
END AS compliance_pct,
|
END AS compliance_pct,
|
||||||
h.health_status::text AS health_status
|
h.health_status::text AS health_status
|
||||||
FROM hosts h LEFT JOIN host_patch_data pd ON pd.host_id=h.id
|
FROM hosts h LEFT JOIN host_patch_data pd ON pd.host_id=h.id
|
||||||
GROUP BY h.id, pd.installed_packages, pd.patch_count
|
GROUP BY h.id, h.health_status, pd.installed_packages, pd.patch_count
|
||||||
ORDER BY compliance_pct ASC",
|
ORDER BY compliance_pct ASC",
|
||||||
)
|
)
|
||||||
.fetch_all(pool)
|
.fetch_all(pool)
|
||||||
|
|||||||
Reference in New Issue
Block a user