logical-systems 0.3.0

Modbus TCP server with GUI
pub mod create {
    #[macro_export]
    macro_rules! add_tree {
        ($e:expr) => {
            pub fn db_connect() -> String {
                let client = redis::Client::open("redis://127.0.0.1/").unwrap();
                let mut con = client.get_connection().unwrap();
                let y: String = redis::cmd("GET")
                    .arg("db_string_connection")
                    .query(&mut con)
                    .unwrap();
                return y
            }
            let mut client = Client::connect(&db_connect(), NoTls).unwrap();
            for row in client
                .query("SELECT new_plc_name FROM plc_list ORDER BY mark", &[])
                .unwrap()
            {
                let new_table_name: &str = row.get(0);
                $e.add(new_table_name);
            }
            for row in client
                .query("SELECT variable FROM var_list ORDER BY mark", &[])
                .unwrap()
            {
                let variable: &str = row.get(0);
                let v: Value = serde_json::from_str(&variable).unwrap();
                let path_plc = v["variable_path"][0].to_string();
                fn rem_first_and_last(value: &str) -> &str {
                    let mut chars = value.chars();
                    chars.next();
                    chars.next_back();
                    chars.as_str()
                }
                let mut path = rem_first_and_last(&path_plc).to_string();
                path.push_str("/");
                let var_path = v["variable_path"][1].to_string();
                let variable_path = rem_first_and_last(&var_path);
                path.push_str(variable_path);
                $e.add(&path);
            }
        };
    }
}