1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
//! All entities associated with [`Planting`].
use chrono::{NaiveDate, NaiveDateTime};
use diesel::{AsChangeset, Identifiable, Insertable, Queryable};
use uuid::Uuid;
use crate::schema::plantings;
/// The `Planting` entity.
#[derive(Debug, Clone, Identifiable, Queryable)]
#[diesel(table_name = plantings)]
pub struct Planting {
/// The id of the planting.
pub id: Uuid,
/// The plant that is planted.
pub plant_id: i32,
/// The x coordinate of the position on the map.
pub x: i32,
/// The y coordinate of the position on the map.
pub y: i32,
/// The size of the planting on the map in x direction.
pub size_x: i32,
/// The size of the planting on the map in y direction.
pub size_y: i32,
/// The rotation in degrees (0-360) of the plant on the map.
pub rotation: f32,
/// The date the planting was added to the map.
/// If None, the planting always existed.
pub add_date: Option<NaiveDate>,
/// The date the planting was removed from the map.
/// If None, the planting is still on the map.
pub remove_date: Option<NaiveDate>,
/// Plantings may be linked with a seed.
pub seed_id: Option<i32>,
/// Is the planting an area of plants.
pub is_area: bool,
/*
/// The date the planting was created.
//pub create_date: NaiveDate,
/// The date the planting was 'soft' deleted
/// and is still able to be restored.
//pub delete_date: Option<NaiveDate>,
*/
/// Notes about the planting in Markdown.
pub notes: String,
/// The datetime the planting was created.
pub created_at: NaiveDateTime,
/// The datetime the planting was last modified.
pub modified_at: NaiveDateTime,
/// The uuid of the user that created the planting.
pub created_by: Uuid,
/// The uuid of the user that last modified the planting.
pub modified_by: Uuid,
/// The plant layer the plantings is on.
pub layer_id: Uuid,
}
/// The `NewPlanting` entity.
#[derive(Insertable)]
#[diesel(table_name = plantings)]
pub struct NewPlanting {
/// The id of the planting (set by the frontend)
pub id: Uuid,
/// The plant that is planted.
pub plant_id: i32,
/// The x coordinate of the position on the map.
pub x: i32,
/// The y coordinate of the position on the map.
pub y: i32,
/// The size of the planting on the map in x direction.
pub size_x: i32,
/// The size of the planting on the map in y direction.
pub size_y: i32,
/// The rotation in degrees (0-360) of the plant on the map.
pub rotation: f32,
/// The date the planting was added to the map.
/// If None, the planting always existed.
pub add_date: Option<NaiveDate>,
/// The date the planting was removed from the map.
/// If None, the planting is still on the map.
pub remove_date: Option<NaiveDate>,
/// Plantings may be linked with a seed.
pub seed_id: Option<i32>,
/// Is the planting an area of plants.
pub is_area: bool,
/// The uuid of the user that created the planting.
pub created_by: Uuid,
/// The user who last modified the planting.
pub modified_by: Uuid,
/// The plant layer the plantings is on.
pub layer_id: Uuid,
}
/// The `UpdatePlanting` entity.
#[derive(Debug, Clone, Default, AsChangeset)]
#[diesel(table_name = plantings)]
pub struct UpdatePlanting {
/// The id of the planting.
/// This is not updated.
pub id: Uuid,
/// The x coordinate of the position on the map.
pub x: Option<i32>,
/// The y coordinate of the position on the map.
pub y: Option<i32>,
/// The size of the planting on the map in x direction.
pub size_x: Option<i32>,
/// The size of the planting on the map in y direction.
pub size_y: Option<i32>,
/// The rotation of the plant on the map.
pub rotation: Option<f32>,
/// The date the planting was added to the map.
pub add_date: Option<Option<NaiveDate>>,
/// The date the planting was removed from the map.
pub remove_date: Option<Option<NaiveDate>>,
/// Plantings may be linked with a seed.
pub seed_id: Option<i32>,
/// Notes about the planting in Markdown.
pub notes: Option<String>,
}