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