clean_base/dtos/
children.rs

1use serde::{Deserialize, Serialize};
2use std::fmt::{Display, Formatter, Result as FmtResult};
3use utoipa::ToSchema;
4
5/// A children record
6///
7/// This enumerator allow represents the children elements using their primary
8/// keys (Ids option) or the true records (Record option).
9#[derive(Clone, Debug, Deserialize, Serialize, PartialEq, ToSchema)]
10#[serde(rename_all = "camelCase")]
11pub enum Children<T, U> {
12    Records(Vec<T>),
13    Ids(Vec<U>),
14}
15
16impl<T, U> Display for Children<T, U>
17where
18    T: Display,
19    U: Display,
20{
21    fn fmt(&self, f: &mut Formatter) -> FmtResult {
22        match self {
23            Children::Records(_) => write!(f, "records"),
24            Children::Ids(_) => write!(f, "ids"),
25        }
26    }
27}
28
29#[derive(Clone, Debug, Deserialize, Serialize, PartialEq, ToSchema)]
30#[serde(untagged, rename_all = "camelCase")]
31pub enum UntaggedChildren<T, U> {
32    Records(Vec<T>),
33    Ids(Vec<U>),
34}
35
36impl<T, U> Display for UntaggedChildren<T, U>
37where
38    T: Display,
39    U: Display,
40{
41    fn fmt(&self, f: &mut Formatter) -> FmtResult {
42        match self {
43            UntaggedChildren::Records(_) => write!(f, "records"),
44            UntaggedChildren::Ids(_) => write!(f, "ids"),
45        }
46    }
47}