lib

Core libraries for Radroots
git clone https://radroots.dev/git/lib.git
Log | Files | Refs | README | LICENSE

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>;