diff --git a/src/db.rs b/src/db.rs index c058806..b83b8ba 100644 --- a/src/db.rs +++ b/src/db.rs @@ -2,11 +2,39 @@ use rusqlite::*; const DBPATH: &'static str = "data/tracker.db"; const STATEMENTS: [&str; 2] = [ -"CREATE TABLE log (id integer primary key autoincrement, time text, latitude float, longitude float, speed integer, height integer, direction integer);", -"CREATE INDEX idx_time on log (time);",]; -const QUERY_INSERT: &'static str = - "INSERT INTO log (time, latitude, longitude, speed, height, direction) - VALUES (:time, :latitude, :longitude, :speed, :height, :direction)"; + " +CREATE TABLE log ( + id integer primary key autoincrement, + time text, + serial integer, + latitude float, + longitude float, + speed integer, + height integer, + direction integer);", + " +CREATE INDEX idx_time + ON log (time);", +]; +const QUERY_INSERT: &'static str = " +INSERT INTO log ( + time, + serial, + latitude, + longitude, + speed, + height, + direction +) +VALUES ( + :time, + :serial, + :latitude, + :longitude, + :speed, + :height, + :direction +)"; pub fn connectdb() -> Result { let conn = Connection::open(DBPATH)?; @@ -36,6 +64,7 @@ fn set_pragmas(conn: &Connection) -> Result<()> { pub fn insert( conn: &Connection, + serial: &u16, time: &String, latitude: &f64, longitude: &f64, @@ -45,7 +74,7 @@ pub fn insert( ) -> Result<()> { match conn.execute( QUERY_INSERT, - params![time, latitude, longitude, speed, height, direction], + params![time, serial, latitude, longitude, speed, height, direction], ) { Ok(inserted) => println!("{} rows were inserted", inserted), Err(err) => println!("insert failed: {}", err), diff --git a/src/parser/header.rs b/src/parser/header.rs index c432d66..a5a0921 100644 --- a/src/parser/header.rs +++ b/src/parser/header.rs @@ -26,11 +26,11 @@ pub struct MessageHeader { impl MessageHeader { pub fn build(&mut self, id: u16, properties: usize, raw_terminal_id: [u8; 6]) { - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); self.id = id; self.properties = properties as u16; self.raw_terminal_id = raw_terminal_id; - self.serial_number = rng.gen(); + self.serial_number = rng.random(); } pub fn get_id(&mut self) -> u16 { diff --git a/src/parser/mod.rs b/src/parser/mod.rs index 25cb5f5..1aafdbf 100644 --- a/src/parser/mod.rs +++ b/src/parser/mod.rs @@ -325,6 +325,7 @@ impl Message { let conn = connectdb().unwrap(); insert( &conn, + &inmsg.header.serial_number, &t.time.format("%Y-%m-%d %H:%M:%S").to_string(), &t.latitude, &t.longitude,