Files
gree-controller/src/queries/maintenance.rs
T
2026-09-01 22:20:10 +02:00

72 lines
2.5 KiB
Rust

pub const COMPACT_DEVICE_HISTORY: &str = r#"
DELETE FROM readings WHERE id IN (
SELECT id FROM (
SELECT id, ROW_NUMBER() OVER (
PARTITION BY device_id, CAST(unixepoch(timestamp)/?1 AS INTEGER)
ORDER BY timestamp DESC, id DESC
) AS rn
FROM readings WHERE timestamp < ?2 AND timestamp >= ?3
) WHERE rn > 1
)
"#;
pub const COMPACT_ZONE_HISTORY: &str = r#"
DELETE FROM zone_readings WHERE id IN (
SELECT id FROM (
SELECT id, ROW_NUMBER() OVER (
PARTITION BY zone_id, CAST(unixepoch(timestamp)/?1 AS INTEGER)
ORDER BY timestamp DESC, id DESC
) AS rn
FROM zone_readings WHERE timestamp < ?2 AND timestamp >= ?3
) WHERE rn > 1
)
"#;
pub const COMPACT_HA_HISTORY: &str = r#"
DELETE FROM ha_readings WHERE id IN (
SELECT id FROM (
SELECT id, ROW_NUMBER() OVER (
PARTITION BY entity_id, COALESCE(zone_id,''), kind, CAST(unixepoch(timestamp)/?1 AS INTEGER)
ORDER BY timestamp DESC, id DESC
) AS rn
FROM ha_readings WHERE timestamp < ?2 AND timestamp >= ?3
) WHERE rn > 1
)
"#;
pub const CLEAR_CONFIGURATION: &str = r#"
DELETE FROM schedules;
DELETE FROM automations;
DELETE FROM flows;
DELETE FROM climate_groups;
DELETE FROM zones;
DELETE FROM devices;
"#;
pub const HISTORY_COUNTS: &str = r#"
SELECT
(SELECT COUNT(*) FROM readings),
(SELECT COUNT(*) FROM zone_readings),
(SELECT COUNT(*) FROM ha_readings)
"#;
pub const INSERT_EVENT: &str =
"INSERT INTO event_log(timestamp,level,kind,message,metadata) VALUES(?1,?2,?3,?4,?5)";
pub const LIST_EVENTS: &str =
"SELECT id,timestamp,level,kind,message,metadata FROM event_log ORDER BY id DESC LIMIT ?1";
pub const PRUNE_EVENTS: &str = "DELETE FROM event_log WHERE timestamp < ?1";
pub const LIST_API_TOKENS: &str =
"SELECT id,name,token_prefix,created_at FROM api_tokens ORDER BY created_at DESC";
pub const INSERT_API_TOKEN: &str =
"INSERT INTO api_tokens(id,name,token_hash,token_prefix,created_at) VALUES(?1,?2,?3,?4,?5)";
pub const API_TOKEN_EXISTS: &str = "SELECT 1 FROM api_tokens WHERE token_hash=?1 LIMIT 1";
pub const DELETE_API_TOKEN: &str = "DELETE FROM api_tokens WHERE id=?1";
pub const LOAD_RUNTIME_SETTINGS: &str = "SELECT value FROM settings WHERE key='runtime'";
pub const UPSERT_RUNTIME_SETTINGS: &str = r#"
INSERT INTO settings(key,value,updated_at) VALUES('runtime',?1,?2)
ON CONFLICT(key) DO UPDATE SET
value=excluded.value,
updated_at=excluded.updated_at
"#;