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
use serde::{Deserialize, Serialize};
use utoipa::{IntoParams, ToSchema};
pub use svc_storage_client_grpc::prelude::{GeoLineString, GeoPoint, GeoPolygon};
pub use svc_storage_client_grpc::resources::{vehicle, vertipad, vertiport};
/// Status of an Asset.
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, Serialize, Deserialize, ToSchema)]
pub enum AssetStatus {
/// The asset is available for use.
Available,
/// The asset is unavailable for use.
Unavailable,
/// The asset is only available for emergencies.
Emergency,
}
/// Request to create an Asset Group.
#[derive(Debug, Clone, Serialize, Deserialize, ToSchema, IntoParams)]
pub struct RegisterAssetGroupPayload {
/// Optional identification name of the asset group
pub name: Option<String>,
/// The UUID of an Operator, if available.
pub owner: String,
/// A list of UUIDs of assets.
pub assets: Vec<String>,
}
/// Request to update an Aircraft.
#[derive(Debug, Clone, Serialize, Deserialize, ToSchema, IntoParams)]
pub struct UpdateAircraftPayload {
/// The UUID v4 of the Aircraft to update.
pub id: String,
/// The vehicle_model_id UUID v4, can be used to collect additional vehicle_model information.
pub vehicle_model_id: Option<String>,
/// optional id UUID v4 of the hangar (vertipad) this aircraft is assigned to
pub hangar_id: Option<String>,
/// optional id UUID v4 of the hangar bay (vertiport) this aircraft is assigned to
pub hangar_bay_id: Option<String>,
/// The Aircraft's unique serial_number given at the factory.
pub serial_number: Option<String>,
/// The Aircraft's registration number.
///
/// In the US, this is the N number.
///
/// This is a unique identifier for
/// the aircraft that can be used to look up information about the
/// aircraft from national aviation authorities like the FAA.
pub registration_number: Option<String>,
/// Optional additional description of the Aircraft.
pub description: Option<Option<String>>,
/// The UUID of an AssetGroup, if available.
pub asset_group_id: Option<Option<String>>,
/// Optional RRULE data string to indicate the Aircraft's available days and hours.
pub schedule: Option<Option<String>>,
/// Optional date of Aircraft's last maintenance.
pub last_maintenance: Option<Option<String>>,
/// Optional date of Aircraft's next planned maintenance.
pub next_maintenance: Option<Option<String>>,
/// List of fields that should be updated.
///
/// If any other fields are provided, they will be ignored.
pub mask: Vec<String>,
}
/// Request to update a Vertiport.
#[derive(Debug, Clone, Serialize, Deserialize, ToSchema, IntoParams)]
pub struct UpdateVertiportPayload {
/// The UUID v4 of the Vertiport to update.
pub id: String,
/// Identification name of the Vertiport.
pub name: Option<String>,
/// Additional description of the Vertiport.
pub description: Option<String>,
/// Geographical area location of the Vertiport.
pub geo_location: Option<GeoPolygon>,
/// Optional RRULE data string to indicate the Vertiport's available days and hours.
pub schedule: Option<Option<String>>,
/// List of fields that should be updated.
///
/// If any other fields are provided, they will be ignored.
pub mask: Vec<String>,
}
/// Request to update a Vertipad.
#[derive(Debug, Clone, Serialize, Deserialize, ToSchema, IntoParams)]
pub struct UpdateVertipadPayload {
/// The UUID v4 of the Vertipad to update.
pub id: String,
/// The UUID v4 of the Vertiport the Vertipad is located at.
pub vertiport_id: Option<String>,
/// Identification name of the Vertipad.
pub name: Option<String>,
/// Geographical location of the Vertipad.
pub geo_location: Option<GeoPoint>,
/// Indicates if the Vertipad is in business.
pub enabled: Option<bool>,
/// Indicates if the Vertipad is currently occupied.
pub occupied: Option<bool>,
/// Optional RRULE data string to indicate the Vertipad's available days and hours.
pub schedule: Option<Option<String>>,
/// List of fields that should be updated.
///
/// If any other fields are provided, they will be ignored.
pub mask: Vec<String>,
}