add sensors loop
This commit is contained in:
34
src/main.rs
34
src/main.rs
@@ -19,6 +19,16 @@ struct Sensor {
|
||||
type_donnee: String,
|
||||
}
|
||||
|
||||
impl Sensor {
|
||||
fn new(service: String, capteur: String, type_donnee: String) -> Sensor {
|
||||
Sensor {
|
||||
service,
|
||||
capteur,
|
||||
type_donnee
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
struct Donnee {
|
||||
id: i32,
|
||||
@@ -55,34 +65,35 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
let pool = Pool::new(url.as_str())?;
|
||||
let mut conn = pool.get_conn()?;
|
||||
|
||||
let mut date = (Utc::now() - Duration::days(7)).naive_utc().date();
|
||||
|
||||
let args: Vec<String> = env::args().collect();
|
||||
if args.len() >= 2 {
|
||||
date = NaiveDate::parse_from_str(&args[1], "%Y-%m-%d").unwrap();
|
||||
if args.len() == 1 {
|
||||
let date = (Utc::now() - Duration::days(7)).naive_utc().date();
|
||||
let _ = aggregate_values(&mut conn, date);
|
||||
} else if args.len() == 2 {
|
||||
let date = NaiveDate::parse_from_str(&args[1], "%Y-%m-%d").unwrap();
|
||||
let _ = aggregate_values(&mut conn, date);
|
||||
}
|
||||
dbg!(args);
|
||||
|
||||
let _ = aggregate_values(&mut conn, date);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn aggregate_values(conn: &mut PooledConn, date: NaiveDate) -> Result<(), Box<dyn std::error::Error>> {
|
||||
|
||||
let start_time = Utc.with_ymd_and_hms(date.year(), date.month(), date.day(), 00, 00, 00).unwrap() - Duration::minutes(15);
|
||||
dbg!(date, start_time);
|
||||
let end_time = start_time + Duration::days(1);
|
||||
let mut current_time = start_time;
|
||||
|
||||
let sensor = Sensor {
|
||||
service: "maison".to_string(),
|
||||
capteur: "bureau".to_string(),
|
||||
type_donnee: "co2".to_string(),
|
||||
};
|
||||
let sensors = [
|
||||
Sensor::new("maison".to_string(), "bureau".to_string(), "co2".to_string()),
|
||||
Sensor::new("maison".to_string(), "bureau".to_string(), "tvoc".to_string())
|
||||
];
|
||||
|
||||
while current_time <= end_time {
|
||||
let start_time_loop = current_time.to_string();
|
||||
let end_time_loop = (current_time + Duration::minutes(29) + Duration::seconds(59)).to_string();
|
||||
for sensor in &sensors {
|
||||
let query = format!("SELECT * FROM donnees WHERE capteur = '{}' AND type = '{}' AND (date_donnee BETWEEN '{}' AND '{}');", sensor.capteur, sensor.type_donnee, start_time_loop, end_time_loop);
|
||||
let selected_rows: Vec<Row> = conn.query(query)?;
|
||||
|
||||
@@ -116,6 +127,7 @@ fn aggregate_values(conn: &mut PooledConn, date: NaiveDate) -> Result<(), Box<dy
|
||||
}
|
||||
current_time = current_time + Duration::minutes(30);
|
||||
}
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user