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_tour_progress (user_id, step_key) {
189 user_id -> Uuid,
190 step_key -> Text,
191 completed_at -> Timestamp,
192 }
193}
194
195diesel::table! {
196 use postgis_diesel::sql_types::Geography;
197 use diesel::sql_types::*;
198
199 guided_tour_states (user_id) {
200 user_id -> Uuid,
201 paused_at -> Nullable<Timestamp>,
202 pause_count -> Int4,
203 }
204}
205
206diesel::table! {
207 use postgis_diesel::sql_types::Geography;
208 use postgis_diesel::sql_types::Geometry;
209 use diesel::sql_types::*;
210 use super::sql_types::WaterRequirement;
211
212 hydrologies (id) {
213 id -> Uuid,
214 layer_id -> Uuid,
215 water_requirement -> WaterRequirement,
216 geometry -> Geometry,
217 add_date -> Nullable<Date>,
218 remove_date -> Nullable<Date>,
219 notes -> Text,
220 created_at -> Timestamp,
221 modified_at -> Timestamp,
222 created_by -> Uuid,
223 modified_by -> Uuid,
224 }
225}
226
227diesel::table! {
228 use postgis_diesel::sql_types::Geography;
229 use diesel::sql_types::*;
230
231 image_props (drawings_id) {
232 drawings_id -> Uuid,
233 file_path -> Text,
234 }
235}
236
237diesel::table! {
238 use postgis_diesel::sql_types::Geography;
239 use diesel::sql_types::*;
240
241 label_text_props (drawings_id) {
242 drawings_id -> Uuid,
243 label_text -> Text,
244 width -> Int4,
245 height -> Int4,
246 color -> Text,
247 }
248}
249
250diesel::table! {
251 use postgis_diesel::sql_types::Geography;
252 use diesel::sql_types::*;
253 use super::sql_types::LayerType;
254
255 layers (id) {
256 map_id -> Int8,
257 #[sql_name = "type"]
258 type_ -> LayerType,
259 name -> Text,
260 id -> Uuid,
261 marked_deleted -> Nullable<Timestamp>,
262 order_index -> Int4,
263 }
264}
265
266diesel::table! {
267 use postgis_diesel::sql_types::Geography;
268 use diesel::sql_types::*;
269
270 map_collaborators (map_id, user_id) {
271 map_id -> Int8,
272 user_id -> Uuid,
273 created_at -> Timestamp,
274 }
275}
276
277diesel::table! {
278 use postgis_diesel::sql_types::Geography;
279 use postgis_diesel::sql_types::Geometry;
280 use diesel::sql_types::*;
281 use super::sql_types::PrivacyAccessControl;
282
283 maps (id) {
284 id -> Int8,
285 name -> Text,
286 deletion_date -> Nullable<Date>,
287 last_visit -> Nullable<Date>,
288 is_inactive -> Bool,
289 zoom_factor -> Int2,
290 privacy -> PrivacyAccessControl,
291 description -> Nullable<Text>,
292 location -> Nullable<Geography>,
293 created_by -> Uuid,
294 geometry -> Geometry,
295 created_at -> Timestamp,
296 modified_at -> Timestamp,
297 modified_by -> Uuid,
298 }
299}
300
301diesel::table! {
302 use postgis_diesel::sql_types::Geography;
303 use diesel::sql_types::*;
304
305 plantings (id) {
306 id -> Uuid,
307 plant_id -> Int8,
308 x -> Int4,
309 y -> Int4,
310 size_x -> Int4,
311 size_y -> Int4,
312 rotation -> Int4,
313 add_date -> Nullable<Date>,
314 remove_date -> Nullable<Date>,
315 seed_id -> Nullable<Int8>,
316 is_area -> Bool,
317 notes -> Text,
318 created_at -> Timestamp,
319 modified_at -> Timestamp,
320 created_by -> Uuid,
321 modified_by -> Uuid,
322 layer_id -> Uuid,
323 height -> Nullable<Int4>,
324 }
325}
326
327diesel::table! {
328 use postgis_diesel::sql_types::Geography;
329 use diesel::sql_types::*;
330 use super::sql_types::Shade;
331 use super::sql_types::SoilTexture;
332 use super::sql_types::HerbaceousOrWoody;
333 use super::sql_types::LifeCycle;
334 use super::sql_types::LightRequirement;
335 use super::sql_types::WaterRequirement;
336 use super::sql_types::TaxonomicRank;
337
338 plants (id) {
339 id -> Int8,
340 unique_name -> Text,
341 common_name_en -> Nullable<Array<Nullable<Text>>>,
342 common_name_de -> Nullable<Array<Nullable<Text>>>,
343 functions -> Nullable<Text>,
344 shade -> Nullable<Shade>,
345 soil_texture -> Nullable<Array<Nullable<SoilTexture>>>,
346 herbaceous_or_woody -> Nullable<HerbaceousOrWoody>,
347 life_cycle -> Nullable<Array<Nullable<LifeCycle>>>,
348 height -> Nullable<Int4>,
349 created_at -> Timestamp,
350 updated_at -> Timestamp,
351 has_drought_tolerance -> Nullable<Bool>,
352 hardiness_zone -> Nullable<Text>,
353 light_requirement -> Nullable<Array<Nullable<LightRequirement>>>,
354 water_requirement -> Nullable<Array<Nullable<WaterRequirement>>>,
355 edible -> Nullable<Bool>,
356 edible_parts -> Nullable<Array<Nullable<Text>>>,
357 spread -> Nullable<Int4>,
358 warning -> Nullable<Text>,
359 version -> Nullable<Int2>,
360 sowing_outdoors -> Nullable<Array<Nullable<Int2>>>,
361 harvest_time -> Nullable<Array<Nullable<Int2>>>,
362 rank -> TaxonomicRank,
363 family -> Nullable<Int8>,
364 genus -> Nullable<Int8>,
365 species -> Nullable<Int8>,
366 variety -> Nullable<Int8>,
367 icon_path -> Nullable<Text>,
368 }
369}
370
371diesel::table! {
372 use postgis_diesel::sql_types::Geography;
373 use diesel::sql_types::*;
374 use super::sql_types::FillPatternType;
375
376 rectangle_props (drawings_id) {
377 drawings_id -> Uuid,
378 width -> Int4,
379 height -> Int4,
380 color -> Text,
381 fill_pattern -> FillPatternType,
382 stroke_width -> Int4,
383 }
384}
385
386diesel::table! {
387 use postgis_diesel::sql_types::Geography;
388 use diesel::sql_types::*;
389 use super::sql_types::Quantity;
390 use super::sql_types::Quality;
391
392 seeds (id) {
393 id -> Int8,
394 name -> Text,
395 harvest_year -> Int2,
396 use_by -> Nullable<Date>,
397 origin -> Nullable<Text>,
398 taste -> Nullable<Text>,
399 #[sql_name = "yield"]
400 yield_ -> Nullable<Text>,
401 quantity -> Quantity,
402 quality -> Nullable<Quality>,
403 price -> Nullable<Int2>,
404 generation -> Nullable<Int2>,
405 notes -> Nullable<Text>,
406 plant_id -> Nullable<Int8>,
407 created_by -> Uuid,
408 archived_at -> Nullable<Timestamp>,
409 }
410}
411
412diesel::table! {
413 use postgis_diesel::sql_types::Geography;
414 use postgis_diesel::sql_types::Geometry;
415 use diesel::sql_types::*;
416 use super::sql_types::Shade;
417
418 shadings (id) {
419 id -> Uuid,
420 layer_id -> Uuid,
421 shade -> Shade,
422 geometry -> Geometry,
423 add_date -> Nullable<Date>,
424 remove_date -> Nullable<Date>,
425 notes -> Text,
426 created_at -> Timestamp,
427 modified_at -> Timestamp,
428 created_by -> Uuid,
429 modified_by -> Uuid,
430 }
431}
432
433diesel::table! {
434 use postgis_diesel::sql_types::Geography;
435 use postgis_diesel::sql_types::Geometry;
436 use diesel::sql_types::*;
437 use super::sql_types::SoilTexture;
438
439 soil_textures (id) {
440 id -> Uuid,
441 layer_id -> Uuid,
442 soil_texture -> SoilTexture,
443 geometry -> Geometry,
444 add_date -> Nullable<Date>,
445 remove_date -> Nullable<Date>,
446 notes -> Text,
447 created_at -> Timestamp,
448 modified_at -> Timestamp,
449 created_by -> Uuid,
450 modified_by -> Uuid,
451 }
452}
453
454diesel::table! {
455 use postgis_diesel::sql_types::Geography;
456 use diesel::sql_types::*;
457 use super::sql_types::SpatialRelationType;
458
459 spatial_relations (plant1, plant2) {
460 plant1 -> Int8,
461 plant2 -> Int8,
462 relation -> SpatialRelationType,
463 note -> Nullable<Text>,
464 }
465}
466
467diesel::table! {
468 use postgis_diesel::sql_types::Geography;
469 use diesel::sql_types::*;
470 use super::sql_types::TemporalRelationEffect;
471
472 temporal_relations (plant_earlier, plant_later) {
473 plant_earlier -> Int8,
474 plant_later -> Int8,
475 min_duration -> Nullable<Int4>,
476 max_duration -> Nullable<Int4>,
477 effect -> Nullable<TemporalRelationEffect>,
478 }
479}
480
481diesel::joinable!(base_layer_images -> layers (layer_id));
482diesel::joinable!(bezier_polygon_points -> bezier_polygon_props (id));
483diesel::joinable!(bezier_polygon_props -> drawings (drawings_id));
484diesel::joinable!(drawings -> layers (layer_id));
485diesel::joinable!(ellipse_props -> drawings (drawings_id));
486diesel::joinable!(free_line_points -> free_line_props (id));
487diesel::joinable!(free_line_props -> drawings (drawings_id));
488diesel::joinable!(hydrologies -> layers (layer_id));
489diesel::joinable!(image_props -> drawings (drawings_id));
490diesel::joinable!(label_text_props -> drawings (drawings_id));
491diesel::joinable!(layers -> maps (map_id));
492diesel::joinable!(map_collaborators -> maps (map_id));
493diesel::joinable!(plantings -> layers (layer_id));
494diesel::joinable!(plantings -> plants (plant_id));
495diesel::joinable!(plantings -> seeds (seed_id));
496diesel::joinable!(rectangle_props -> drawings (drawings_id));
497diesel::joinable!(seeds -> plants (plant_id));
498diesel::joinable!(shadings -> layers (layer_id));
499diesel::joinable!(soil_textures -> layers (layer_id));
500
501diesel::allow_tables_to_appear_in_same_query!(
502 application_settings,
503 base_layer_images,
504 bezier_polygon_points,
505 bezier_polygon_props,
506 drawings,
507 ellipse_props,
508 free_line_points,
509 free_line_props,
510 guided_tour_progress,
511 guided_tour_states,
512 hydrologies,
513 image_props,
514 label_text_props,
515 layers,
516 map_collaborators,
517 maps,
518 plantings,
519 plants,
520 rectangle_props,
521 seeds,
522 shadings,
523 soil_textures,
524 spatial_relations,
525 temporal_relations,
526);