use serde::{Deserialize, Serialize};
use serde_with::skip_serializing_none;
use crate::{to_query, IntoParams, LimitCursorQuery, SetCursor};
#[skip_serializing_none]
#[derive(Serialize, Deserialize, Clone, Debug, Default)]
#[serde(rename_all = "camelCase")]
pub struct SpaceCreate {
pub space: String,
pub description: Option<String>,
pub name: Option<String>,
}
#[skip_serializing_none]
#[derive(Serialize, Deserialize, Clone, Debug, Default)]
#[serde(rename_all = "camelCase")]
pub struct Space {
pub space: String,
pub description: Option<String>,
pub name: Option<String>,
pub created_time: i64,
pub last_updated_time: i64,
pub is_global: bool,
}
#[derive(Default, Clone, Debug)]
pub struct SpaceQuery {
pub limit: Option<i32>,
pub cursor: Option<String>,
pub include_global: Option<bool>,
}
impl IntoParams for SpaceQuery {
fn into_params(self) -> Vec<(String, String)> {
let mut params = Vec::new();
to_query("limit", &self.limit, &mut params);
to_query("cursor", &self.cursor, &mut params);
to_query("includeGlobal", &self.include_global, &mut params);
params
}
}
impl SetCursor for SpaceQuery {
fn set_cursor(&mut self, cursor: Option<String>) {
self.cursor = cursor;
}
}
impl From<LimitCursorQuery> for SpaceQuery {
fn from(q: LimitCursorQuery) -> Self {
Self {
limit: q.limit,
cursor: q.cursor,
include_global: None,
}
}
}