polyglotlib/jsonb/
area.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
use crate::jsonb::definition::Definition;
use serde::{Deserialize, Serialize};
use uuid::Uuid;

#[derive(Deserialize, Serialize, Debug, Clone, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct Area {
    #[serde(skip_serializing_if = "Option::is_none")]
    pub id: Option<Uuid>,
    pub shape: String,
    pub coords: Vec<i32>,
    pub pre_fill_color: String,
    pub fill_color: String,
    pub definitions: Vec<Definition>,
}

impl Area {
    pub fn normalize_area_list(area_list: Vec<Area>) -> Vec<Area> {
        let mut res: Vec<Area> = vec![];
        if area_list.clone().is_empty() {
            return res;
        }
        for area in area_list.iter() {
            res.push(Area {
                id: Option::from(if area.id.is_none() {
                    Uuid::new_v4()
                } else {
                    area.id.unwrap()
                }),
                shape: area.shape.clone(),
                coords: area.coords.clone(),
                pre_fill_color: area.pre_fill_color.clone(),
                fill_color: area.fill_color.clone(),
                definitions: area.definitions.clone(),
            });
        }
        res
    }
}