use crate::error::ErrorResponse;
use crate::v1::assessment::Assessment;
use crate::v1::contributor::Contributor;
use crate::v1::topic::Topic;
use serde::{Deserialize, Serialize};
pub(crate) fn default_size() -> i32 {
10
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
#[serde(untagged)]
#[allow(clippy::large_enum_variant)]
pub enum KBResponse {
Topics(ListResponse<Topic>),
Topic(SingleResponse<Topic>),
Assessments(ListResponse<Assessment>),
Assessment(SingleResponse<Assessment>),
Contributors(ListResponse<Contributor>),
Contributor(SingleResponse<Contributor>),
Error(ErrorResponse),
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
pub struct ListResponse<T> {
pub data: Vec<T>,
pub links: Option<Links>,
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
pub struct SingleResponse<T> {
pub data: T,
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
#[serde(rename_all = "camelCase")]
pub struct Links {
pub next: Option<Link>,
pub prev: Option<Link>,
#[serde(rename = "self")]
pub self_field: Link,
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
#[serde(rename_all = "camelCase")]
pub struct Link {
href: String,
}