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 = "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 }
140}
141
142diesel::table! {
143 use postgis_diesel::sql_types::Geography;
144 use diesel::sql_types::*;
145
146 gained_blossoms (user_id, blossom) {
147 user_id -> Uuid,
148 blossom -> Text,
149 times_gained -> Int4,
150 gained_date -> Date,
151 }
152}
153
154diesel::table! {
155 use postgis_diesel::sql_types::Geography;
156 use diesel::sql_types::*;
157
158 guided_tours (user_id) {
159 user_id -> Uuid,
160 editor_tour_completed -> Bool,
161 }
162}
163
164diesel::table! {
165 use postgis_diesel::sql_types::Geography;
166 use postgis_diesel::sql_types::Geometry;
167 use diesel::sql_types::*;
168 use super::sql_types::WaterRequirement;
169
170 hydrologies (id) {
171 id -> Uuid,
172 layer_id -> Uuid,
173 water_requirement -> WaterRequirement,
174 geometry -> Geometry,
175 add_date -> Nullable<Date>,
176 remove_date -> Nullable<Date>,
177 notes -> Text,
178 }
179}
180
181diesel::table! {
182 use postgis_diesel::sql_types::Geography;
183 use diesel::sql_types::*;
184 use super::sql_types::LayerType;
185
186 layers (id) {
187 map_id -> Int4,
188 #[sql_name = "type"]
189 type_ -> LayerType,
190 name -> Text,
191 is_alternative -> Bool,
192 id -> Uuid,
193 marked_deleted -> Nullable<Timestamp>,
194 order_index -> Int4,
195 }
196}
197
198diesel::table! {
199 use postgis_diesel::sql_types::Geography;
200 use diesel::sql_types::*;
201
202 map_collaborators (map_id, user_id) {
203 map_id -> Int4,
204 user_id -> Uuid,
205 created_at -> Timestamp,
206 }
207}
208
209diesel::table! {
210 use postgis_diesel::sql_types::Geography;
211 use postgis_diesel::sql_types::Geometry;
212 use diesel::sql_types::*;
213 use super::sql_types::PrivacyOption;
214
215 maps (id) {
216 id -> Int4,
217 name -> Text,
218 deletion_date -> Nullable<Date>,
219 last_visit -> Nullable<Date>,
220 is_inactive -> Bool,
221 zoom_factor -> Int2,
222 honors -> Int2,
223 visits -> Int2,
224 harvested -> Int2,
225 privacy -> PrivacyOption,
226 description -> Nullable<Text>,
227 location -> Nullable<Geography>,
228 created_by -> Uuid,
229 geometry -> Geometry,
230 created_at -> Timestamp,
231 modified_at -> Timestamp,
232 modified_by -> Uuid,
233 }
234}
235
236diesel::table! {
237 use postgis_diesel::sql_types::Geography;
238 use diesel::sql_types::*;
239
240 plantings (id) {
241 id -> Uuid,
242 plant_id -> Int4,
243 x -> Int4,
244 y -> Int4,
245 size_x -> Int4,
246 size_y -> Int4,
247 rotation -> Float4,
248 add_date -> Nullable<Date>,
249 remove_date -> Nullable<Date>,
250 seed_id -> Nullable<Int4>,
251 is_area -> Bool,
252 notes -> Text,
253 created_at -> Timestamp,
254 modified_at -> Timestamp,
255 created_by -> Uuid,
256 modified_by -> Uuid,
257 layer_id -> Uuid,
258 height -> Nullable<Int4>,
259 }
260}
261
262diesel::table! {
263 use postgis_diesel::sql_types::Geography;
264 use diesel::sql_types::*;
265 use super::sql_types::Shade;
266 use super::sql_types::SoilTexture;
267 use super::sql_types::HerbaceousOrWoody;
268 use super::sql_types::LifeCycle;
269 use super::sql_types::LightRequirement;
270 use super::sql_types::WaterRequirement;
271 use super::sql_types::TaxonomicRank;
272
273 plants (id) {
274 id -> Int4,
275 unique_name -> Text,
276 common_name_en -> Nullable<Array<Nullable<Text>>>,
277 common_name_de -> Nullable<Array<Nullable<Text>>>,
278 functions -> Nullable<Text>,
279 shade -> Nullable<Shade>,
280 soil_texture -> Nullable<Array<Nullable<SoilTexture>>>,
281 herbaceous_or_woody -> Nullable<HerbaceousOrWoody>,
282 life_cycle -> Nullable<Array<Nullable<LifeCycle>>>,
283 height -> Nullable<Int4>,
284 created_at -> Timestamp,
285 updated_at -> Timestamp,
286 has_drought_tolerance -> Nullable<Bool>,
287 hardiness_zone -> Nullable<Text>,
288 light_requirement -> Nullable<Array<Nullable<LightRequirement>>>,
289 water_requirement -> Nullable<Array<Nullable<WaterRequirement>>>,
290 edible -> Nullable<Bool>,
291 edible_parts -> Nullable<Array<Nullable<Text>>>,
292 spread -> Nullable<Int4>,
293 warning -> Nullable<Text>,
294 version -> Nullable<Int2>,
295 sowing_outdoors -> Nullable<Array<Nullable<Int2>>>,
296 harvest_time -> Nullable<Array<Nullable<Int2>>>,
297 rank -> Nullable<TaxonomicRank>,
298 family -> Nullable<Int4>,
299 genus -> Nullable<Int4>,
300 species -> Nullable<Int4>,
301 variety -> Nullable<Int4>,
302 }
303}
304
305diesel::table! {
306 use postgis_diesel::sql_types::Geography;
307 use diesel::sql_types::*;
308 use super::sql_types::Quantity;
309 use super::sql_types::Quality;
310
311 seeds (id) {
312 id -> Int4,
313 name -> Text,
314 harvest_year -> Int2,
315 use_by -> Nullable<Date>,
316 origin -> Nullable<Text>,
317 taste -> Nullable<Text>,
318 #[sql_name = "yield"]
319 yield_ -> Nullable<Text>,
320 quantity -> Quantity,
321 quality -> Nullable<Quality>,
322 price -> Nullable<Int2>,
323 generation -> Nullable<Int2>,
324 notes -> Nullable<Text>,
325 plant_id -> Nullable<Int4>,
326 created_by -> Uuid,
327 archived_at -> Nullable<Timestamp>,
328 }
329}
330
331diesel::table! {
332 use postgis_diesel::sql_types::Geography;
333 use postgis_diesel::sql_types::Geometry;
334 use diesel::sql_types::*;
335 use super::sql_types::Shade;
336
337 shadings (id) {
338 id -> Uuid,
339 layer_id -> Uuid,
340 shade -> Shade,
341 geometry -> Geometry,
342 add_date -> Nullable<Date>,
343 remove_date -> Nullable<Date>,
344 notes -> Text,
345 }
346}
347
348diesel::table! {
349 use postgis_diesel::sql_types::Geography;
350 use postgis_diesel::sql_types::Geometry;
351 use diesel::sql_types::*;
352 use super::sql_types::SoilTexture;
353
354 soil_textures (id) {
355 id -> Uuid,
356 layer_id -> Uuid,
357 soil_texture -> SoilTexture,
358 geometry -> Geometry,
359 add_date -> Nullable<Date>,
360 remove_date -> Nullable<Date>,
361 notes -> Text,
362 }
363}
364
365diesel::table! {
366 use postgis_diesel::sql_types::Geography;
367 use diesel::sql_types::*;
368 use super::sql_types::SpatialRelationType;
369
370 spatial_relations (plant1, plant2) {
371 plant1 -> Int4,
372 plant2 -> Int4,
373 relation -> SpatialRelationType,
374 note -> Nullable<Text>,
375 }
376}
377
378diesel::table! {
379 use postgis_diesel::sql_types::Geography;
380 use diesel::sql_types::*;
381 use super::sql_types::TemporalRelationEffect;
382
383 temporal_relation (plant_earlier, plant_later) {
384 plant_earlier -> Int4,
385 plant_later -> Int4,
386 min_duration -> Nullable<Int4>,
387 max_duration -> Nullable<Int4>,
388 effect -> Nullable<TemporalRelationEffect>,
389 }
390}
391
392diesel::table! {
393 use postgis_diesel::sql_types::Geography;
394 use diesel::sql_types::*;
395 use super::sql_types::Salutation;
396 use super::sql_types::Experience;
397 use super::sql_types::Membership;
398
399 users (id) {
400 id -> Uuid,
401 salutation -> Salutation,
402 title -> Nullable<Text>,
403 country -> Text,
404 phone -> Nullable<Text>,
405 website -> Nullable<Text>,
406 organization -> Nullable<Text>,
407 experience -> Nullable<Experience>,
408 membership -> Nullable<Membership>,
409 member_years -> Nullable<Array<Nullable<Int4>>>,
410 member_since -> Nullable<Date>,
411 permacoins -> Nullable<Array<Nullable<Int4>>>,
412 }
413}
414
415diesel::joinable!(base_layer_images -> layers (layer_id));
416diesel::joinable!(drawings -> layers (layer_id));
417diesel::joinable!(hydrologies -> layers (layer_id));
418diesel::joinable!(layers -> maps (map_id));
419diesel::joinable!(map_collaborators -> maps (map_id));
420diesel::joinable!(plantings -> layers (layer_id));
421diesel::joinable!(plantings -> plants (plant_id));
422diesel::joinable!(plantings -> seeds (seed_id));
423diesel::joinable!(seeds -> plants (plant_id));
424diesel::joinable!(shadings -> layers (layer_id));
425diesel::joinable!(soil_textures -> layers (layer_id));
426
427diesel::allow_tables_to_appear_in_same_query!(
428 application_settings,
429 base_layer_images,
430 blossoms,
431 drawings,
432 gained_blossoms,
433 guided_tours,
434 hydrologies,
435 layers,
436 map_collaborators,
437 maps,
438 plantings,
439 plants,
440 seeds,
441 shadings,
442 soil_textures,
443 spatial_relations,
444 temporal_relation,
445 users,
446);