farm.rs (4159B)
1 use radroots_types::types::{IResult, IResultList}; 2 use serde::{Deserialize, Serialize}; 3 use serde_json::Value; 4 5 #[derive(Serialize, Deserialize)] 6 pub struct Farm { 7 pub id: String, 8 pub created_at: String, 9 pub updated_at: String, 10 pub d_tag: String, 11 pub pubkey: String, 12 pub name: String, 13 pub about: Option<String>, 14 pub website: Option<String>, 15 pub picture: Option<String>, 16 pub banner: Option<String>, 17 pub location_primary: Option<String>, 18 pub location_city: Option<String>, 19 pub location_region: Option<String>, 20 pub location_country: Option<String>, 21 } 22 23 #[derive(Clone, Deserialize, Serialize)] 24 pub struct IFarmFields { 25 pub d_tag: String, 26 pub pubkey: String, 27 pub name: String, 28 pub about: Option<String>, 29 pub website: Option<String>, 30 pub picture: Option<String>, 31 pub banner: Option<String>, 32 pub location_primary: Option<String>, 33 pub location_city: Option<String>, 34 pub location_region: Option<String>, 35 pub location_country: Option<String>, 36 } 37 38 #[derive(Clone, Deserialize, Serialize)] 39 pub struct IFarmFieldsPartial { 40 pub d_tag: Option<serde_json::Value>, 41 pub pubkey: Option<serde_json::Value>, 42 pub name: Option<serde_json::Value>, 43 pub about: Option<serde_json::Value>, 44 pub website: Option<serde_json::Value>, 45 pub picture: Option<serde_json::Value>, 46 pub banner: Option<serde_json::Value>, 47 pub location_primary: Option<serde_json::Value>, 48 pub location_city: Option<serde_json::Value>, 49 pub location_region: Option<serde_json::Value>, 50 pub location_country: Option<serde_json::Value>, 51 } 52 53 #[derive(Clone, Deserialize, Serialize)] 54 pub struct IFarmFieldsFilter { 55 pub id: Option<String>, 56 pub created_at: Option<String>, 57 pub updated_at: Option<String>, 58 pub d_tag: Option<String>, 59 pub pubkey: Option<String>, 60 pub name: Option<String>, 61 pub about: Option<String>, 62 pub website: Option<String>, 63 pub picture: Option<String>, 64 pub banner: Option<String>, 65 pub location_primary: Option<String>, 66 pub location_city: Option<String>, 67 pub location_region: Option<String>, 68 pub location_country: Option<String>, 69 } 70 71 #[derive(Clone, Deserialize, Serialize)] 72 #[serde(untagged)] 73 pub enum FarmQueryBindValues { 74 Id { id: String }, 75 DTag { d_tag: String }, 76 Pubkey { pubkey: String }, 77 } 78 impl FarmQueryBindValues { 79 pub fn to_filter_param(&self) -> (&'static str, Value) { 80 match self { 81 Self::Id { id } => ("id", Value::from(id.clone())), 82 Self::DTag { d_tag } => ("d_tag", Value::from(d_tag.clone())), 83 Self::Pubkey { pubkey } => ("pubkey", Value::from(pubkey.clone())), 84 } 85 } 86 87 pub fn primary_key(&self) -> Option<String> { 88 match self { 89 Self::Id { id } => Some(id.clone()), 90 _ => None, 91 } 92 } 93 94 pub fn lookup_key(&self) -> String { 95 match self { 96 Self::Id { id } => id.clone(), 97 Self::DTag { d_tag } => d_tag.clone(), 98 Self::Pubkey { pubkey } => pubkey.clone(), 99 } 100 } 101 } 102 103 pub struct IFarmCreateTs; 104 pub type IFarmCreate = IFarmFields; 105 pub struct IFarmCreateResolveTs; 106 pub type IFarmCreateResolve = IResult<Farm>; 107 #[derive(Deserialize, Serialize)] 108 pub struct IFarmFindOneArgs { 109 pub on: FarmQueryBindValues, 110 } 111 112 #[derive(Deserialize, Serialize)] 113 #[serde(untagged)] 114 pub enum IFarmFindOne { 115 On(IFarmFindOneArgs), 116 } 117 118 pub struct IFarmFindOneResolveTs; 119 pub type IFarmFindOneResolve = IResult<Option<Farm>>; 120 #[derive(Deserialize, Serialize)] 121 pub struct IFarmFindManyArgs { 122 pub filter: Option<IFarmFieldsFilter>, 123 } 124 pub type IFarmFindMany = IFarmFindManyArgs; 125 pub struct IFarmFindManyResolveTs; 126 pub type IFarmFindManyResolve = IResultList<Farm>; 127 pub struct IFarmDeleteTs; 128 pub type IFarmDelete = IFarmFindOne; 129 pub struct IFarmDeleteResolveTs; 130 pub type IFarmDeleteResolve = IResult<String>; 131 #[derive(Deserialize, Serialize)] 132 pub struct IFarmUpdateArgs { 133 pub on: FarmQueryBindValues, 134 pub fields: IFarmFieldsPartial, 135 } 136 pub type IFarmUpdate = IFarmUpdateArgs; 137 pub struct IFarmUpdateResolveTs; 138 pub type IFarmUpdateResolve = IResult<Farm>;