use uuid::Uuid;
#[derive(Debug, Deserialize, Serialize, Clone, PartialEq, Hash)]
pub struct AuthLoginRequest {
pub email: String,
pub password: String,
}
#[derive(Debug, Deserialize, Serialize, Clone, PartialEq, Hash)]
pub struct AuthLoginResponse {
pub token: String,
}
#[derive(Debug, Deserialize, Serialize, Clone, PartialEq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct RegistrationRequest {
pub email: String,
pub first_name: String,
pub last_name: String,
pub password: String,
pub is_developer: bool,
}
#[derive(Debug, Deserialize, Serialize, Clone, PartialEq, Hash)]
pub struct MessageTypeRequest {
pub name: String,
pub description: String,
pub media_type: String,
pub tags: Vec<String>,
}
#[derive(Debug, Deserialize, Serialize, Clone, PartialEq, Hash)]
pub struct MessageType {
pub id: Uuid,
pub name: String,
pub description: String,
pub media_type: String,
pub tags: Vec<String>,
pub created: String, }
#[derive(Debug, Deserialize, Serialize, Clone, PartialEq, Hash)]
pub struct ThingTypeRequest {
pub name: String,
pub resources: Vec<Resource>,
}
#[derive(Debug, Deserialize, Serialize, Clone, PartialEq, Hash)]
pub struct ThingType {
pub id: Uuid,
pub name: String,
pub public: bool,
pub created: String, pub deactivated: Option<String>, }
#[derive(Debug, Deserialize, Serialize, Clone, PartialEq, Hash)]
#[serde(rename_all = "camelCase")]
pub enum ResourceMethod {
Pub,
Sub,
}
#[derive(Debug, Deserialize, Serialize, Clone, PartialEq, Hash)]
pub struct Resource {
pub uri: String,
pub method: ResourceMethod,
pub message_type: Uuid,
}
#[derive(Debug, Deserialize, Serialize, Clone, PartialEq, Hash)]
pub struct ThingCertificates {
pub ca: String,
pub cert: String,
pub key: String,
}
#[derive(Debug, Deserialize, Serialize, Clone, Hash)]
pub struct Thing {
pub id: Uuid,
pub name: String,
pub serial_number: String,
pub thing_type: Uuid,
pub certs: Option<ThingCertificates>,
pub created: String, pub deactivated: Option<String>,
}
impl PartialEq for Thing {
fn eq(&self, other: &Self) -> bool {
self.id == other.id
}
}
impl Eq for Thing {}
#[derive(Debug, Deserialize, Serialize, Clone, PartialEq, Hash)]
pub struct ThingRequest {
pub name: String,
pub serial_number: String,
pub thing_type: Uuid,
}
#[derive(Debug, Deserialize, Serialize, Clone, PartialEq, Hash)]
pub struct MetaResponseInfo {
pub limit: usize,
pub offset: usize,
}
#[derive(Debug, Deserialize, Serialize, Clone, PartialEq, Hash)]
pub struct GenericResponse<T> {
pub meta: MetaResponseInfo,
pub data: Vec<T>,
}