lib

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

query_bind_values.rs (9261B)


      1 use radroots_replica_db_schema::farm::FarmQueryBindValues;
      2 use radroots_replica_db_schema::farm_gcs_location::FarmGcsLocationQueryBindValues;
      3 use radroots_replica_db_schema::farm_member::FarmMemberQueryBindValues;
      4 use radroots_replica_db_schema::farm_member_claim::FarmMemberClaimQueryBindValues;
      5 use radroots_replica_db_schema::farm_tag::FarmTagQueryBindValues;
      6 use radroots_replica_db_schema::gcs_location::GcsLocationQueryBindValues;
      7 use radroots_replica_db_schema::log_error::LogErrorQueryBindValues;
      8 use radroots_replica_db_schema::media_image::MediaImageQueryBindValues;
      9 use radroots_replica_db_schema::nostr_event_head::NostrEventHeadQueryBindValues;
     10 use radroots_replica_db_schema::nostr_profile::NostrProfileQueryBindValues;
     11 use radroots_replica_db_schema::nostr_relay::NostrRelayQueryBindValues;
     12 use radroots_replica_db_schema::plot::PlotQueryBindValues;
     13 use radroots_replica_db_schema::plot_gcs_location::PlotGcsLocationQueryBindValues;
     14 use radroots_replica_db_schema::plot_tag::PlotTagQueryBindValues;
     15 use radroots_replica_db_schema::trade_product::TradeProductQueryBindValues;
     16 use serde_json::Value;
     17 
     18 macro_rules! assert_query_bind_values {
     19     ($test_name:ident, $id_expr:expr, $id_param:literal, $id_lookup:literal, [$(($expr:expr, $param:literal, $lookup:literal)),* $(,)?]) => {
     20         #[test]
     21         fn $test_name() {
     22             let id_case = $id_expr;
     23             let (id_param, id_value) = id_case.to_filter_param();
     24             assert_eq!(id_param, $id_param);
     25             assert_eq!(id_value, Value::from($id_lookup.to_string()));
     26             assert_eq!(id_case.primary_key(), Some($id_lookup.to_string()));
     27             assert_eq!(id_case.lookup_key(), $id_lookup.to_string());
     28 
     29             $(
     30                 let alt_case = $expr;
     31                 let (alt_param, alt_value) = alt_case.to_filter_param();
     32                 assert_eq!(alt_param, $param);
     33                 assert_eq!(alt_value, Value::from($lookup.to_string()));
     34                 assert_eq!(alt_case.primary_key(), None);
     35                 assert_eq!(alt_case.lookup_key(), $lookup.to_string());
     36             )*
     37         }
     38     };
     39 }
     40 
     41 assert_query_bind_values!(
     42     farm_query_bind_values_cover_all_variants,
     43     FarmQueryBindValues::Id {
     44         id: "farm-id".to_string()
     45     },
     46     "id",
     47     "farm-id",
     48     [
     49         (
     50             FarmQueryBindValues::DTag {
     51                 d_tag: "farm-d".to_string()
     52             },
     53             "d_tag",
     54             "farm-d"
     55         ),
     56         (
     57             FarmQueryBindValues::Pubkey {
     58                 pubkey: "farm-pk".to_string()
     59             },
     60             "pubkey",
     61             "farm-pk"
     62         ),
     63     ]
     64 );
     65 
     66 assert_query_bind_values!(
     67     farm_gcs_location_query_bind_values_cover_all_variants,
     68     FarmGcsLocationQueryBindValues::Id {
     69         id: "farm-gcs-id".to_string()
     70     },
     71     "id",
     72     "farm-gcs-id",
     73     [
     74         (
     75             FarmGcsLocationQueryBindValues::FarmId {
     76                 farm_id: "farm-id".to_string()
     77             },
     78             "farm_id",
     79             "farm-id"
     80         ),
     81         (
     82             FarmGcsLocationQueryBindValues::GcsLocationId {
     83                 gcs_location_id: "gcs-id".to_string()
     84             },
     85             "gcs_location_id",
     86             "gcs-id"
     87         ),
     88     ]
     89 );
     90 
     91 assert_query_bind_values!(
     92     farm_member_query_bind_values_cover_all_variants,
     93     FarmMemberQueryBindValues::Id {
     94         id: "farm-member-id".to_string()
     95     },
     96     "id",
     97     "farm-member-id",
     98     [
     99         (
    100             FarmMemberQueryBindValues::FarmId {
    101                 farm_id: "farm-id".to_string()
    102             },
    103             "farm_id",
    104             "farm-id"
    105         ),
    106         (
    107             FarmMemberQueryBindValues::MemberPubkey {
    108                 member_pubkey: "member-pk".to_string()
    109             },
    110             "member_pubkey",
    111             "member-pk"
    112         ),
    113     ]
    114 );
    115 
    116 assert_query_bind_values!(
    117     farm_member_claim_query_bind_values_cover_all_variants,
    118     FarmMemberClaimQueryBindValues::Id {
    119         id: "farm-member-claim-id".to_string()
    120     },
    121     "id",
    122     "farm-member-claim-id",
    123     [
    124         (
    125             FarmMemberClaimQueryBindValues::MemberPubkey {
    126                 member_pubkey: "member-pk".to_string()
    127             },
    128             "member_pubkey",
    129             "member-pk"
    130         ),
    131         (
    132             FarmMemberClaimQueryBindValues::FarmPubkey {
    133                 farm_pubkey: "farm-pk".to_string()
    134             },
    135             "farm_pubkey",
    136             "farm-pk"
    137         ),
    138     ]
    139 );
    140 
    141 assert_query_bind_values!(
    142     farm_tag_query_bind_values_cover_all_variants,
    143     FarmTagQueryBindValues::Id {
    144         id: "farm-tag-id".to_string()
    145     },
    146     "id",
    147     "farm-tag-id",
    148     [
    149         (
    150             FarmTagQueryBindValues::FarmId {
    151                 farm_id: "farm-id".to_string()
    152             },
    153             "farm_id",
    154             "farm-id"
    155         ),
    156         (
    157             FarmTagQueryBindValues::Tag {
    158                 tag: "organic".to_string()
    159             },
    160             "tag",
    161             "organic"
    162         ),
    163     ]
    164 );
    165 
    166 assert_query_bind_values!(
    167     gcs_location_query_bind_values_cover_all_variants,
    168     GcsLocationQueryBindValues::Id {
    169         id: "gcs-location-id".to_string()
    170     },
    171     "id",
    172     "gcs-location-id",
    173     [
    174         (
    175             GcsLocationQueryBindValues::DTag {
    176                 d_tag: "gcs-d".to_string()
    177             },
    178             "d_tag",
    179             "gcs-d"
    180         ),
    181         (
    182             GcsLocationQueryBindValues::Geohash {
    183                 geohash: "9q8yy".to_string()
    184             },
    185             "geohash",
    186             "9q8yy"
    187         ),
    188     ]
    189 );
    190 
    191 assert_query_bind_values!(
    192     log_error_query_bind_values_cover_all_variants,
    193     LogErrorQueryBindValues::Id {
    194         id: "log-error-id".to_string()
    195     },
    196     "id",
    197     "log-error-id",
    198     [(
    199         LogErrorQueryBindValues::NostrPubkey {
    200             nostr_pubkey: "nostr-pk".to_string()
    201         },
    202         "nostr_pubkey",
    203         "nostr-pk"
    204     ),]
    205 );
    206 
    207 assert_query_bind_values!(
    208     media_image_query_bind_values_cover_all_variants,
    209     MediaImageQueryBindValues::Id {
    210         id: "media-image-id".to_string()
    211     },
    212     "id",
    213     "media-image-id",
    214     [(
    215         MediaImageQueryBindValues::FilePath {
    216             file_path: "/tmp/a.jpg".to_string()
    217         },
    218         "file_path",
    219         "/tmp/a.jpg"
    220     ),]
    221 );
    222 
    223 assert_query_bind_values!(
    224     nostr_event_head_query_bind_values_cover_all_variants,
    225     NostrEventHeadQueryBindValues::Id {
    226         id: "nostr-event-state-id".to_string()
    227     },
    228     "id",
    229     "nostr-event-state-id",
    230     [(
    231         NostrEventHeadQueryBindValues::Key {
    232             key: "event-key".to_string()
    233         },
    234         "key",
    235         "event-key"
    236     ),]
    237 );
    238 
    239 assert_query_bind_values!(
    240     nostr_profile_query_bind_values_cover_all_variants,
    241     NostrProfileQueryBindValues::Id {
    242         id: "nostr-profile-id".to_string()
    243     },
    244     "id",
    245     "nostr-profile-id",
    246     [(
    247         NostrProfileQueryBindValues::PublicKey {
    248             public_key: "nostr-public-key".to_string()
    249         },
    250         "public_key",
    251         "nostr-public-key"
    252     ),]
    253 );
    254 
    255 assert_query_bind_values!(
    256     nostr_relay_query_bind_values_cover_all_variants,
    257     NostrRelayQueryBindValues::Id {
    258         id: "nostr-relay-id".to_string()
    259     },
    260     "id",
    261     "nostr-relay-id",
    262     [(
    263         NostrRelayQueryBindValues::Url {
    264             url: "wss://relay.example.com".to_string()
    265         },
    266         "url",
    267         "wss://relay.example.com"
    268     ),]
    269 );
    270 
    271 assert_query_bind_values!(
    272     plot_query_bind_values_cover_all_variants,
    273     PlotQueryBindValues::Id {
    274         id: "plot-id".to_string()
    275     },
    276     "id",
    277     "plot-id",
    278     [
    279         (
    280             PlotQueryBindValues::DTag {
    281                 d_tag: "plot-d".to_string()
    282             },
    283             "d_tag",
    284             "plot-d"
    285         ),
    286         (
    287             PlotQueryBindValues::FarmId {
    288                 farm_id: "farm-id".to_string()
    289             },
    290             "farm_id",
    291             "farm-id"
    292         ),
    293     ]
    294 );
    295 
    296 assert_query_bind_values!(
    297     plot_gcs_location_query_bind_values_cover_all_variants,
    298     PlotGcsLocationQueryBindValues::Id {
    299         id: "plot-gcs-id".to_string()
    300     },
    301     "id",
    302     "plot-gcs-id",
    303     [
    304         (
    305             PlotGcsLocationQueryBindValues::PlotId {
    306                 plot_id: "plot-id".to_string()
    307             },
    308             "plot_id",
    309             "plot-id"
    310         ),
    311         (
    312             PlotGcsLocationQueryBindValues::GcsLocationId {
    313                 gcs_location_id: "gcs-id".to_string()
    314             },
    315             "gcs_location_id",
    316             "gcs-id"
    317         ),
    318     ]
    319 );
    320 
    321 assert_query_bind_values!(
    322     plot_tag_query_bind_values_cover_all_variants,
    323     PlotTagQueryBindValues::Id {
    324         id: "plot-tag-id".to_string()
    325     },
    326     "id",
    327     "plot-tag-id",
    328     [
    329         (
    330             PlotTagQueryBindValues::PlotId {
    331                 plot_id: "plot-id".to_string()
    332             },
    333             "plot_id",
    334             "plot-id"
    335         ),
    336         (
    337             PlotTagQueryBindValues::Tag {
    338                 tag: "steep".to_string()
    339             },
    340             "tag",
    341             "steep"
    342         ),
    343     ]
    344 );
    345 
    346 assert_query_bind_values!(
    347     trade_product_query_bind_values_cover_all_variants,
    348     TradeProductQueryBindValues::Id {
    349         id: "trade-product-id".to_string()
    350     },
    351     "id",
    352     "trade-product-id",
    353     []
    354 );