1pub mod sql_types {
4 #[derive(diesel::sql_types::SqlType)]
5 #[diesel(postgres_type(name = "heatmap_color"))]
6 pub struct HeatmapColor;
7
8 #[derive(diesel::sql_types::SqlType)]
9 #[diesel(postgres_type(name = "drawing_shape_type"))]
10 pub struct DrawingShapeType;
11
12 #[derive(diesel::sql_types::SqlType)]
13 #[diesel(postgres_type(name = "fill_pattern_type"))]
14 pub struct FillPatternType;
15
16 #[derive(diesel::sql_types::SqlType)]
17 #[diesel(postgres_type(name = "herbaceous_or_woody"))]
18 pub struct HerbaceousOrWoody;
19
20 #[derive(diesel::sql_types::SqlType)]
21 #[diesel(postgres_type(name = "layer_type"))]
22 pub struct LayerType;
23
24 #[derive(diesel::sql_types::SqlType)]
25 #[diesel(postgres_type(name = "life_cycle"))]
26 pub struct LifeCycle;
27
28 #[derive(diesel::sql_types::SqlType)]
29 #[diesel(postgres_type(name = "light_requirement"))]
30 pub struct LightRequirement;
31
32 #[derive(diesel::sql_types::SqlType)]
33 #[diesel(postgres_type(name = "privacy_access_control"))]
34 pub struct PrivacyAccessControl;
35
36 #[derive(diesel::sql_types::SqlType)]
37 #[diesel(postgres_type(name = "quality"))]
38 pub struct Quality;
39
40 #[derive(diesel::sql_types::SqlType)]
41 #[diesel(postgres_type(name = "quantity"))]
42 pub struct Quantity;
43
44 #[derive(diesel::sql_types::SqlType)]
45 #[diesel(postgres_type(name = "shade"))]
46 pub struct Shade;
47
48 #[derive(diesel::sql_types::SqlType)]
49 #[diesel(postgres_type(name = "soil_texture"))]
50 pub struct SoilTexture;
51
52 #[derive(diesel::sql_types::SqlType)]
53 #[diesel(postgres_type(name = "spatial_relation_type"))]
54 pub struct SpatialRelationType;
55
56 #[derive(diesel::sql_types::SqlType)]
57 #[diesel(postgres_type(name = "taxonomic_rank"))]
58 pub struct TaxonomicRank;
59
60 #[derive(diesel::sql_types::SqlType)]
61 #[diesel(postgres_type(name = "temporal_relation_effect"))]
62 pub struct TemporalRelationEffect;
63
64 #[derive(diesel::sql_types::SqlType)]
65 #[diesel(postgres_type(name = "water_requirement"))]
66 pub struct WaterRequirement;
67}
68
69diesel::table! {
70 use postgis_diesel::sql_types::Geography;
71 use diesel::sql_types::*;
72
73 application_settings (id) {
74 id -> Int4,
75 key -> Text,
76 value -> Text,
77 }
78}
79
80diesel::table! {
81 use postgis_diesel::sql_types::Geography;
82 use diesel::sql_types::*;
83
84 base_layer_images (id) {
85 id -> Uuid,
86 path -> Text,
87 rotation -> Int4,
88 scale -> Int4,
89 layer_id -> Uuid,
90 x -> Int4,
91 y -> Int4,
92 }
93}
94
95diesel::table! {
96 use postgis_diesel::sql_types::Geography;
97 use diesel::sql_types::*;
98
99 bezier_polygon_points (id, idx) {
100 id -> Uuid,
101 idx -> Int4,
102 x -> Int4,
103 y -> Int4,
104 }
105}
106
107diesel::table! {
108 use postgis_diesel::sql_types::Geography;
109 use diesel::sql_types::*;
110 use super::sql_types::FillPatternType;
111
112 bezier_polygon_props (drawings_id) {
113 drawings_id -> Uuid,
114 color -> Text,
115 fill_pattern -> FillPatternType,
116 stroke_width -> Int4,
117 }
118}
119
120diesel::table! {
121 use postgis_diesel::sql_types::Geography;
122 use diesel::sql_types::*;
123 use super::sql_types::DrawingShapeType;
124
125 drawings (id) {
126 id -> Uuid,
127 shape_type -> DrawingShapeType,
128 add_date -> Nullable<Date>,
129 remove_date -> Nullable<Date>,
130 rotation -> Int4,
131 scale_x -> Int4,
132 scale_y -> Int4,
133 x -> Int4,
134 y -> Int4,
135 layer_id -> Uuid,
136 notes -> Text,
137 created_at -> Timestamp,
138 modified_at -> Timestamp,
139 created_by -> Uuid,
140 modified_by -> Uuid,
141 }
142}
143
144diesel::table! {
145 use postgis_diesel::sql_types::Geography;
146 use diesel::sql_types::*;
147 use super::sql_types::FillPatternType;
148
149 ellipse_props (drawings_id) {
150 drawings_id -> Uuid,
151 axis_x -> Int4,
152 axis_y -> Int4,
153 color -> Text,
154 fill_pattern -> FillPatternType,
155 stroke_width -> Int4,
156 }
157}
158
159diesel::table! {
160 use postgis_diesel::sql_types::Geography;
161 use diesel::sql_types::*;
162
163 free_line_points (id, idx) {
164 id -> Uuid,
165 idx -> Int4,
166 x -> Int4,
167 y -> Int4,
168 }
169}
170
171diesel::table! {
172 use postgis_diesel::sql_types::Geography;
173 use diesel::sql_types::*;
174 use super::sql_types::FillPatternType;
175
176 free_line_props (drawings_id) {
177 drawings_id -> Uuid,
178 color -> Text,
179 fill_pattern -> FillPatternType,
180 stroke_width -> Int4,
181 }
182}
183
184diesel::table! {
185 use postgis_diesel::sql_types::Geography;
186 use diesel::sql_types::*;
187
188 guided_tours (user_id) {
189 user_id -> Uuid,
190 editor_tour_completed -> Bool,
191 editor_tour_paused -> Bool,
192 }
193}
194
195diesel::table! {
196 use postgis_diesel::sql_types::Geography;
197 use postgis_diesel::sql_types::Geometry;
198 use diesel::sql_types::*;
199 use super::sql_types::WaterRequirement;
200
201 hydrologies (id) {
202 id -> Uuid,
203 layer_id -> Uuid,
204 water_requirement -> WaterRequirement,
205 geometry -> Geometry,
206 add_date -> Nullable<Date>,
207 remove_date -> Nullable<Date>,
208 notes -> Text,
209 created_at -> Timestamp,
210 modified_at -> Timestamp,
211 created_by -> Uuid,
212 modified_by -> Uuid,
213 }
214}
215
216diesel::table! {
217 use postgis_diesel::sql_types::Geography;
218 use diesel::sql_types::*;
219
220 image_props (drawings_id) {
221 drawings_id -> Uuid,
222 file_path -> Text,
223 }
224}
225
226diesel::table! {
227 use postgis_diesel::sql_types::Geography;
228 use diesel::sql_types::*;
229
230 label_text_props (drawings_id) {
231 drawings_id -> Uuid,
232 label_text -> Text,
233 width -> Int4,
234 height -> Int4,
235 color -> Text,
236 }
237}
238
239diesel::table! {
240 use postgis_diesel::sql_types::Geography;
241 use diesel::sql_types::*;
242 use super::sql_types::LayerType;
243
244 layers (id) {
245 map_id -> Int8,
246 #[sql_name = "type"]
247 type_ -> LayerType,
248 name -> Text,
249 id -> Uuid,
250 marked_deleted -> Nullable<Timestamp>,
251 order_index -> Int4,
252 }
253}
254
255diesel::table! {
256 use postgis_diesel::sql_types::Geography;
257 use diesel::sql_types::*;
258
259 map_collaborators (map_id, user_id) {
260 map_id -> Int8,
261 user_id -> Uuid,
262 created_at -> Timestamp,
263 }
264}
265
266diesel::table! {
267 use postgis_diesel::sql_types::Geography;
268 use postgis_diesel::sql_types::Geometry;
269 use diesel::sql_types::*;
270 use super::sql_types::PrivacyAccessControl;
271
272 maps (id) {
273 id -> Int8,
274 name -> Text,
275 deletion_date -> Nullable<Date>,
276 last_visit -> Nullable<Date>,
277 is_inactive -> Bool,
278 zoom_factor -> Int2,
279 privacy -> PrivacyAccessControl,
280 description -> Nullable<Text>,
281 location -> Nullable<Geography>,
282 created_by -> Uuid,
283 geometry -> Geometry,
284 created_at -> Timestamp,
285 modified_at -> Timestamp,
286 modified_by -> Uuid,
287 }
288}
289
290diesel::table! {
291 use postgis_diesel::sql_types::Geography;
292 use diesel::sql_types::*;
293
294 plantings (id) {
295 id -> Uuid,
296 plant_id -> Int8,
297 x -> Int4,
298 y -> Int4,
299 size_x -> Int4,
300 size_y -> Int4,
301 rotation -> Int4,
302 add_date -> Nullable<Date>,
303 remove_date -> Nullable<Date>,
304 seed_id -> Nullable<Int8>,
305 is_area -> Bool,
306 notes -> Text,
307 created_at -> Timestamp,
308 modified_at -> Timestamp,
309 created_by -> Uuid,
310 modified_by -> Uuid,
311 layer_id -> Uuid,
312 height -> Nullable<Int4>,
313 }
314}
315
316diesel::table! {
317 use postgis_diesel::sql_types::Geography;
318 use diesel::sql_types::*;
319 use super::sql_types::Shade;
320 use super::sql_types::SoilTexture;
321 use super::sql_types::HerbaceousOrWoody;
322 use super::sql_types::LifeCycle;
323 use super::sql_types::LightRequirement;
324 use super::sql_types::WaterRequirement;
325 use super::sql_types::TaxonomicRank;
326
327 plants (id) {
328 id -> Int8,
329 unique_name -> Text,
330 common_name_en -> Nullable<Array<Nullable<Text>>>,
331 common_name_de -> Nullable<Array<Nullable<Text>>>,
332 functions -> Nullable<Text>,
333 shade -> Nullable<Shade>,
334 soil_texture -> Nullable<Array<Nullable<SoilTexture>>>,
335 herbaceous_or_woody -> Nullable<HerbaceousOrWoody>,
336 life_cycle -> Nullable<Array<Nullable<LifeCycle>>>,
337 height -> Nullable<Int4>,
338 created_at -> Timestamp,
339 updated_at -> Timestamp,
340 has_drought_tolerance -> Nullable<Bool>,
341 hardiness_zone -> Nullable<Text>,
342 light_requirement -> Nullable<Array<Nullable<LightRequirement>>>,
343 water_requirement -> Nullable<Array<Nullable<WaterRequirement>>>,
344 edible -> Nullable<Bool>,
345 edible_parts -> Nullable<Array<Nullable<Text>>>,
346 spread -> Nullable<Int4>,
347 warning -> Nullable<Text>,
348 version -> Nullable<Int2>,
349 sowing_outdoors -> Nullable<Array<Nullable<Int2>>>,
350 harvest_time -> Nullable<Array<Nullable<Int2>>>,
351 rank -> TaxonomicRank,
352 family -> Nullable<Int8>,
353 genus -> Nullable<Int8>,
354 species -> Nullable<Int8>,
355 variety -> Nullable<Int8>,
356 icon_path -> Nullable<Text>,
357 }
358}
359
360diesel::table! {
361 use postgis_diesel::sql_types::Geography;
362 use diesel::sql_types::*;
363 use super::sql_types::FillPatternType;
364
365 rectangle_props (drawings_id) {
366 drawings_id -> Uuid,
367 width -> Int4,
368 height -> Int4,
369 color -> Text,
370 fill_pattern -> FillPatternType,
371 stroke_width -> Int4,
372 }
373}
374
375diesel::table! {
376 use postgis_diesel::sql_types::Geography;
377 use diesel::sql_types::*;
378 use super::sql_types::Quantity;
379 use super::sql_types::Quality;
380
381 seeds (id) {
382 id -> Int8,
383 name -> Text,
384 harvest_year -> Int2,
385 use_by -> Nullable<Date>,
386 origin -> Nullable<Text>,
387 taste -> Nullable<Text>,
388 #[sql_name = "yield"]
389 yield_ -> Nullable<Text>,
390 quantity -> Quantity,
391 quality -> Nullable<Quality>,
392 price -> Nullable<Int2>,
393 generation -> Nullable<Int2>,
394 notes -> Nullable<Text>,
395 plant_id -> Nullable<Int8>,
396 created_by -> Uuid,
397 archived_at -> Nullable<Timestamp>,
398 }
399}
400
401diesel::table! {
402 use postgis_diesel::sql_types::Geography;
403 use postgis_diesel::sql_types::Geometry;
404 use diesel::sql_types::*;
405 use super::sql_types::Shade;
406
407 shadings (id) {
408 id -> Uuid,
409 layer_id -> Uuid,
410 shade -> Shade,
411 geometry -> Geometry,
412 add_date -> Nullable<Date>,
413 remove_date -> Nullable<Date>,
414 notes -> Text,
415 created_at -> Timestamp,
416 modified_at -> Timestamp,
417 created_by -> Uuid,
418 modified_by -> Uuid,
419 }
420}
421
422diesel::table! {
423 use postgis_diesel::sql_types::Geography;
424 use postgis_diesel::sql_types::Geometry;
425 use diesel::sql_types::*;
426 use super::sql_types::SoilTexture;
427
428 soil_textures (id) {
429 id -> Uuid,
430 layer_id -> Uuid,
431 soil_texture -> SoilTexture,
432 geometry -> Geometry,
433 add_date -> Nullable<Date>,
434 remove_date -> Nullable<Date>,
435 notes -> Text,
436 created_at -> Timestamp,
437 modified_at -> Timestamp,
438 created_by -> Uuid,
439 modified_by -> Uuid,
440 }
441}
442
443diesel::table! {
444 use postgis_diesel::sql_types::Geography;
445 use diesel::sql_types::*;
446 use super::sql_types::SpatialRelationType;
447
448 spatial_relations (plant1, plant2) {
449 plant1 -> Int8,
450 plant2 -> Int8,
451 relation -> SpatialRelationType,
452 note -> Nullable<Text>,
453 }
454}
455
456diesel::table! {
457 use postgis_diesel::sql_types::Geography;
458 use diesel::sql_types::*;
459 use super::sql_types::TemporalRelationEffect;
460
461 temporal_relations (plant_earlier, plant_later) {
462 plant_earlier -> Int8,
463 plant_later -> Int8,
464 min_duration -> Nullable<Int4>,
465 max_duration -> Nullable<Int4>,
466 effect -> Nullable<TemporalRelationEffect>,
467 }
468}
469
470diesel::joinable!(base_layer_images -> layers (layer_id));
471diesel::joinable!(bezier_polygon_points -> bezier_polygon_props (id));
472diesel::joinable!(bezier_polygon_props -> drawings (drawings_id));
473diesel::joinable!(drawings -> layers (layer_id));
474diesel::joinable!(ellipse_props -> drawings (drawings_id));
475diesel::joinable!(free_line_points -> free_line_props (id));
476diesel::joinable!(free_line_props -> drawings (drawings_id));
477diesel::joinable!(hydrologies -> layers (layer_id));
478diesel::joinable!(image_props -> drawings (drawings_id));
479diesel::joinable!(label_text_props -> drawings (drawings_id));
480diesel::joinable!(layers -> maps (map_id));
481diesel::joinable!(map_collaborators -> maps (map_id));
482diesel::joinable!(plantings -> layers (layer_id));
483diesel::joinable!(plantings -> plants (plant_id));
484diesel::joinable!(plantings -> seeds (seed_id));
485diesel::joinable!(rectangle_props -> drawings (drawings_id));
486diesel::joinable!(seeds -> plants (plant_id));
487diesel::joinable!(shadings -> layers (layer_id));
488diesel::joinable!(soil_textures -> layers (layer_id));
489
490diesel::allow_tables_to_appear_in_same_query!(
491 application_settings,
492 base_layer_images,
493 bezier_polygon_points,
494 bezier_polygon_props,
495 drawings,
496 ellipse_props,
497 free_line_points,
498 free_line_props,
499 guided_tours,
500 hydrologies,
501 image_props,
502 label_text_props,
503 layers,
504 map_collaborators,
505 maps,
506 plantings,
507 plants,
508 rectangle_props,
509 seeds,
510 shadings,
511 soil_textures,
512 spatial_relations,
513 temporal_relations,
514);