backend/model/entity/
areas.rs1use chrono::NaiveDate;
4use diesel::{AsChangeset, Identifiable, Insertable, Queryable};
5use postgis_diesel::types::{Point, Polygon};
6use uuid::Uuid;
7
8use crate::{
9 model::r#enum::{
10 shade::Shade, soil_texture::SoilTextureEnum, water_requirement::WaterRequirementEnum,
11 },
12 schema::{hydrologies, shadings, soil_textures},
13};
14
15#[derive(Debug, Clone, Identifiable, Queryable, Insertable)]
17#[diesel(table_name = shadings)]
18pub struct Shading {
19 pub id: Uuid,
21 pub layer_id: Uuid,
23 pub shade: Shade,
25 pub geometry: Polygon<Point>,
27 pub add_date: Option<NaiveDate>,
30 pub remove_date: Option<NaiveDate>,
33 pub notes: String,
35}
36
37#[derive(Debug, Clone, Default, AsChangeset)]
39#[diesel(table_name = shadings)]
40pub struct UpdateShading {
41 pub id: Uuid,
42 pub shade: Option<Shade>,
43 pub geometry: Option<Polygon<Point>>,
44 pub add_date: Option<Option<NaiveDate>>,
45 pub remove_date: Option<Option<NaiveDate>>,
46 pub notes: Option<String>,
47}
48
49#[derive(Debug, Clone, Identifiable, Queryable, Insertable)]
51#[diesel(table_name = hydrologies)]
52pub struct Hydrology {
53 pub id: Uuid,
55 pub layer_id: Uuid,
57 pub water_requirement: WaterRequirementEnum,
59 pub geometry: Polygon<Point>,
61 pub add_date: Option<NaiveDate>,
64 pub remove_date: Option<NaiveDate>,
67 pub notes: String,
69}
70
71#[derive(Debug, Clone, Default, AsChangeset)]
73#[diesel(table_name = hydrologies)]
74pub struct UpdateHydrology {
75 pub id: Uuid,
76 pub water_requirement: Option<WaterRequirementEnum>,
77 pub geometry: Option<Polygon<Point>>,
78 pub add_date: Option<Option<NaiveDate>>,
79 pub remove_date: Option<Option<NaiveDate>>,
80 pub notes: Option<String>,
81}
82
83#[derive(Debug, Clone, Identifiable, Queryable, Insertable)]
85#[diesel(table_name = soil_textures)]
86pub struct SoilTexture {
87 pub id: Uuid,
89 pub layer_id: Uuid,
91 pub soil_texture: SoilTextureEnum,
93 pub geometry: Polygon<Point>,
95 pub add_date: Option<NaiveDate>,
98 pub remove_date: Option<NaiveDate>,
101 pub notes: String,
103}
104
105#[derive(Debug, Clone, Default, AsChangeset)]
107#[diesel(table_name = soil_textures)]
108pub struct UpdateSoilTexture {
109 pub id: Uuid,
110 pub soil_texture: Option<SoilTextureEnum>,
111 pub geometry: Option<Polygon<Point>>,
112 pub add_date: Option<Option<NaiveDate>>,
113 pub remove_date: Option<Option<NaiveDate>>,
114 pub notes: Option<String>,
115}