media_image.rs (4007B)
1 use radroots_types::types::{IResult, IResultList}; 2 use serde::{Deserialize, Serialize}; 3 use serde_json::Value; 4 #[derive(Serialize, Deserialize)] 5 pub struct MediaImage { 6 pub id: String, 7 pub created_at: String, 8 pub updated_at: String, 9 pub file_path: String, 10 pub mime_type: String, 11 pub res_base: String, 12 pub res_path: String, 13 pub label: Option<String>, 14 pub description: Option<String>, 15 } 16 #[derive(Clone, Deserialize, Serialize)] 17 pub struct IMediaImageFields { 18 pub file_path: String, 19 pub mime_type: String, 20 pub res_base: String, 21 pub res_path: String, 22 pub label: Option<String>, 23 pub description: Option<String>, 24 } 25 #[derive(Clone, Deserialize, Serialize)] 26 pub struct IMediaImageFieldsPartial { 27 pub file_path: Option<serde_json::Value>, 28 pub mime_type: Option<serde_json::Value>, 29 pub res_base: Option<serde_json::Value>, 30 pub res_path: Option<serde_json::Value>, 31 pub label: Option<serde_json::Value>, 32 pub description: Option<serde_json::Value>, 33 } 34 #[derive(Clone, Deserialize, Serialize)] 35 pub struct IMediaImageFieldsFilter { 36 pub id: Option<String>, 37 pub created_at: Option<String>, 38 pub updated_at: Option<String>, 39 pub file_path: Option<String>, 40 pub mime_type: Option<String>, 41 pub res_base: Option<String>, 42 pub res_path: Option<String>, 43 pub label: Option<String>, 44 pub description: Option<String>, 45 } 46 #[derive(Clone, Deserialize, Serialize)] 47 #[serde(untagged)] 48 pub enum MediaImageQueryBindValues { 49 Id { id: String }, 50 FilePath { file_path: String }, 51 } 52 impl MediaImageQueryBindValues { 53 pub fn to_filter_param(&self) -> (&'static str, Value) { 54 match self { 55 Self::Id { id } => ("id", Value::from(id.clone())), 56 Self::FilePath { file_path } => ("file_path", Value::from(file_path.clone())), 57 } 58 } 59 60 pub fn primary_key(&self) -> Option<String> { 61 match self { 62 Self::Id { id } => Some(id.clone()), 63 _ => None, 64 } 65 } 66 67 pub fn lookup_key(&self) -> String { 68 match self { 69 Self::Id { id } => id.clone(), 70 Self::FilePath { file_path } => file_path.clone(), 71 } 72 } 73 } 74 #[derive(Clone, Deserialize, Serialize)] 75 pub struct MediaImageTradeProductArgs { 76 pub id: String, 77 } 78 79 #[derive(Clone, Deserialize, Serialize)] 80 pub enum MediaImageFindManyRel { 81 #[serde(rename = "on_trade_product")] 82 OnTradeProduct(MediaImageTradeProductArgs), 83 #[serde(rename = "off_trade_product")] 84 OffTradeProduct(MediaImageTradeProductArgs), 85 } 86 87 pub struct IMediaImageCreateTs; 88 pub type IMediaImageCreate = IMediaImageFields; 89 pub struct IMediaImageCreateResolveTs; 90 pub type IMediaImageCreateResolve = IResult<MediaImage>; 91 #[derive(Deserialize, Serialize)] 92 pub struct IMediaImageFindOneArgs { 93 pub on: MediaImageQueryBindValues, 94 } 95 96 #[derive(Deserialize, Serialize)] 97 pub struct IMediaImageFindOneRelArgs { 98 pub rel: MediaImageFindManyRel, 99 } 100 101 #[derive(Deserialize, Serialize)] 102 #[serde(untagged)] 103 pub enum IMediaImageFindOne { 104 On(IMediaImageFindOneArgs), 105 Rel(IMediaImageFindOneRelArgs), 106 } 107 108 pub struct IMediaImageFindOneResolveTs; 109 pub type IMediaImageFindOneResolve = IResult<Option<MediaImage>>; 110 #[derive(Deserialize, Serialize)] 111 #[serde(untagged)] 112 pub enum IMediaImageFindMany { 113 Filter { 114 filter: Option<IMediaImageFieldsFilter>, 115 }, 116 Rel { 117 rel: MediaImageFindManyRel, 118 }, 119 } 120 pub struct IMediaImageFindManyResolveTs; 121 pub type IMediaImageFindManyResolve = IResultList<MediaImage>; 122 pub struct IMediaImageDeleteTs; 123 pub type IMediaImageDelete = IMediaImageFindOne; 124 pub struct IMediaImageDeleteResolveTs; 125 pub type IMediaImageDeleteResolve = IResult<String>; 126 #[derive(Deserialize, Serialize)] 127 pub struct IMediaImageUpdateArgs { 128 pub on: MediaImageQueryBindValues, 129 pub fields: IMediaImageFieldsPartial, 130 } 131 pub type IMediaImageUpdate = IMediaImageUpdateArgs; 132 pub struct IMediaImageUpdateResolveTs; 133 pub type IMediaImageUpdateResolve = IResult<MediaImage>;