71 lines
1.4 KiB
Rust
71 lines
1.4 KiB
Rust
#[cfg(test)]
|
|
mod tests {
|
|
#[test]
|
|
fn it_works() {
|
|
assert_eq!(2 + 2, 4);
|
|
}
|
|
}
|
|
|
|
use serde::{Deserialize, Serialize};
|
|
|
|
#[derive(Deserialize, Clone, PartialEq, Debug)]
|
|
pub struct Owner {
|
|
pub id: i32,
|
|
pub name: String,
|
|
}
|
|
|
|
#[derive(Serialize, Deserialize, Clone, PartialEq, Debug)]
|
|
pub struct OwnerRequest {
|
|
pub name: String,
|
|
}
|
|
|
|
#[derive(Serialize, Deserialize, Clone, PartialEq, Debug)]
|
|
pub struct OwnerResponse {
|
|
pub id: i32,
|
|
pub name: String,
|
|
}
|
|
|
|
impl OwnerResponse {
|
|
pub fn of(owner: Owner) -> OwnerResponse {
|
|
OwnerResponse {
|
|
id: owner.id,
|
|
name: owner.name,
|
|
}
|
|
}
|
|
}
|
|
|
|
#[derive(Deserialize, Clone, PartialEq, Debug)]
|
|
pub struct Pet {
|
|
pub id: i32,
|
|
pub name: String,
|
|
pub owner_id: i32,
|
|
pub animal_type: String,
|
|
pub color: Option<String>,
|
|
}
|
|
|
|
#[derive(Serialize, Deserialize, Clone, PartialEq, Debug)]
|
|
pub struct PetRequest {
|
|
pub name: String,
|
|
pub animal_type: String,
|
|
pub color: Option<String>,
|
|
}
|
|
|
|
#[derive(Serialize, Deserialize, Clone, PartialEq, Debug)]
|
|
pub struct PetResponse {
|
|
pub id: i32,
|
|
pub name: String,
|
|
pub animal_type: String,
|
|
pub color: Option<String>,
|
|
}
|
|
|
|
impl PetResponse {
|
|
pub fn of(pet: Pet) -> PetResponse {
|
|
PetResponse {
|
|
id: pet.id,
|
|
name: pet.name,
|
|
animal_type: pet.animal_type,
|
|
color: pet.color,
|
|
}
|
|
}
|
|
}
|