1use chrono::{NaiveDate, NaiveDateTime};
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 pub created_at: NaiveDateTime,
37 pub modified_at: NaiveDateTime,
39 pub created_by: Uuid,
41 pub modified_by: Uuid,
43}
44
45#[derive(Debug, Clone, Default, AsChangeset)]
47#[diesel(table_name = shadings)]
48pub struct UpdateShading {
49 pub id: Uuid,
50 pub shade: Option<Shade>,
51 pub geometry: Option<Polygon<Point>>,
52 pub add_date: Option<Option<NaiveDate>>,
53 pub remove_date: Option<Option<NaiveDate>>,
54 pub notes: Option<String>,
55 pub modified_by: Uuid,
56}
57
58#[derive(Debug, Clone, Identifiable, Queryable, Insertable)]
60#[diesel(table_name = hydrologies)]
61pub struct Hydrology {
62 pub id: Uuid,
64 pub layer_id: Uuid,
66 pub water_requirement: WaterRequirementEnum,
68 pub geometry: Polygon<Point>,
70 pub add_date: Option<NaiveDate>,
73 pub remove_date: Option<NaiveDate>,
76 pub notes: String,
78 pub created_at: NaiveDateTime,
80 pub modified_at: NaiveDateTime,
82 pub created_by: Uuid,
84 pub modified_by: Uuid,
86}
87
88#[derive(Debug, Clone, Default, AsChangeset)]
90#[diesel(table_name = hydrologies)]
91pub struct UpdateHydrology {
92 pub id: Uuid,
93 pub water_requirement: Option<WaterRequirementEnum>,
94 pub geometry: Option<Polygon<Point>>,
95 pub add_date: Option<Option<NaiveDate>>,
96 pub remove_date: Option<Option<NaiveDate>>,
97 pub notes: Option<String>,
98 pub modified_by: Uuid,
99}
100
101#[derive(Debug, Clone, Identifiable, Queryable, Insertable)]
103#[diesel(table_name = soil_textures)]
104pub struct SoilTexture {
105 pub id: Uuid,
107 pub layer_id: Uuid,
109 pub soil_texture: SoilTextureEnum,
111 pub geometry: Polygon<Point>,
113 pub add_date: Option<NaiveDate>,
116 pub remove_date: Option<NaiveDate>,
119 pub notes: String,
121 pub created_at: NaiveDateTime,
123 pub modified_at: NaiveDateTime,
125 pub created_by: Uuid,
127 pub modified_by: Uuid,
129}
130
131#[derive(Debug, Clone, Default, AsChangeset)]
133#[diesel(table_name = soil_textures)]
134pub struct UpdateSoilTexture {
135 pub id: Uuid,
136 pub soil_texture: Option<SoilTextureEnum>,
137 pub geometry: Option<Polygon<Point>>,
138 pub add_date: Option<Option<NaiveDate>>,
139 pub remove_date: Option<Option<NaiveDate>>,
140 pub notes: Option<String>,
141 pub modified_by: Uuid,
142}