use std::{path::Path, sync::{Arc, Mutex}}; use anyhow::{Context, Result}; use chrono::{DateTime, Duration, Utc}; use rusqlite::{params, Connection, OptionalExtension}; use serde::{de::DeserializeOwned, Serialize}; use serde_json::Value; use crate::{ models::{ApiTokenInfo, Automation, ClimateGroup, ConfigurationExport, Device, EventLog, HaReading, Reading, RuntimeSettings, Schedule, Zone, ZoneReading}, queries, }; #[derive(Clone)] pub struct Db { conn: Arc>, } // Functional source split intentionally keeps items in the existing module namespace. include!("db/core_devices.rs"); include!("db/climate.rs"); include!("db/schedules_automations.rs"); include!("db/device_history.rs"); include!("db/zone_history.rs"); include!("db/ha_history.rs"); include!("db/events_tokens.rs"); include!("db/configuration.rs"); include!("db/tests.rs");