use serde::{Deserialize, Serialize};
use serde_json::Value;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TaskStateUpdate {
#[serde(skip_serializing_if = "Option::is_none")]
pub task_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub command_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<TaskStatus>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub timestamp: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub response: Option<ProcessorResponse>,
#[serde(skip_serializing_if = "Option::is_none")]
pub links: Option<Vec<Link>>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "kebab-case")]
pub enum TaskStatus {
Initialized,
Received,
ProcessingInProgress,
ProcessingCompleted,
ProcessingError,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ProcessorResponse {
#[serde(skip_serializing_if = "Option::is_none")]
pub resource_id: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub additional_resource_id: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub resource: Option<std::collections::HashMap<String, Value>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub error: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub additional_info: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum ProcessorError {
#[serde(rename = "UNAUTHORIZED")]
Unauthorized,
#[serde(rename = "NOT_FOUND")]
NotFound,
#[serde(rename = "BAD_REQUEST")]
BadRequest,
#[serde(rename = "GENERAL_ERROR")]
GeneralError,
#[serde(other)]
Other,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TasksStateUpdate {
pub tasks: Vec<TaskStateUpdate>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CloudTag {
pub key: String,
pub value: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CloudTags {
pub tags: Vec<CloudTag>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PaginatedResponse<T> {
#[serde(flatten)]
pub data: T,
#[serde(skip_serializing_if = "Option::is_none")]
pub offset: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub limit: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub total: Option<u32>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Link {
pub rel: String,
pub href: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub method: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub r#type: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Links {
pub links: Vec<Link>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "UPPERCASE")]
pub enum CloudProvider {
Aws,
Gcp,
Azure,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "lowercase")]
pub enum Protocol {
Redis,
Memcached,
Stack,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum DataPersistence {
#[serde(rename = "none")]
None,
#[serde(rename = "aof-every-1-sec")]
AofEvery1Sec,
#[serde(rename = "aof-every-write")]
AofEveryWrite,
#[serde(rename = "snapshot-every-1-hour")]
SnapshotEvery1Hour,
#[serde(rename = "snapshot-every-6-hours")]
SnapshotEvery6Hours,
#[serde(rename = "snapshot-every-12-hours")]
SnapshotEvery12Hours,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "lowercase")]
pub enum SubscriptionStatus {
Pending,
Active,
Deleting,
Error,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "lowercase")]
pub enum DatabaseStatus {
Pending,
Active,
ActiveChangePending,
ImportPending,
DeletePending,
Recovery,
Error,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct EmptyResponse {}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ErrorResponse {
#[serde(skip_serializing_if = "Option::is_none")]
pub error: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub message: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub status_code: Option<u16>,
}