pub const COUNT_DEVICES: &str = "SELECT COUNT(*) FROM devices"; pub const UPSERT_DEVICE: &str = r#" INSERT INTO devices(id, mac, name, ip, simulated, payload, updated_at) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7) ON CONFLICT(id) DO UPDATE SET mac=excluded.mac, name=excluded.name, ip=excluded.ip, simulated=excluded.simulated, payload=excluded.payload, updated_at=excluded.updated_at "#; pub const LIST_DEVICES: &str = "SELECT payload FROM devices ORDER BY name COLLATE NOCASE"; pub const GET_DEVICE_BY_ID: &str = "SELECT payload FROM devices WHERE id=?1"; pub const GET_DEVICE_BY_MAC: &str = "SELECT payload FROM devices WHERE lower(mac)=lower(?1)"; pub const DELETE_DEVICE_READINGS: &str = "DELETE FROM readings WHERE device_id=?1"; pub const DELETE_SCHEDULES_BY_DEVICE_ID: &str = "DELETE FROM schedules WHERE zone_id IN (SELECT id FROM zones WHERE json_extract(payload, '$.device_id')=?1)"; pub const DELETE_ZONES_BY_DEVICE_ID: &str = "DELETE FROM zones WHERE json_extract(payload, '$.device_id')=?1"; pub const DELETE_DEVICE: &str = "DELETE FROM devices WHERE id=?1"; pub const UPSERT_ZONE: &str = r#" INSERT INTO zones(id,payload,updated_at) VALUES(?1,?2,?3) ON CONFLICT(id) DO UPDATE SET payload=excluded.payload, updated_at=excluded.updated_at "#; pub const LIST_ZONES: &str = "SELECT payload FROM zones ORDER BY json_extract(payload, '$.name') COLLATE NOCASE"; pub const GET_ZONE: &str = "SELECT payload FROM zones WHERE id=?1"; pub const DELETE_SCHEDULES_BY_ZONE_ID: &str = "DELETE FROM schedules WHERE zone_id=?1"; pub const DELETE_ZONE: &str = "DELETE FROM zones WHERE id=?1"; pub const UPSERT_GROUP: &str = r#" INSERT INTO climate_groups(id,payload,updated_at) VALUES(?1,?2,?3) ON CONFLICT(id) DO UPDATE SET payload=excluded.payload, updated_at=excluded.updated_at "#; pub const LIST_GROUPS: &str = "SELECT payload FROM climate_groups ORDER BY json_extract(payload, '$.name') COLLATE NOCASE"; pub const GET_GROUP: &str = "SELECT payload FROM climate_groups WHERE id=?1"; pub const DELETE_GROUP: &str = "DELETE FROM climate_groups WHERE id=?1"; pub const UPSERT_SCHEDULE: &str = r#" INSERT INTO schedules(id,zone_id,payload,updated_at) VALUES(?1,?2,?3,?4) ON CONFLICT(id) DO UPDATE SET zone_id=excluded.zone_id, payload=excluded.payload, updated_at=excluded.updated_at "#; pub const LIST_SCHEDULES: &str = "SELECT payload FROM schedules ORDER BY json_extract(payload, '$.name') COLLATE NOCASE"; pub const GET_SCHEDULE: &str = "SELECT payload FROM schedules WHERE id=?1"; pub const DELETE_SCHEDULE: &str = "DELETE FROM schedules WHERE id=?1"; pub const UPSERT_AUTOMATION: &str = r#" INSERT INTO automations(id,payload,updated_at) VALUES(?1,?2,?3) ON CONFLICT(id) DO UPDATE SET payload=excluded.payload, updated_at=excluded.updated_at "#; pub const LIST_AUTOMATIONS: &str = "SELECT payload FROM automations ORDER BY json_extract(payload, '$.name') COLLATE NOCASE"; pub const GET_AUTOMATION: &str = "SELECT payload FROM automations WHERE id=?1"; pub const DELETE_AUTOMATION: &str = "DELETE FROM automations WHERE id=?1";