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