dto.rs (82374B)
1 use dto_bindgen_core::{ 2 BackendId, DefaultKind, EnumDef, EnumRepr, FieldDef, FieldPresence, IdentName, Registry, 3 RustTypeId, SerializePresence, SourceSpan, StructDef, TargetFieldNames, TargetOverride, 4 TypeDef, TypeRef, VariantDef, VariantShape, WireFieldNames, 5 }; 6 7 #[derive(Clone, Copy, Debug, Eq, PartialEq)] 8 enum TypeSpec { 9 Object { 10 name: &'static str, 11 fields: &'static [FieldSpec], 12 }, 13 Union { 14 name: &'static str, 15 variants: &'static [VariantSpec], 16 }, 17 Alias { 18 name: &'static str, 19 target: &'static str, 20 }, 21 } 22 23 #[derive(Clone, Copy, Debug, Eq, PartialEq)] 24 enum VariantSpec { 25 Object(&'static [FieldSpec]), 26 Ref(&'static str), 27 } 28 29 #[derive(Clone, Copy, Debug, Eq, PartialEq)] 30 struct FieldSpec { 31 name: &'static str, 32 target: &'static str, 33 optional: bool, 34 nullable: bool, 35 } 36 37 impl FieldSpec { 38 const fn required(name: &'static str, target: &'static str) -> Self { 39 Self { 40 name, 41 target, 42 optional: false, 43 nullable: false, 44 } 45 } 46 47 const fn nullable(name: &'static str, target: &'static str) -> Self { 48 Self { 49 name, 50 target, 51 optional: false, 52 nullable: true, 53 } 54 } 55 56 const fn optional(name: &'static str, target: &'static str) -> Self { 57 Self { 58 name, 59 target, 60 optional: true, 61 nullable: false, 62 } 63 } 64 65 const fn optional_nullable(name: &'static str, target: &'static str) -> Self { 66 Self { 67 name, 68 target, 69 optional: true, 70 nullable: true, 71 } 72 } 73 } 74 75 pub fn dto_registry() -> Registry { 76 let mut registry = Registry::new(); 77 for spec in TYPE_SPECS { 78 let name = spec.name(); 79 let type_id = registry.register_type( 80 RustTypeId::new(env!("CARGO_PKG_NAME"), name), 81 spec.type_def(), 82 ); 83 registry.mark_root(type_id); 84 } 85 registry 86 } 87 88 pub fn type_inventory() -> Vec<&'static str> { 89 TYPE_SPECS.iter().map(TypeSpec::name).collect() 90 } 91 92 impl TypeSpec { 93 fn name(&self) -> &'static str { 94 match self { 95 Self::Object { name, .. } | Self::Union { name, .. } | Self::Alias { name, .. } => name, 96 } 97 } 98 99 fn type_def(&self) -> TypeDef { 100 match self { 101 Self::Object { name, fields } => TypeDef::Struct(object_def(name, fields)), 102 Self::Union { name, variants } => TypeDef::Enum(union_def(name, variants)), 103 Self::Alias { name, target } => TypeDef::Enum(alias_def(name, target)), 104 } 105 } 106 } 107 108 fn object_def(name: &str, fields: &[FieldSpec]) -> StructDef { 109 let mut def = StructDef::new(name, name, source_span()); 110 for field in fields { 111 def = def.with_field(field_def(field)); 112 } 113 def 114 } 115 116 fn union_def(name: &str, variants: &[VariantSpec]) -> EnumDef { 117 let mut def = EnumDef::new(name, name, EnumRepr::Untagged, source_span()); 118 for (index, variant) in variants.iter().enumerate() { 119 def = def.with_variant(match variant { 120 VariantSpec::Object(fields) => VariantDef::new( 121 format!("Variant{index}"), 122 format!("variant{index}"), 123 VariantShape::Struct(fields.iter().map(field_def).collect()), 124 source_span(), 125 ), 126 VariantSpec::Ref(target) => VariantDef::new( 127 format!("Variant{index}"), 128 format!("variant{index}"), 129 VariantShape::Newtype(ts_ref(target)), 130 source_span(), 131 ), 132 }); 133 } 134 def 135 } 136 137 fn alias_def(name: &str, target: &str) -> EnumDef { 138 EnumDef::new(name, name, EnumRepr::Untagged, source_span()).with_variant(VariantDef::new( 139 "Alias", 140 "alias", 141 VariantShape::Newtype(ts_ref(target)), 142 source_span(), 143 )) 144 } 145 146 fn field_def(field: &FieldSpec) -> FieldDef { 147 FieldDef::new( 148 IdentName::new(field.name), 149 WireFieldNames::same(field.name), 150 TargetFieldNames::new(field.name, field.name), 151 ts_ref(field.target), 152 source_span(), 153 ) 154 .with_presence(field_presence(field.optional, field.nullable)) 155 } 156 157 fn field_presence(optional: bool, nullable: bool) -> FieldPresence { 158 match (optional, nullable) { 159 (false, false) => FieldPresence::required(), 160 (false, true) => FieldPresence::nullable_required(), 161 (true, true) => FieldPresence::optional_nullable(), 162 (true, false) => FieldPresence { 163 nullable: false, 164 required_on_deserialize: false, 165 default: Some(DefaultKind::NoneValue), 166 serialize_presence: SerializePresence::Always, 167 }, 168 } 169 } 170 171 fn ts_ref(target: &str) -> TypeRef { 172 TypeRef::Override(TargetOverride::new(BackendId::TypeScript, target)) 173 } 174 175 fn source_span() -> SourceSpan { 176 SourceSpan::new(file!(), line!(), column!()) 177 } 178 179 const TYPE_SPECS: &[TypeSpec] = &[ 180 TypeSpec::Object { 181 name: "Farm", 182 fields: &[ 183 FieldSpec::required("id", "string"), 184 FieldSpec::required("created_at", "string"), 185 FieldSpec::required("updated_at", "string"), 186 FieldSpec::required("d_tag", "string"), 187 FieldSpec::required("pubkey", "string"), 188 FieldSpec::required("name", "string"), 189 FieldSpec::nullable("about", "string"), 190 FieldSpec::nullable("website", "string"), 191 FieldSpec::nullable("picture", "string"), 192 FieldSpec::nullable("banner", "string"), 193 FieldSpec::nullable("location_primary", "string"), 194 FieldSpec::nullable("location_city", "string"), 195 FieldSpec::nullable("location_region", "string"), 196 FieldSpec::nullable("location_country", "string"), 197 ], 198 }, 199 TypeSpec::Object { 200 name: "FarmGcsLocation", 201 fields: &[ 202 FieldSpec::required("id", "string"), 203 FieldSpec::required("created_at", "string"), 204 FieldSpec::required("updated_at", "string"), 205 FieldSpec::required("farm_id", "string"), 206 FieldSpec::required("gcs_location_id", "string"), 207 FieldSpec::required("role", "string"), 208 ], 209 }, 210 TypeSpec::Union { 211 name: "FarmGcsLocationQueryBindValues", 212 variants: &[ 213 VariantSpec::Object(&[FieldSpec::required("id", "string")]), 214 VariantSpec::Object(&[FieldSpec::required("farm_id", "string")]), 215 VariantSpec::Object(&[FieldSpec::required("gcs_location_id", "string")]), 216 ], 217 }, 218 TypeSpec::Object { 219 name: "FarmMember", 220 fields: &[ 221 FieldSpec::required("id", "string"), 222 FieldSpec::required("created_at", "string"), 223 FieldSpec::required("updated_at", "string"), 224 FieldSpec::required("farm_id", "string"), 225 FieldSpec::required("member_pubkey", "string"), 226 FieldSpec::required("role", "string"), 227 ], 228 }, 229 TypeSpec::Object { 230 name: "FarmMemberClaim", 231 fields: &[ 232 FieldSpec::required("id", "string"), 233 FieldSpec::required("created_at", "string"), 234 FieldSpec::required("updated_at", "string"), 235 FieldSpec::required("member_pubkey", "string"), 236 FieldSpec::required("farm_pubkey", "string"), 237 ], 238 }, 239 TypeSpec::Union { 240 name: "FarmMemberClaimQueryBindValues", 241 variants: &[ 242 VariantSpec::Object(&[FieldSpec::required("id", "string")]), 243 VariantSpec::Object(&[FieldSpec::required("member_pubkey", "string")]), 244 VariantSpec::Object(&[FieldSpec::required("farm_pubkey", "string")]), 245 ], 246 }, 247 TypeSpec::Union { 248 name: "FarmMemberQueryBindValues", 249 variants: &[ 250 VariantSpec::Object(&[FieldSpec::required("id", "string")]), 251 VariantSpec::Object(&[FieldSpec::required("farm_id", "string")]), 252 VariantSpec::Object(&[FieldSpec::required("member_pubkey", "string")]), 253 ], 254 }, 255 TypeSpec::Union { 256 name: "FarmQueryBindValues", 257 variants: &[ 258 VariantSpec::Object(&[FieldSpec::required("id", "string")]), 259 VariantSpec::Object(&[FieldSpec::required("d_tag", "string")]), 260 VariantSpec::Object(&[FieldSpec::required("pubkey", "string")]), 261 ], 262 }, 263 TypeSpec::Object { 264 name: "FarmTag", 265 fields: &[ 266 FieldSpec::required("id", "string"), 267 FieldSpec::required("created_at", "string"), 268 FieldSpec::required("updated_at", "string"), 269 FieldSpec::required("farm_id", "string"), 270 FieldSpec::required("tag", "string"), 271 ], 272 }, 273 TypeSpec::Union { 274 name: "FarmTagQueryBindValues", 275 variants: &[ 276 VariantSpec::Object(&[FieldSpec::required("id", "string")]), 277 VariantSpec::Object(&[FieldSpec::required("farm_id", "string")]), 278 VariantSpec::Object(&[FieldSpec::required("tag", "string")]), 279 ], 280 }, 281 TypeSpec::Object { 282 name: "GcsLocation", 283 fields: &[ 284 FieldSpec::required("id", "string"), 285 FieldSpec::required("created_at", "string"), 286 FieldSpec::required("updated_at", "string"), 287 FieldSpec::required("d_tag", "string"), 288 FieldSpec::required("lat", "number"), 289 FieldSpec::required("lng", "number"), 290 FieldSpec::required("geohash", "string"), 291 FieldSpec::required("point", "string"), 292 FieldSpec::required("polygon", "string"), 293 FieldSpec::nullable("accuracy", "number"), 294 FieldSpec::nullable("altitude", "number"), 295 FieldSpec::nullable("tag_0", "string"), 296 FieldSpec::nullable("label", "string"), 297 FieldSpec::nullable("area", "number"), 298 FieldSpec::nullable("elevation", "number"), 299 FieldSpec::nullable("soil", "string"), 300 FieldSpec::nullable("climate", "string"), 301 FieldSpec::nullable("gc_id", "string"), 302 FieldSpec::nullable("gc_name", "string"), 303 FieldSpec::nullable("gc_admin1_id", "string"), 304 FieldSpec::nullable("gc_admin1_name", "string"), 305 FieldSpec::nullable("gc_country_id", "string"), 306 FieldSpec::nullable("gc_country_name", "string"), 307 ], 308 }, 309 TypeSpec::Object { 310 name: "GcsLocationFarmArgs", 311 fields: &[FieldSpec::required("id", "string")], 312 }, 313 TypeSpec::Union { 314 name: "GcsLocationFindManyRel", 315 variants: &[ 316 VariantSpec::Object(&[FieldSpec::required( 317 "on_trade_product", 318 "GcsLocationTradeProductArgs", 319 )]), 320 VariantSpec::Object(&[FieldSpec::required( 321 "off_trade_product", 322 "GcsLocationTradeProductArgs", 323 )]), 324 VariantSpec::Object(&[FieldSpec::required("on_farm", "GcsLocationFarmArgs")]), 325 VariantSpec::Object(&[FieldSpec::required("off_farm", "GcsLocationFarmArgs")]), 326 VariantSpec::Object(&[FieldSpec::required("on_plot", "GcsLocationPlotArgs")]), 327 VariantSpec::Object(&[FieldSpec::required("off_plot", "GcsLocationPlotArgs")]), 328 ], 329 }, 330 TypeSpec::Object { 331 name: "GcsLocationPlotArgs", 332 fields: &[FieldSpec::required("id", "string")], 333 }, 334 TypeSpec::Union { 335 name: "GcsLocationQueryBindValues", 336 variants: &[ 337 VariantSpec::Object(&[FieldSpec::required("id", "string")]), 338 VariantSpec::Object(&[FieldSpec::required("d_tag", "string")]), 339 VariantSpec::Object(&[FieldSpec::required("geohash", "string")]), 340 ], 341 }, 342 TypeSpec::Object { 343 name: "GcsLocationTradeProductArgs", 344 fields: &[FieldSpec::required("id", "string")], 345 }, 346 TypeSpec::Alias { 347 name: "IFarmCreate", 348 target: "IFarmFields", 349 }, 350 TypeSpec::Alias { 351 name: "IFarmCreateResolve", 352 target: "IResult<Farm>", 353 }, 354 TypeSpec::Alias { 355 name: "IFarmDelete", 356 target: "IFarmFindOne", 357 }, 358 TypeSpec::Alias { 359 name: "IFarmDeleteResolve", 360 target: "IResult<string>", 361 }, 362 TypeSpec::Object { 363 name: "IFarmFields", 364 fields: &[ 365 FieldSpec::required("d_tag", "string"), 366 FieldSpec::required("pubkey", "string"), 367 FieldSpec::required("name", "string"), 368 FieldSpec::optional_nullable("about", "string"), 369 FieldSpec::optional_nullable("website", "string"), 370 FieldSpec::optional_nullable("picture", "string"), 371 FieldSpec::optional_nullable("banner", "string"), 372 FieldSpec::optional_nullable("location_primary", "string"), 373 FieldSpec::optional_nullable("location_city", "string"), 374 FieldSpec::optional_nullable("location_region", "string"), 375 FieldSpec::optional_nullable("location_country", "string"), 376 ], 377 }, 378 TypeSpec::Object { 379 name: "IFarmFieldsFilter", 380 fields: &[ 381 FieldSpec::optional("id", "string"), 382 FieldSpec::optional("created_at", "string"), 383 FieldSpec::optional("updated_at", "string"), 384 FieldSpec::optional("d_tag", "string"), 385 FieldSpec::optional("pubkey", "string"), 386 FieldSpec::optional("name", "string"), 387 FieldSpec::optional("about", "string"), 388 FieldSpec::optional("website", "string"), 389 FieldSpec::optional("picture", "string"), 390 FieldSpec::optional("banner", "string"), 391 FieldSpec::optional("location_primary", "string"), 392 FieldSpec::optional("location_city", "string"), 393 FieldSpec::optional("location_region", "string"), 394 FieldSpec::optional("location_country", "string"), 395 ], 396 }, 397 TypeSpec::Object { 398 name: "IFarmFieldsPartial", 399 fields: &[ 400 FieldSpec::optional_nullable("d_tag", "ReplicaDbJsonValue"), 401 FieldSpec::optional_nullable("pubkey", "ReplicaDbJsonValue"), 402 FieldSpec::optional_nullable("name", "ReplicaDbJsonValue"), 403 FieldSpec::optional_nullable("about", "ReplicaDbJsonValue"), 404 FieldSpec::optional_nullable("website", "ReplicaDbJsonValue"), 405 FieldSpec::optional_nullable("picture", "ReplicaDbJsonValue"), 406 FieldSpec::optional_nullable("banner", "ReplicaDbJsonValue"), 407 FieldSpec::optional_nullable("location_primary", "ReplicaDbJsonValue"), 408 FieldSpec::optional_nullable("location_city", "ReplicaDbJsonValue"), 409 FieldSpec::optional_nullable("location_region", "ReplicaDbJsonValue"), 410 FieldSpec::optional_nullable("location_country", "ReplicaDbJsonValue"), 411 ], 412 }, 413 TypeSpec::Alias { 414 name: "IFarmFindMany", 415 target: "IFarmFindManyArgs", 416 }, 417 TypeSpec::Object { 418 name: "IFarmFindManyArgs", 419 fields: &[FieldSpec::nullable("filter", "IFarmFieldsFilter")], 420 }, 421 TypeSpec::Alias { 422 name: "IFarmFindManyResolve", 423 target: "IResultList<Farm>", 424 }, 425 TypeSpec::Union { 426 name: "IFarmFindOne", 427 variants: &[VariantSpec::Ref("IFarmFindOneArgs")], 428 }, 429 TypeSpec::Object { 430 name: "IFarmFindOneArgs", 431 fields: &[FieldSpec::required("on", "FarmQueryBindValues")], 432 }, 433 TypeSpec::Alias { 434 name: "IFarmFindOneResolve", 435 target: "IResult<Farm | null>", 436 }, 437 TypeSpec::Alias { 438 name: "IFarmGcsLocationCreate", 439 target: "IFarmGcsLocationFields", 440 }, 441 TypeSpec::Alias { 442 name: "IFarmGcsLocationCreateResolve", 443 target: "IResult<FarmGcsLocation>", 444 }, 445 TypeSpec::Alias { 446 name: "IFarmGcsLocationDelete", 447 target: "IFarmGcsLocationFindOne", 448 }, 449 TypeSpec::Alias { 450 name: "IFarmGcsLocationDeleteResolve", 451 target: "IResult<string>", 452 }, 453 TypeSpec::Object { 454 name: "IFarmGcsLocationFields", 455 fields: &[ 456 FieldSpec::required("farm_id", "string"), 457 FieldSpec::required("gcs_location_id", "string"), 458 FieldSpec::required("role", "string"), 459 ], 460 }, 461 TypeSpec::Object { 462 name: "IFarmGcsLocationFieldsFilter", 463 fields: &[ 464 FieldSpec::optional("id", "string"), 465 FieldSpec::optional("created_at", "string"), 466 FieldSpec::optional("updated_at", "string"), 467 FieldSpec::optional("farm_id", "string"), 468 FieldSpec::optional("gcs_location_id", "string"), 469 FieldSpec::optional("role", "string"), 470 ], 471 }, 472 TypeSpec::Object { 473 name: "IFarmGcsLocationFieldsPartial", 474 fields: &[ 475 FieldSpec::optional_nullable("farm_id", "ReplicaDbJsonValue"), 476 FieldSpec::optional_nullable("gcs_location_id", "ReplicaDbJsonValue"), 477 FieldSpec::optional_nullable("role", "ReplicaDbJsonValue"), 478 ], 479 }, 480 TypeSpec::Alias { 481 name: "IFarmGcsLocationFindMany", 482 target: "IFarmGcsLocationFindManyArgs", 483 }, 484 TypeSpec::Object { 485 name: "IFarmGcsLocationFindManyArgs", 486 fields: &[FieldSpec::nullable( 487 "filter", 488 "IFarmGcsLocationFieldsFilter", 489 )], 490 }, 491 TypeSpec::Alias { 492 name: "IFarmGcsLocationFindManyResolve", 493 target: "IResultList<FarmGcsLocation>", 494 }, 495 TypeSpec::Union { 496 name: "IFarmGcsLocationFindOne", 497 variants: &[VariantSpec::Ref("IFarmGcsLocationFindOneArgs")], 498 }, 499 TypeSpec::Object { 500 name: "IFarmGcsLocationFindOneArgs", 501 fields: &[FieldSpec::required("on", "FarmGcsLocationQueryBindValues")], 502 }, 503 TypeSpec::Alias { 504 name: "IFarmGcsLocationFindOneResolve", 505 target: "IResult<FarmGcsLocation | null>", 506 }, 507 TypeSpec::Alias { 508 name: "IFarmGcsLocationUpdate", 509 target: "IFarmGcsLocationUpdateArgs", 510 }, 511 TypeSpec::Object { 512 name: "IFarmGcsLocationUpdateArgs", 513 fields: &[ 514 FieldSpec::required("on", "FarmGcsLocationQueryBindValues"), 515 FieldSpec::required("fields", "IFarmGcsLocationFieldsPartial"), 516 ], 517 }, 518 TypeSpec::Alias { 519 name: "IFarmGcsLocationUpdateResolve", 520 target: "IResult<FarmGcsLocation>", 521 }, 522 TypeSpec::Alias { 523 name: "IFarmMemberClaimCreate", 524 target: "IFarmMemberClaimFields", 525 }, 526 TypeSpec::Alias { 527 name: "IFarmMemberClaimCreateResolve", 528 target: "IResult<FarmMemberClaim>", 529 }, 530 TypeSpec::Alias { 531 name: "IFarmMemberClaimDelete", 532 target: "IFarmMemberClaimFindOne", 533 }, 534 TypeSpec::Alias { 535 name: "IFarmMemberClaimDeleteResolve", 536 target: "IResult<string>", 537 }, 538 TypeSpec::Object { 539 name: "IFarmMemberClaimFields", 540 fields: &[ 541 FieldSpec::required("member_pubkey", "string"), 542 FieldSpec::required("farm_pubkey", "string"), 543 ], 544 }, 545 TypeSpec::Object { 546 name: "IFarmMemberClaimFieldsFilter", 547 fields: &[ 548 FieldSpec::optional("id", "string"), 549 FieldSpec::optional("created_at", "string"), 550 FieldSpec::optional("updated_at", "string"), 551 FieldSpec::optional("member_pubkey", "string"), 552 FieldSpec::optional("farm_pubkey", "string"), 553 ], 554 }, 555 TypeSpec::Object { 556 name: "IFarmMemberClaimFieldsPartial", 557 fields: &[ 558 FieldSpec::optional_nullable("member_pubkey", "ReplicaDbJsonValue"), 559 FieldSpec::optional_nullable("farm_pubkey", "ReplicaDbJsonValue"), 560 ], 561 }, 562 TypeSpec::Alias { 563 name: "IFarmMemberClaimFindMany", 564 target: "IFarmMemberClaimFindManyArgs", 565 }, 566 TypeSpec::Object { 567 name: "IFarmMemberClaimFindManyArgs", 568 fields: &[FieldSpec::nullable( 569 "filter", 570 "IFarmMemberClaimFieldsFilter", 571 )], 572 }, 573 TypeSpec::Alias { 574 name: "IFarmMemberClaimFindManyResolve", 575 target: "IResultList<FarmMemberClaim>", 576 }, 577 TypeSpec::Union { 578 name: "IFarmMemberClaimFindOne", 579 variants: &[VariantSpec::Ref("IFarmMemberClaimFindOneArgs")], 580 }, 581 TypeSpec::Object { 582 name: "IFarmMemberClaimFindOneArgs", 583 fields: &[FieldSpec::required("on", "FarmMemberClaimQueryBindValues")], 584 }, 585 TypeSpec::Alias { 586 name: "IFarmMemberClaimFindOneResolve", 587 target: "IResult<FarmMemberClaim | null>", 588 }, 589 TypeSpec::Alias { 590 name: "IFarmMemberClaimUpdate", 591 target: "IFarmMemberClaimUpdateArgs", 592 }, 593 TypeSpec::Object { 594 name: "IFarmMemberClaimUpdateArgs", 595 fields: &[ 596 FieldSpec::required("on", "FarmMemberClaimQueryBindValues"), 597 FieldSpec::required("fields", "IFarmMemberClaimFieldsPartial"), 598 ], 599 }, 600 TypeSpec::Alias { 601 name: "IFarmMemberClaimUpdateResolve", 602 target: "IResult<FarmMemberClaim>", 603 }, 604 TypeSpec::Alias { 605 name: "IFarmMemberCreate", 606 target: "IFarmMemberFields", 607 }, 608 TypeSpec::Alias { 609 name: "IFarmMemberCreateResolve", 610 target: "IResult<FarmMember>", 611 }, 612 TypeSpec::Alias { 613 name: "IFarmMemberDelete", 614 target: "IFarmMemberFindOne", 615 }, 616 TypeSpec::Alias { 617 name: "IFarmMemberDeleteResolve", 618 target: "IResult<string>", 619 }, 620 TypeSpec::Object { 621 name: "IFarmMemberFields", 622 fields: &[ 623 FieldSpec::required("farm_id", "string"), 624 FieldSpec::required("member_pubkey", "string"), 625 FieldSpec::required("role", "string"), 626 ], 627 }, 628 TypeSpec::Object { 629 name: "IFarmMemberFieldsFilter", 630 fields: &[ 631 FieldSpec::optional("id", "string"), 632 FieldSpec::optional("created_at", "string"), 633 FieldSpec::optional("updated_at", "string"), 634 FieldSpec::optional("farm_id", "string"), 635 FieldSpec::optional("member_pubkey", "string"), 636 FieldSpec::optional("role", "string"), 637 ], 638 }, 639 TypeSpec::Object { 640 name: "IFarmMemberFieldsPartial", 641 fields: &[ 642 FieldSpec::optional_nullable("farm_id", "ReplicaDbJsonValue"), 643 FieldSpec::optional_nullable("member_pubkey", "ReplicaDbJsonValue"), 644 FieldSpec::optional_nullable("role", "ReplicaDbJsonValue"), 645 ], 646 }, 647 TypeSpec::Alias { 648 name: "IFarmMemberFindMany", 649 target: "IFarmMemberFindManyArgs", 650 }, 651 TypeSpec::Object { 652 name: "IFarmMemberFindManyArgs", 653 fields: &[FieldSpec::nullable("filter", "IFarmMemberFieldsFilter")], 654 }, 655 TypeSpec::Alias { 656 name: "IFarmMemberFindManyResolve", 657 target: "IResultList<FarmMember>", 658 }, 659 TypeSpec::Union { 660 name: "IFarmMemberFindOne", 661 variants: &[VariantSpec::Ref("IFarmMemberFindOneArgs")], 662 }, 663 TypeSpec::Object { 664 name: "IFarmMemberFindOneArgs", 665 fields: &[FieldSpec::required("on", "FarmMemberQueryBindValues")], 666 }, 667 TypeSpec::Alias { 668 name: "IFarmMemberFindOneResolve", 669 target: "IResult<FarmMember | null>", 670 }, 671 TypeSpec::Alias { 672 name: "IFarmMemberUpdate", 673 target: "IFarmMemberUpdateArgs", 674 }, 675 TypeSpec::Object { 676 name: "IFarmMemberUpdateArgs", 677 fields: &[ 678 FieldSpec::required("on", "FarmMemberQueryBindValues"), 679 FieldSpec::required("fields", "IFarmMemberFieldsPartial"), 680 ], 681 }, 682 TypeSpec::Alias { 683 name: "IFarmMemberUpdateResolve", 684 target: "IResult<FarmMember>", 685 }, 686 TypeSpec::Alias { 687 name: "IFarmTagCreate", 688 target: "IFarmTagFields", 689 }, 690 TypeSpec::Alias { 691 name: "IFarmTagCreateResolve", 692 target: "IResult<FarmTag>", 693 }, 694 TypeSpec::Alias { 695 name: "IFarmTagDelete", 696 target: "IFarmTagFindOne", 697 }, 698 TypeSpec::Alias { 699 name: "IFarmTagDeleteResolve", 700 target: "IResult<string>", 701 }, 702 TypeSpec::Object { 703 name: "IFarmTagFields", 704 fields: &[ 705 FieldSpec::required("farm_id", "string"), 706 FieldSpec::required("tag", "string"), 707 ], 708 }, 709 TypeSpec::Object { 710 name: "IFarmTagFieldsFilter", 711 fields: &[ 712 FieldSpec::optional("id", "string"), 713 FieldSpec::optional("created_at", "string"), 714 FieldSpec::optional("updated_at", "string"), 715 FieldSpec::optional("farm_id", "string"), 716 FieldSpec::optional("tag", "string"), 717 ], 718 }, 719 TypeSpec::Object { 720 name: "IFarmTagFieldsPartial", 721 fields: &[ 722 FieldSpec::optional_nullable("farm_id", "ReplicaDbJsonValue"), 723 FieldSpec::optional_nullable("tag", "ReplicaDbJsonValue"), 724 ], 725 }, 726 TypeSpec::Alias { 727 name: "IFarmTagFindMany", 728 target: "IFarmTagFindManyArgs", 729 }, 730 TypeSpec::Object { 731 name: "IFarmTagFindManyArgs", 732 fields: &[FieldSpec::nullable("filter", "IFarmTagFieldsFilter")], 733 }, 734 TypeSpec::Alias { 735 name: "IFarmTagFindManyResolve", 736 target: "IResultList<FarmTag>", 737 }, 738 TypeSpec::Union { 739 name: "IFarmTagFindOne", 740 variants: &[VariantSpec::Ref("IFarmTagFindOneArgs")], 741 }, 742 TypeSpec::Object { 743 name: "IFarmTagFindOneArgs", 744 fields: &[FieldSpec::required("on", "FarmTagQueryBindValues")], 745 }, 746 TypeSpec::Alias { 747 name: "IFarmTagFindOneResolve", 748 target: "IResult<FarmTag | null>", 749 }, 750 TypeSpec::Alias { 751 name: "IFarmTagUpdate", 752 target: "IFarmTagUpdateArgs", 753 }, 754 TypeSpec::Object { 755 name: "IFarmTagUpdateArgs", 756 fields: &[ 757 FieldSpec::required("on", "FarmTagQueryBindValues"), 758 FieldSpec::required("fields", "IFarmTagFieldsPartial"), 759 ], 760 }, 761 TypeSpec::Alias { 762 name: "IFarmTagUpdateResolve", 763 target: "IResult<FarmTag>", 764 }, 765 TypeSpec::Alias { 766 name: "IFarmUpdate", 767 target: "IFarmUpdateArgs", 768 }, 769 TypeSpec::Object { 770 name: "IFarmUpdateArgs", 771 fields: &[ 772 FieldSpec::required("on", "FarmQueryBindValues"), 773 FieldSpec::required("fields", "IFarmFieldsPartial"), 774 ], 775 }, 776 TypeSpec::Alias { 777 name: "IFarmUpdateResolve", 778 target: "IResult<Farm>", 779 }, 780 TypeSpec::Alias { 781 name: "IGcsLocationCreate", 782 target: "IGcsLocationFields", 783 }, 784 TypeSpec::Alias { 785 name: "IGcsLocationCreateResolve", 786 target: "IResult<GcsLocation>", 787 }, 788 TypeSpec::Alias { 789 name: "IGcsLocationDelete", 790 target: "IGcsLocationFindOne", 791 }, 792 TypeSpec::Alias { 793 name: "IGcsLocationDeleteResolve", 794 target: "IResult<string>", 795 }, 796 TypeSpec::Object { 797 name: "IGcsLocationFields", 798 fields: &[ 799 FieldSpec::required("d_tag", "string"), 800 FieldSpec::required("lat", "number"), 801 FieldSpec::required("lng", "number"), 802 FieldSpec::required("geohash", "string"), 803 FieldSpec::required("point", "string"), 804 FieldSpec::required("polygon", "string"), 805 FieldSpec::optional_nullable("accuracy", "number"), 806 FieldSpec::optional_nullable("altitude", "number"), 807 FieldSpec::optional_nullable("tag_0", "string"), 808 FieldSpec::optional_nullable("label", "string"), 809 FieldSpec::optional_nullable("area", "number"), 810 FieldSpec::optional_nullable("elevation", "number"), 811 FieldSpec::optional_nullable("soil", "string"), 812 FieldSpec::optional_nullable("climate", "string"), 813 FieldSpec::optional_nullable("gc_id", "string"), 814 FieldSpec::optional_nullable("gc_name", "string"), 815 FieldSpec::optional_nullable("gc_admin1_id", "string"), 816 FieldSpec::optional_nullable("gc_admin1_name", "string"), 817 FieldSpec::optional_nullable("gc_country_id", "string"), 818 FieldSpec::optional_nullable("gc_country_name", "string"), 819 ], 820 }, 821 TypeSpec::Object { 822 name: "IGcsLocationFieldsFilter", 823 fields: &[ 824 FieldSpec::optional("id", "string"), 825 FieldSpec::optional("created_at", "string"), 826 FieldSpec::optional("updated_at", "string"), 827 FieldSpec::optional("d_tag", "string"), 828 FieldSpec::optional("lat", "number"), 829 FieldSpec::optional("lng", "number"), 830 FieldSpec::optional("geohash", "string"), 831 FieldSpec::optional("point", "string"), 832 FieldSpec::optional("polygon", "string"), 833 FieldSpec::optional("accuracy", "number"), 834 FieldSpec::optional("altitude", "number"), 835 FieldSpec::optional("tag_0", "string"), 836 FieldSpec::optional("label", "string"), 837 FieldSpec::optional("area", "number"), 838 FieldSpec::optional("elevation", "number"), 839 FieldSpec::optional("soil", "string"), 840 FieldSpec::optional("climate", "string"), 841 FieldSpec::optional("gc_id", "string"), 842 FieldSpec::optional("gc_name", "string"), 843 FieldSpec::optional("gc_admin1_id", "string"), 844 FieldSpec::optional("gc_admin1_name", "string"), 845 FieldSpec::optional("gc_country_id", "string"), 846 FieldSpec::optional("gc_country_name", "string"), 847 ], 848 }, 849 TypeSpec::Object { 850 name: "IGcsLocationFieldsPartial", 851 fields: &[ 852 FieldSpec::optional_nullable("d_tag", "ReplicaDbJsonValue"), 853 FieldSpec::optional_nullable("lat", "ReplicaDbJsonValue"), 854 FieldSpec::optional_nullable("lng", "ReplicaDbJsonValue"), 855 FieldSpec::optional_nullable("geohash", "ReplicaDbJsonValue"), 856 FieldSpec::optional_nullable("point", "ReplicaDbJsonValue"), 857 FieldSpec::optional_nullable("polygon", "ReplicaDbJsonValue"), 858 FieldSpec::optional_nullable("accuracy", "ReplicaDbJsonValue"), 859 FieldSpec::optional_nullable("altitude", "ReplicaDbJsonValue"), 860 FieldSpec::optional_nullable("tag_0", "ReplicaDbJsonValue"), 861 FieldSpec::optional_nullable("label", "ReplicaDbJsonValue"), 862 FieldSpec::optional_nullable("area", "ReplicaDbJsonValue"), 863 FieldSpec::optional_nullable("elevation", "ReplicaDbJsonValue"), 864 FieldSpec::optional_nullable("soil", "ReplicaDbJsonValue"), 865 FieldSpec::optional_nullable("climate", "ReplicaDbJsonValue"), 866 FieldSpec::optional_nullable("gc_id", "ReplicaDbJsonValue"), 867 FieldSpec::optional_nullable("gc_name", "ReplicaDbJsonValue"), 868 FieldSpec::optional_nullable("gc_admin1_id", "ReplicaDbJsonValue"), 869 FieldSpec::optional_nullable("gc_admin1_name", "ReplicaDbJsonValue"), 870 FieldSpec::optional_nullable("gc_country_id", "ReplicaDbJsonValue"), 871 FieldSpec::optional_nullable("gc_country_name", "ReplicaDbJsonValue"), 872 ], 873 }, 874 TypeSpec::Union { 875 name: "IGcsLocationFindMany", 876 variants: &[ 877 VariantSpec::Object(&[FieldSpec::nullable("filter", "IGcsLocationFieldsFilter")]), 878 VariantSpec::Object(&[FieldSpec::required("rel", "GcsLocationFindManyRel")]), 879 ], 880 }, 881 TypeSpec::Alias { 882 name: "IGcsLocationFindManyResolve", 883 target: "IResultList<GcsLocation>", 884 }, 885 TypeSpec::Union { 886 name: "IGcsLocationFindOne", 887 variants: &[ 888 VariantSpec::Ref("IGcsLocationFindOneArgs"), 889 VariantSpec::Ref("IGcsLocationFindOneRelArgs"), 890 ], 891 }, 892 TypeSpec::Object { 893 name: "IGcsLocationFindOneArgs", 894 fields: &[FieldSpec::required("on", "GcsLocationQueryBindValues")], 895 }, 896 TypeSpec::Object { 897 name: "IGcsLocationFindOneRelArgs", 898 fields: &[FieldSpec::required("rel", "GcsLocationFindManyRel")], 899 }, 900 TypeSpec::Alias { 901 name: "IGcsLocationFindOneResolve", 902 target: "IResult<GcsLocation | null>", 903 }, 904 TypeSpec::Alias { 905 name: "IGcsLocationUpdate", 906 target: "IGcsLocationUpdateArgs", 907 }, 908 TypeSpec::Object { 909 name: "IGcsLocationUpdateArgs", 910 fields: &[ 911 FieldSpec::required("on", "GcsLocationQueryBindValues"), 912 FieldSpec::required("fields", "IGcsLocationFieldsPartial"), 913 ], 914 }, 915 TypeSpec::Alias { 916 name: "IGcsLocationUpdateResolve", 917 target: "IResult<GcsLocation>", 918 }, 919 TypeSpec::Alias { 920 name: "ILogErrorCreate", 921 target: "ILogErrorFields", 922 }, 923 TypeSpec::Alias { 924 name: "ILogErrorCreateResolve", 925 target: "IResult<LogError>", 926 }, 927 TypeSpec::Alias { 928 name: "ILogErrorDelete", 929 target: "ILogErrorFindOne", 930 }, 931 TypeSpec::Alias { 932 name: "ILogErrorDeleteResolve", 933 target: "IResult<string>", 934 }, 935 TypeSpec::Object { 936 name: "ILogErrorFields", 937 fields: &[ 938 FieldSpec::required("error", "string"), 939 FieldSpec::required("message", "string"), 940 FieldSpec::optional_nullable("stack_trace", "string"), 941 FieldSpec::optional_nullable("cause", "string"), 942 FieldSpec::required("app_system", "string"), 943 FieldSpec::required("app_version", "string"), 944 FieldSpec::required("nostr_pubkey", "string"), 945 FieldSpec::optional_nullable("data", "string"), 946 ], 947 }, 948 TypeSpec::Object { 949 name: "ILogErrorFieldsFilter", 950 fields: &[ 951 FieldSpec::optional("id", "string"), 952 FieldSpec::optional("created_at", "string"), 953 FieldSpec::optional("updated_at", "string"), 954 FieldSpec::optional("error", "string"), 955 FieldSpec::optional("message", "string"), 956 FieldSpec::optional("stack_trace", "string"), 957 FieldSpec::optional("cause", "string"), 958 FieldSpec::optional("app_system", "string"), 959 FieldSpec::optional("app_version", "string"), 960 FieldSpec::optional("nostr_pubkey", "string"), 961 FieldSpec::optional("data", "string"), 962 ], 963 }, 964 TypeSpec::Object { 965 name: "ILogErrorFieldsPartial", 966 fields: &[ 967 FieldSpec::optional_nullable("error", "ReplicaDbJsonValue"), 968 FieldSpec::optional_nullable("message", "ReplicaDbJsonValue"), 969 FieldSpec::optional_nullable("stack_trace", "ReplicaDbJsonValue"), 970 FieldSpec::optional_nullable("cause", "ReplicaDbJsonValue"), 971 FieldSpec::optional_nullable("app_system", "ReplicaDbJsonValue"), 972 FieldSpec::optional_nullable("app_version", "ReplicaDbJsonValue"), 973 FieldSpec::optional_nullable("nostr_pubkey", "ReplicaDbJsonValue"), 974 FieldSpec::optional_nullable("data", "ReplicaDbJsonValue"), 975 ], 976 }, 977 TypeSpec::Alias { 978 name: "ILogErrorFindMany", 979 target: "ILogErrorFindManyArgs", 980 }, 981 TypeSpec::Object { 982 name: "ILogErrorFindManyArgs", 983 fields: &[FieldSpec::nullable("filter", "ILogErrorFieldsFilter")], 984 }, 985 TypeSpec::Alias { 986 name: "ILogErrorFindManyResolve", 987 target: "IResultList<LogError>", 988 }, 989 TypeSpec::Union { 990 name: "ILogErrorFindOne", 991 variants: &[VariantSpec::Ref("ILogErrorFindOneArgs")], 992 }, 993 TypeSpec::Object { 994 name: "ILogErrorFindOneArgs", 995 fields: &[FieldSpec::required("on", "LogErrorQueryBindValues")], 996 }, 997 TypeSpec::Alias { 998 name: "ILogErrorFindOneResolve", 999 target: "IResult<LogError | null>", 1000 }, 1001 TypeSpec::Alias { 1002 name: "ILogErrorUpdate", 1003 target: "ILogErrorUpdateArgs", 1004 }, 1005 TypeSpec::Object { 1006 name: "ILogErrorUpdateArgs", 1007 fields: &[ 1008 FieldSpec::required("on", "LogErrorQueryBindValues"), 1009 FieldSpec::required("fields", "ILogErrorFieldsPartial"), 1010 ], 1011 }, 1012 TypeSpec::Alias { 1013 name: "ILogErrorUpdateResolve", 1014 target: "IResult<LogError>", 1015 }, 1016 TypeSpec::Alias { 1017 name: "IMediaImageCreate", 1018 target: "IMediaImageFields", 1019 }, 1020 TypeSpec::Alias { 1021 name: "IMediaImageCreateResolve", 1022 target: "IResult<MediaImage>", 1023 }, 1024 TypeSpec::Alias { 1025 name: "IMediaImageDelete", 1026 target: "IMediaImageFindOne", 1027 }, 1028 TypeSpec::Alias { 1029 name: "IMediaImageDeleteResolve", 1030 target: "IResult<string>", 1031 }, 1032 TypeSpec::Object { 1033 name: "IMediaImageFields", 1034 fields: &[ 1035 FieldSpec::required("file_path", "string"), 1036 FieldSpec::required("mime_type", "string"), 1037 FieldSpec::required("res_base", "string"), 1038 FieldSpec::required("res_path", "string"), 1039 FieldSpec::optional_nullable("label", "string"), 1040 FieldSpec::optional_nullable("description", "string"), 1041 ], 1042 }, 1043 TypeSpec::Object { 1044 name: "IMediaImageFieldsFilter", 1045 fields: &[ 1046 FieldSpec::optional("id", "string"), 1047 FieldSpec::optional("created_at", "string"), 1048 FieldSpec::optional("updated_at", "string"), 1049 FieldSpec::optional("file_path", "string"), 1050 FieldSpec::optional("mime_type", "string"), 1051 FieldSpec::optional("res_base", "string"), 1052 FieldSpec::optional("res_path", "string"), 1053 FieldSpec::optional("label", "string"), 1054 FieldSpec::optional("description", "string"), 1055 ], 1056 }, 1057 TypeSpec::Object { 1058 name: "IMediaImageFieldsPartial", 1059 fields: &[ 1060 FieldSpec::optional_nullable("file_path", "ReplicaDbJsonValue"), 1061 FieldSpec::optional_nullable("mime_type", "ReplicaDbJsonValue"), 1062 FieldSpec::optional_nullable("res_base", "ReplicaDbJsonValue"), 1063 FieldSpec::optional_nullable("res_path", "ReplicaDbJsonValue"), 1064 FieldSpec::optional_nullable("label", "ReplicaDbJsonValue"), 1065 FieldSpec::optional_nullable("description", "ReplicaDbJsonValue"), 1066 ], 1067 }, 1068 TypeSpec::Union { 1069 name: "IMediaImageFindMany", 1070 variants: &[ 1071 VariantSpec::Object(&[FieldSpec::nullable("filter", "IMediaImageFieldsFilter")]), 1072 VariantSpec::Object(&[FieldSpec::required("rel", "MediaImageFindManyRel")]), 1073 ], 1074 }, 1075 TypeSpec::Alias { 1076 name: "IMediaImageFindManyResolve", 1077 target: "IResultList<MediaImage>", 1078 }, 1079 TypeSpec::Union { 1080 name: "IMediaImageFindOne", 1081 variants: &[ 1082 VariantSpec::Ref("IMediaImageFindOneArgs"), 1083 VariantSpec::Ref("IMediaImageFindOneRelArgs"), 1084 ], 1085 }, 1086 TypeSpec::Object { 1087 name: "IMediaImageFindOneArgs", 1088 fields: &[FieldSpec::required("on", "MediaImageQueryBindValues")], 1089 }, 1090 TypeSpec::Object { 1091 name: "IMediaImageFindOneRelArgs", 1092 fields: &[FieldSpec::required("rel", "MediaImageFindManyRel")], 1093 }, 1094 TypeSpec::Alias { 1095 name: "IMediaImageFindOneResolve", 1096 target: "IResult<MediaImage | null>", 1097 }, 1098 TypeSpec::Alias { 1099 name: "IMediaImageUpdate", 1100 target: "IMediaImageUpdateArgs", 1101 }, 1102 TypeSpec::Object { 1103 name: "IMediaImageUpdateArgs", 1104 fields: &[ 1105 FieldSpec::required("on", "MediaImageQueryBindValues"), 1106 FieldSpec::required("fields", "IMediaImageFieldsPartial"), 1107 ], 1108 }, 1109 TypeSpec::Alias { 1110 name: "IMediaImageUpdateResolve", 1111 target: "IResult<MediaImage>", 1112 }, 1113 TypeSpec::Alias { 1114 name: "INostrEventHeadCreate", 1115 target: "INostrEventHeadFields", 1116 }, 1117 TypeSpec::Alias { 1118 name: "INostrEventHeadCreateResolve", 1119 target: "IResult<NostrEventHead>", 1120 }, 1121 TypeSpec::Alias { 1122 name: "INostrEventHeadDelete", 1123 target: "INostrEventHeadFindOne", 1124 }, 1125 TypeSpec::Alias { 1126 name: "INostrEventHeadDeleteResolve", 1127 target: "IResult<string>", 1128 }, 1129 TypeSpec::Object { 1130 name: "INostrEventHeadFields", 1131 fields: &[ 1132 FieldSpec::required("key", "string"), 1133 FieldSpec::required("kind", "number"), 1134 FieldSpec::required("pubkey", "string"), 1135 FieldSpec::required("d_tag", "string"), 1136 FieldSpec::required("last_event_id", "string"), 1137 FieldSpec::required("last_created_at", "number"), 1138 FieldSpec::required("content_hash", "string"), 1139 ], 1140 }, 1141 TypeSpec::Object { 1142 name: "INostrEventHeadFieldsFilter", 1143 fields: &[ 1144 FieldSpec::optional("id", "string"), 1145 FieldSpec::optional("created_at", "string"), 1146 FieldSpec::optional("updated_at", "string"), 1147 FieldSpec::optional("key", "string"), 1148 FieldSpec::optional("kind", "number"), 1149 FieldSpec::optional("pubkey", "string"), 1150 FieldSpec::optional("d_tag", "string"), 1151 FieldSpec::optional("last_event_id", "string"), 1152 FieldSpec::optional("last_created_at", "number"), 1153 FieldSpec::optional("content_hash", "string"), 1154 ], 1155 }, 1156 TypeSpec::Object { 1157 name: "INostrEventHeadFieldsPartial", 1158 fields: &[ 1159 FieldSpec::optional_nullable("key", "ReplicaDbJsonValue"), 1160 FieldSpec::optional_nullable("kind", "ReplicaDbJsonValue"), 1161 FieldSpec::optional_nullable("pubkey", "ReplicaDbJsonValue"), 1162 FieldSpec::optional_nullable("d_tag", "ReplicaDbJsonValue"), 1163 FieldSpec::optional_nullable("last_event_id", "ReplicaDbJsonValue"), 1164 FieldSpec::optional_nullable("last_created_at", "ReplicaDbJsonValue"), 1165 FieldSpec::optional_nullable("content_hash", "ReplicaDbJsonValue"), 1166 ], 1167 }, 1168 TypeSpec::Alias { 1169 name: "INostrEventHeadFindMany", 1170 target: "INostrEventHeadFindManyArgs", 1171 }, 1172 TypeSpec::Object { 1173 name: "INostrEventHeadFindManyArgs", 1174 fields: &[FieldSpec::nullable("filter", "INostrEventHeadFieldsFilter")], 1175 }, 1176 TypeSpec::Alias { 1177 name: "INostrEventHeadFindManyResolve", 1178 target: "IResultList<NostrEventHead>", 1179 }, 1180 TypeSpec::Union { 1181 name: "INostrEventHeadFindOne", 1182 variants: &[VariantSpec::Ref("INostrEventHeadFindOneArgs")], 1183 }, 1184 TypeSpec::Object { 1185 name: "INostrEventHeadFindOneArgs", 1186 fields: &[FieldSpec::required("on", "NostrEventHeadQueryBindValues")], 1187 }, 1188 TypeSpec::Alias { 1189 name: "INostrEventHeadFindOneResolve", 1190 target: "IResult<NostrEventHead | null>", 1191 }, 1192 TypeSpec::Alias { 1193 name: "INostrEventHeadUpdate", 1194 target: "INostrEventHeadUpdateArgs", 1195 }, 1196 TypeSpec::Object { 1197 name: "INostrEventHeadUpdateArgs", 1198 fields: &[ 1199 FieldSpec::required("on", "NostrEventHeadQueryBindValues"), 1200 FieldSpec::required("fields", "INostrEventHeadFieldsPartial"), 1201 ], 1202 }, 1203 TypeSpec::Alias { 1204 name: "INostrEventHeadUpdateResolve", 1205 target: "IResult<NostrEventHead>", 1206 }, 1207 TypeSpec::Alias { 1208 name: "INostrProfileCreate", 1209 target: "INostrProfileFields", 1210 }, 1211 TypeSpec::Alias { 1212 name: "INostrProfileCreateResolve", 1213 target: "IResult<NostrProfile>", 1214 }, 1215 TypeSpec::Alias { 1216 name: "INostrProfileDelete", 1217 target: "INostrProfileFindOne", 1218 }, 1219 TypeSpec::Alias { 1220 name: "INostrProfileDeleteResolve", 1221 target: "IResult<string>", 1222 }, 1223 TypeSpec::Object { 1224 name: "INostrProfileFields", 1225 fields: &[ 1226 FieldSpec::required("public_key", "string"), 1227 FieldSpec::required("profile_type", "string"), 1228 FieldSpec::required("name", "string"), 1229 FieldSpec::optional_nullable("display_name", "string"), 1230 FieldSpec::optional_nullable("about", "string"), 1231 FieldSpec::optional_nullable("website", "string"), 1232 FieldSpec::optional_nullable("picture", "string"), 1233 FieldSpec::optional_nullable("banner", "string"), 1234 FieldSpec::optional_nullable("nip05", "string"), 1235 FieldSpec::optional_nullable("lud06", "string"), 1236 FieldSpec::optional_nullable("lud16", "string"), 1237 ], 1238 }, 1239 TypeSpec::Object { 1240 name: "INostrProfileFieldsFilter", 1241 fields: &[ 1242 FieldSpec::optional("id", "string"), 1243 FieldSpec::optional("created_at", "string"), 1244 FieldSpec::optional("updated_at", "string"), 1245 FieldSpec::optional("public_key", "string"), 1246 FieldSpec::optional("profile_type", "string"), 1247 FieldSpec::optional("name", "string"), 1248 FieldSpec::optional("display_name", "string"), 1249 FieldSpec::optional("about", "string"), 1250 FieldSpec::optional("website", "string"), 1251 FieldSpec::optional("picture", "string"), 1252 FieldSpec::optional("banner", "string"), 1253 FieldSpec::optional("nip05", "string"), 1254 FieldSpec::optional("lud06", "string"), 1255 FieldSpec::optional("lud16", "string"), 1256 ], 1257 }, 1258 TypeSpec::Object { 1259 name: "INostrProfileFieldsPartial", 1260 fields: &[ 1261 FieldSpec::optional_nullable("public_key", "ReplicaDbJsonValue"), 1262 FieldSpec::optional_nullable("profile_type", "ReplicaDbJsonValue"), 1263 FieldSpec::optional_nullable("name", "ReplicaDbJsonValue"), 1264 FieldSpec::optional_nullable("display_name", "ReplicaDbJsonValue"), 1265 FieldSpec::optional_nullable("about", "ReplicaDbJsonValue"), 1266 FieldSpec::optional_nullable("website", "ReplicaDbJsonValue"), 1267 FieldSpec::optional_nullable("picture", "ReplicaDbJsonValue"), 1268 FieldSpec::optional_nullable("banner", "ReplicaDbJsonValue"), 1269 FieldSpec::optional_nullable("nip05", "ReplicaDbJsonValue"), 1270 FieldSpec::optional_nullable("lud06", "ReplicaDbJsonValue"), 1271 FieldSpec::optional_nullable("lud16", "ReplicaDbJsonValue"), 1272 ], 1273 }, 1274 TypeSpec::Union { 1275 name: "INostrProfileFindMany", 1276 variants: &[ 1277 VariantSpec::Object(&[FieldSpec::nullable("filter", "INostrProfileFieldsFilter")]), 1278 VariantSpec::Object(&[FieldSpec::required("rel", "NostrProfileFindManyRel")]), 1279 ], 1280 }, 1281 TypeSpec::Alias { 1282 name: "INostrProfileFindManyResolve", 1283 target: "IResultList<NostrProfile>", 1284 }, 1285 TypeSpec::Union { 1286 name: "INostrProfileFindOne", 1287 variants: &[ 1288 VariantSpec::Ref("INostrProfileFindOneArgs"), 1289 VariantSpec::Ref("INostrProfileFindOneRelArgs"), 1290 ], 1291 }, 1292 TypeSpec::Object { 1293 name: "INostrProfileFindOneArgs", 1294 fields: &[FieldSpec::required("on", "NostrProfileQueryBindValues")], 1295 }, 1296 TypeSpec::Object { 1297 name: "INostrProfileFindOneRelArgs", 1298 fields: &[FieldSpec::required("rel", "NostrProfileFindManyRel")], 1299 }, 1300 TypeSpec::Alias { 1301 name: "INostrProfileFindOneResolve", 1302 target: "IResult<NostrProfile | null>", 1303 }, 1304 TypeSpec::Object { 1305 name: "INostrProfileRelayRelation", 1306 fields: &[ 1307 FieldSpec::required("nostr_profile", "NostrProfileQueryBindValues"), 1308 FieldSpec::required("nostr_relay", "NostrRelayQueryBindValues"), 1309 ], 1310 }, 1311 TypeSpec::Alias { 1312 name: "INostrProfileRelayResolve", 1313 target: "IResultPass", 1314 }, 1315 TypeSpec::Alias { 1316 name: "INostrProfileUpdate", 1317 target: "INostrProfileUpdateArgs", 1318 }, 1319 TypeSpec::Object { 1320 name: "INostrProfileUpdateArgs", 1321 fields: &[ 1322 FieldSpec::required("on", "NostrProfileQueryBindValues"), 1323 FieldSpec::required("fields", "INostrProfileFieldsPartial"), 1324 ], 1325 }, 1326 TypeSpec::Alias { 1327 name: "INostrProfileUpdateResolve", 1328 target: "IResult<NostrProfile>", 1329 }, 1330 TypeSpec::Alias { 1331 name: "INostrRelayCreate", 1332 target: "INostrRelayFields", 1333 }, 1334 TypeSpec::Alias { 1335 name: "INostrRelayCreateResolve", 1336 target: "IResult<NostrRelay>", 1337 }, 1338 TypeSpec::Alias { 1339 name: "INostrRelayDelete", 1340 target: "INostrRelayFindOne", 1341 }, 1342 TypeSpec::Alias { 1343 name: "INostrRelayDeleteResolve", 1344 target: "IResult<string>", 1345 }, 1346 TypeSpec::Object { 1347 name: "INostrRelayFields", 1348 fields: &[ 1349 FieldSpec::required("url", "string"), 1350 FieldSpec::optional_nullable("relay_id", "string"), 1351 FieldSpec::optional_nullable("name", "string"), 1352 FieldSpec::optional_nullable("description", "string"), 1353 FieldSpec::optional_nullable("pubkey", "string"), 1354 FieldSpec::optional_nullable("contact", "string"), 1355 FieldSpec::optional_nullable("supported_nips", "string"), 1356 FieldSpec::optional_nullable("software", "string"), 1357 FieldSpec::optional_nullable("version", "string"), 1358 FieldSpec::optional_nullable("data", "string"), 1359 ], 1360 }, 1361 TypeSpec::Object { 1362 name: "INostrRelayFieldsFilter", 1363 fields: &[ 1364 FieldSpec::optional("id", "string"), 1365 FieldSpec::optional("created_at", "string"), 1366 FieldSpec::optional("updated_at", "string"), 1367 FieldSpec::optional("url", "string"), 1368 FieldSpec::optional("relay_id", "string"), 1369 FieldSpec::optional("name", "string"), 1370 FieldSpec::optional("description", "string"), 1371 FieldSpec::optional("pubkey", "string"), 1372 FieldSpec::optional("contact", "string"), 1373 FieldSpec::optional("supported_nips", "string"), 1374 FieldSpec::optional("software", "string"), 1375 FieldSpec::optional("version", "string"), 1376 FieldSpec::optional("data", "string"), 1377 ], 1378 }, 1379 TypeSpec::Object { 1380 name: "INostrRelayFieldsPartial", 1381 fields: &[ 1382 FieldSpec::optional_nullable("url", "ReplicaDbJsonValue"), 1383 FieldSpec::optional_nullable("relay_id", "ReplicaDbJsonValue"), 1384 FieldSpec::optional_nullable("name", "ReplicaDbJsonValue"), 1385 FieldSpec::optional_nullable("description", "ReplicaDbJsonValue"), 1386 FieldSpec::optional_nullable("pubkey", "ReplicaDbJsonValue"), 1387 FieldSpec::optional_nullable("contact", "ReplicaDbJsonValue"), 1388 FieldSpec::optional_nullable("supported_nips", "ReplicaDbJsonValue"), 1389 FieldSpec::optional_nullable("software", "ReplicaDbJsonValue"), 1390 FieldSpec::optional_nullable("version", "ReplicaDbJsonValue"), 1391 FieldSpec::optional_nullable("data", "ReplicaDbJsonValue"), 1392 ], 1393 }, 1394 TypeSpec::Union { 1395 name: "INostrRelayFindMany", 1396 variants: &[ 1397 VariantSpec::Object(&[FieldSpec::nullable("filter", "INostrRelayFieldsFilter")]), 1398 VariantSpec::Object(&[FieldSpec::required("rel", "NostrRelayFindManyRel")]), 1399 ], 1400 }, 1401 TypeSpec::Alias { 1402 name: "INostrRelayFindManyResolve", 1403 target: "IResultList<NostrRelay>", 1404 }, 1405 TypeSpec::Union { 1406 name: "INostrRelayFindOne", 1407 variants: &[ 1408 VariantSpec::Ref("INostrRelayFindOneArgs"), 1409 VariantSpec::Ref("INostrRelayFindOneRelArgs"), 1410 ], 1411 }, 1412 TypeSpec::Object { 1413 name: "INostrRelayFindOneArgs", 1414 fields: &[FieldSpec::required("on", "NostrRelayQueryBindValues")], 1415 }, 1416 TypeSpec::Object { 1417 name: "INostrRelayFindOneRelArgs", 1418 fields: &[FieldSpec::required("rel", "NostrRelayFindManyRel")], 1419 }, 1420 TypeSpec::Alias { 1421 name: "INostrRelayFindOneResolve", 1422 target: "IResult<NostrRelay | null>", 1423 }, 1424 TypeSpec::Alias { 1425 name: "INostrRelayUpdate", 1426 target: "INostrRelayUpdateArgs", 1427 }, 1428 TypeSpec::Object { 1429 name: "INostrRelayUpdateArgs", 1430 fields: &[ 1431 FieldSpec::required("on", "NostrRelayQueryBindValues"), 1432 FieldSpec::required("fields", "INostrRelayFieldsPartial"), 1433 ], 1434 }, 1435 TypeSpec::Alias { 1436 name: "INostrRelayUpdateResolve", 1437 target: "IResult<NostrRelay>", 1438 }, 1439 TypeSpec::Alias { 1440 name: "IPlotCreate", 1441 target: "IPlotFields", 1442 }, 1443 TypeSpec::Alias { 1444 name: "IPlotCreateResolve", 1445 target: "IResult<Plot>", 1446 }, 1447 TypeSpec::Alias { 1448 name: "IPlotDelete", 1449 target: "IPlotFindOne", 1450 }, 1451 TypeSpec::Alias { 1452 name: "IPlotDeleteResolve", 1453 target: "IResult<string>", 1454 }, 1455 TypeSpec::Object { 1456 name: "IPlotFields", 1457 fields: &[ 1458 FieldSpec::required("d_tag", "string"), 1459 FieldSpec::required("farm_id", "string"), 1460 FieldSpec::required("name", "string"), 1461 FieldSpec::optional_nullable("about", "string"), 1462 FieldSpec::optional_nullable("location_primary", "string"), 1463 FieldSpec::optional_nullable("location_city", "string"), 1464 FieldSpec::optional_nullable("location_region", "string"), 1465 FieldSpec::optional_nullable("location_country", "string"), 1466 ], 1467 }, 1468 TypeSpec::Object { 1469 name: "IPlotFieldsFilter", 1470 fields: &[ 1471 FieldSpec::optional("id", "string"), 1472 FieldSpec::optional("created_at", "string"), 1473 FieldSpec::optional("updated_at", "string"), 1474 FieldSpec::optional("d_tag", "string"), 1475 FieldSpec::optional("farm_id", "string"), 1476 FieldSpec::optional("name", "string"), 1477 FieldSpec::optional("about", "string"), 1478 FieldSpec::optional("location_primary", "string"), 1479 FieldSpec::optional("location_city", "string"), 1480 FieldSpec::optional("location_region", "string"), 1481 FieldSpec::optional("location_country", "string"), 1482 ], 1483 }, 1484 TypeSpec::Object { 1485 name: "IPlotFieldsPartial", 1486 fields: &[ 1487 FieldSpec::optional_nullable("d_tag", "ReplicaDbJsonValue"), 1488 FieldSpec::optional_nullable("farm_id", "ReplicaDbJsonValue"), 1489 FieldSpec::optional_nullable("name", "ReplicaDbJsonValue"), 1490 FieldSpec::optional_nullable("about", "ReplicaDbJsonValue"), 1491 FieldSpec::optional_nullable("location_primary", "ReplicaDbJsonValue"), 1492 FieldSpec::optional_nullable("location_city", "ReplicaDbJsonValue"), 1493 FieldSpec::optional_nullable("location_region", "ReplicaDbJsonValue"), 1494 FieldSpec::optional_nullable("location_country", "ReplicaDbJsonValue"), 1495 ], 1496 }, 1497 TypeSpec::Alias { 1498 name: "IPlotFindMany", 1499 target: "IPlotFindManyArgs", 1500 }, 1501 TypeSpec::Object { 1502 name: "IPlotFindManyArgs", 1503 fields: &[FieldSpec::nullable("filter", "IPlotFieldsFilter")], 1504 }, 1505 TypeSpec::Alias { 1506 name: "IPlotFindManyResolve", 1507 target: "IResultList<Plot>", 1508 }, 1509 TypeSpec::Union { 1510 name: "IPlotFindOne", 1511 variants: &[VariantSpec::Ref("IPlotFindOneArgs")], 1512 }, 1513 TypeSpec::Object { 1514 name: "IPlotFindOneArgs", 1515 fields: &[FieldSpec::required("on", "PlotQueryBindValues")], 1516 }, 1517 TypeSpec::Alias { 1518 name: "IPlotFindOneResolve", 1519 target: "IResult<Plot | null>", 1520 }, 1521 TypeSpec::Alias { 1522 name: "IPlotGcsLocationCreate", 1523 target: "IPlotGcsLocationFields", 1524 }, 1525 TypeSpec::Alias { 1526 name: "IPlotGcsLocationCreateResolve", 1527 target: "IResult<PlotGcsLocation>", 1528 }, 1529 TypeSpec::Alias { 1530 name: "IPlotGcsLocationDelete", 1531 target: "IPlotGcsLocationFindOne", 1532 }, 1533 TypeSpec::Alias { 1534 name: "IPlotGcsLocationDeleteResolve", 1535 target: "IResult<string>", 1536 }, 1537 TypeSpec::Object { 1538 name: "IPlotGcsLocationFields", 1539 fields: &[ 1540 FieldSpec::required("plot_id", "string"), 1541 FieldSpec::required("gcs_location_id", "string"), 1542 FieldSpec::required("role", "string"), 1543 ], 1544 }, 1545 TypeSpec::Object { 1546 name: "IPlotGcsLocationFieldsFilter", 1547 fields: &[ 1548 FieldSpec::optional("id", "string"), 1549 FieldSpec::optional("created_at", "string"), 1550 FieldSpec::optional("updated_at", "string"), 1551 FieldSpec::optional("plot_id", "string"), 1552 FieldSpec::optional("gcs_location_id", "string"), 1553 FieldSpec::optional("role", "string"), 1554 ], 1555 }, 1556 TypeSpec::Object { 1557 name: "IPlotGcsLocationFieldsPartial", 1558 fields: &[ 1559 FieldSpec::optional_nullable("plot_id", "ReplicaDbJsonValue"), 1560 FieldSpec::optional_nullable("gcs_location_id", "ReplicaDbJsonValue"), 1561 FieldSpec::optional_nullable("role", "ReplicaDbJsonValue"), 1562 ], 1563 }, 1564 TypeSpec::Alias { 1565 name: "IPlotGcsLocationFindMany", 1566 target: "IPlotGcsLocationFindManyArgs", 1567 }, 1568 TypeSpec::Object { 1569 name: "IPlotGcsLocationFindManyArgs", 1570 fields: &[FieldSpec::nullable( 1571 "filter", 1572 "IPlotGcsLocationFieldsFilter", 1573 )], 1574 }, 1575 TypeSpec::Alias { 1576 name: "IPlotGcsLocationFindManyResolve", 1577 target: "IResultList<PlotGcsLocation>", 1578 }, 1579 TypeSpec::Union { 1580 name: "IPlotGcsLocationFindOne", 1581 variants: &[VariantSpec::Ref("IPlotGcsLocationFindOneArgs")], 1582 }, 1583 TypeSpec::Object { 1584 name: "IPlotGcsLocationFindOneArgs", 1585 fields: &[FieldSpec::required("on", "PlotGcsLocationQueryBindValues")], 1586 }, 1587 TypeSpec::Alias { 1588 name: "IPlotGcsLocationFindOneResolve", 1589 target: "IResult<PlotGcsLocation | null>", 1590 }, 1591 TypeSpec::Alias { 1592 name: "IPlotGcsLocationUpdate", 1593 target: "IPlotGcsLocationUpdateArgs", 1594 }, 1595 TypeSpec::Object { 1596 name: "IPlotGcsLocationUpdateArgs", 1597 fields: &[ 1598 FieldSpec::required("on", "PlotGcsLocationQueryBindValues"), 1599 FieldSpec::required("fields", "IPlotGcsLocationFieldsPartial"), 1600 ], 1601 }, 1602 TypeSpec::Alias { 1603 name: "IPlotGcsLocationUpdateResolve", 1604 target: "IResult<PlotGcsLocation>", 1605 }, 1606 TypeSpec::Alias { 1607 name: "IPlotTagCreate", 1608 target: "IPlotTagFields", 1609 }, 1610 TypeSpec::Alias { 1611 name: "IPlotTagCreateResolve", 1612 target: "IResult<PlotTag>", 1613 }, 1614 TypeSpec::Alias { 1615 name: "IPlotTagDelete", 1616 target: "IPlotTagFindOne", 1617 }, 1618 TypeSpec::Alias { 1619 name: "IPlotTagDeleteResolve", 1620 target: "IResult<string>", 1621 }, 1622 TypeSpec::Object { 1623 name: "IPlotTagFields", 1624 fields: &[ 1625 FieldSpec::required("plot_id", "string"), 1626 FieldSpec::required("tag", "string"), 1627 ], 1628 }, 1629 TypeSpec::Object { 1630 name: "IPlotTagFieldsFilter", 1631 fields: &[ 1632 FieldSpec::optional("id", "string"), 1633 FieldSpec::optional("created_at", "string"), 1634 FieldSpec::optional("updated_at", "string"), 1635 FieldSpec::optional("plot_id", "string"), 1636 FieldSpec::optional("tag", "string"), 1637 ], 1638 }, 1639 TypeSpec::Object { 1640 name: "IPlotTagFieldsPartial", 1641 fields: &[ 1642 FieldSpec::optional_nullable("plot_id", "ReplicaDbJsonValue"), 1643 FieldSpec::optional_nullable("tag", "ReplicaDbJsonValue"), 1644 ], 1645 }, 1646 TypeSpec::Alias { 1647 name: "IPlotTagFindMany", 1648 target: "IPlotTagFindManyArgs", 1649 }, 1650 TypeSpec::Object { 1651 name: "IPlotTagFindManyArgs", 1652 fields: &[FieldSpec::nullable("filter", "IPlotTagFieldsFilter")], 1653 }, 1654 TypeSpec::Alias { 1655 name: "IPlotTagFindManyResolve", 1656 target: "IResultList<PlotTag>", 1657 }, 1658 TypeSpec::Union { 1659 name: "IPlotTagFindOne", 1660 variants: &[VariantSpec::Ref("IPlotTagFindOneArgs")], 1661 }, 1662 TypeSpec::Object { 1663 name: "IPlotTagFindOneArgs", 1664 fields: &[FieldSpec::required("on", "PlotTagQueryBindValues")], 1665 }, 1666 TypeSpec::Alias { 1667 name: "IPlotTagFindOneResolve", 1668 target: "IResult<PlotTag | null>", 1669 }, 1670 TypeSpec::Alias { 1671 name: "IPlotTagUpdate", 1672 target: "IPlotTagUpdateArgs", 1673 }, 1674 TypeSpec::Object { 1675 name: "IPlotTagUpdateArgs", 1676 fields: &[ 1677 FieldSpec::required("on", "PlotTagQueryBindValues"), 1678 FieldSpec::required("fields", "IPlotTagFieldsPartial"), 1679 ], 1680 }, 1681 TypeSpec::Alias { 1682 name: "IPlotTagUpdateResolve", 1683 target: "IResult<PlotTag>", 1684 }, 1685 TypeSpec::Alias { 1686 name: "IPlotUpdate", 1687 target: "IPlotUpdateArgs", 1688 }, 1689 TypeSpec::Object { 1690 name: "IPlotUpdateArgs", 1691 fields: &[ 1692 FieldSpec::required("on", "PlotQueryBindValues"), 1693 FieldSpec::required("fields", "IPlotFieldsPartial"), 1694 ], 1695 }, 1696 TypeSpec::Alias { 1697 name: "IPlotUpdateResolve", 1698 target: "IResult<Plot>", 1699 }, 1700 TypeSpec::Alias { 1701 name: "ITradeProductCreate", 1702 target: "ITradeProductFields", 1703 }, 1704 TypeSpec::Alias { 1705 name: "ITradeProductCreateResolve", 1706 target: "IResult<TradeProduct>", 1707 }, 1708 TypeSpec::Alias { 1709 name: "ITradeProductDelete", 1710 target: "ITradeProductFindOne", 1711 }, 1712 TypeSpec::Alias { 1713 name: "ITradeProductDeleteResolve", 1714 target: "IResult<string>", 1715 }, 1716 TypeSpec::Object { 1717 name: "ITradeProductFields", 1718 fields: &[ 1719 FieldSpec::required("key", "string"), 1720 FieldSpec::required("category", "string"), 1721 FieldSpec::required("title", "string"), 1722 FieldSpec::required("summary", "string"), 1723 FieldSpec::required("process", "string"), 1724 FieldSpec::required("lot", "string"), 1725 FieldSpec::required("profile", "string"), 1726 FieldSpec::required("year", "bigint"), 1727 FieldSpec::required("qty_amt", "number"), 1728 FieldSpec::required("qty_amt_exact", "string"), 1729 FieldSpec::required("qty_unit", "string"), 1730 FieldSpec::optional_nullable("qty_label", "string"), 1731 FieldSpec::optional_nullable("qty_avail", "bigint"), 1732 FieldSpec::required("price_amt", "number"), 1733 FieldSpec::required("price_amt_exact", "string"), 1734 FieldSpec::required("price_currency", "string"), 1735 FieldSpec::required("price_qty_amt", "number"), 1736 FieldSpec::required("price_qty_amt_exact", "string"), 1737 FieldSpec::required("price_qty_unit", "string"), 1738 FieldSpec::optional_nullable("listing_addr", "string"), 1739 FieldSpec::optional_nullable("primary_bin_id", "string"), 1740 FieldSpec::optional_nullable("verified_primary_bin_id", "string"), 1741 FieldSpec::optional_nullable("notes", "string"), 1742 ], 1743 }, 1744 TypeSpec::Object { 1745 name: "ITradeProductFieldsFilter", 1746 fields: &[ 1747 FieldSpec::optional("id", "string"), 1748 FieldSpec::optional("created_at", "string"), 1749 FieldSpec::optional("updated_at", "string"), 1750 FieldSpec::optional("key", "string"), 1751 FieldSpec::optional("category", "string"), 1752 FieldSpec::optional("title", "string"), 1753 FieldSpec::optional("summary", "string"), 1754 FieldSpec::optional("process", "string"), 1755 FieldSpec::optional("lot", "string"), 1756 FieldSpec::optional("profile", "string"), 1757 FieldSpec::optional("year", "bigint"), 1758 FieldSpec::optional("qty_amt", "number"), 1759 FieldSpec::optional("qty_amt_exact", "string"), 1760 FieldSpec::optional("qty_unit", "string"), 1761 FieldSpec::optional("qty_label", "string"), 1762 FieldSpec::optional("qty_avail", "bigint"), 1763 FieldSpec::optional("price_amt", "number"), 1764 FieldSpec::optional("price_amt_exact", "string"), 1765 FieldSpec::optional("price_currency", "string"), 1766 FieldSpec::optional("price_qty_amt", "number"), 1767 FieldSpec::optional("price_qty_amt_exact", "string"), 1768 FieldSpec::optional("price_qty_unit", "string"), 1769 FieldSpec::optional("listing_addr", "string"), 1770 FieldSpec::optional("primary_bin_id", "string"), 1771 FieldSpec::optional("verified_primary_bin_id", "string"), 1772 FieldSpec::optional("notes", "string"), 1773 ], 1774 }, 1775 TypeSpec::Object { 1776 name: "ITradeProductFieldsPartial", 1777 fields: &[ 1778 FieldSpec::optional_nullable("key", "ReplicaDbJsonValue"), 1779 FieldSpec::optional_nullable("category", "ReplicaDbJsonValue"), 1780 FieldSpec::optional_nullable("title", "ReplicaDbJsonValue"), 1781 FieldSpec::optional_nullable("summary", "ReplicaDbJsonValue"), 1782 FieldSpec::optional_nullable("process", "ReplicaDbJsonValue"), 1783 FieldSpec::optional_nullable("lot", "ReplicaDbJsonValue"), 1784 FieldSpec::optional_nullable("profile", "ReplicaDbJsonValue"), 1785 FieldSpec::optional_nullable("year", "ReplicaDbJsonValue"), 1786 FieldSpec::optional_nullable("qty_amt", "ReplicaDbJsonValue"), 1787 FieldSpec::optional_nullable("qty_amt_exact", "ReplicaDbJsonValue"), 1788 FieldSpec::optional_nullable("qty_unit", "ReplicaDbJsonValue"), 1789 FieldSpec::optional_nullable("qty_label", "ReplicaDbJsonValue"), 1790 FieldSpec::optional_nullable("qty_avail", "ReplicaDbJsonValue"), 1791 FieldSpec::optional_nullable("price_amt", "ReplicaDbJsonValue"), 1792 FieldSpec::optional_nullable("price_amt_exact", "ReplicaDbJsonValue"), 1793 FieldSpec::optional_nullable("price_currency", "ReplicaDbJsonValue"), 1794 FieldSpec::optional_nullable("price_qty_amt", "ReplicaDbJsonValue"), 1795 FieldSpec::optional_nullable("price_qty_amt_exact", "ReplicaDbJsonValue"), 1796 FieldSpec::optional_nullable("price_qty_unit", "ReplicaDbJsonValue"), 1797 FieldSpec::optional_nullable("listing_addr", "ReplicaDbJsonValue"), 1798 FieldSpec::optional_nullable("primary_bin_id", "ReplicaDbJsonValue"), 1799 FieldSpec::optional_nullable("verified_primary_bin_id", "ReplicaDbJsonValue"), 1800 FieldSpec::optional_nullable("notes", "ReplicaDbJsonValue"), 1801 ], 1802 }, 1803 TypeSpec::Alias { 1804 name: "ITradeProductFindMany", 1805 target: "ITradeProductFindManyArgs", 1806 }, 1807 TypeSpec::Object { 1808 name: "ITradeProductFindManyArgs", 1809 fields: &[FieldSpec::nullable("filter", "ITradeProductFieldsFilter")], 1810 }, 1811 TypeSpec::Alias { 1812 name: "ITradeProductFindManyResolve", 1813 target: "IResultList<TradeProduct>", 1814 }, 1815 TypeSpec::Union { 1816 name: "ITradeProductFindOne", 1817 variants: &[VariantSpec::Ref("ITradeProductFindOneArgs")], 1818 }, 1819 TypeSpec::Object { 1820 name: "ITradeProductFindOneArgs", 1821 fields: &[FieldSpec::required("on", "TradeProductQueryBindValues")], 1822 }, 1823 TypeSpec::Alias { 1824 name: "ITradeProductFindOneResolve", 1825 target: "IResult<TradeProduct | null>", 1826 }, 1827 TypeSpec::Object { 1828 name: "ITradeProductLocationRelation", 1829 fields: &[ 1830 FieldSpec::required("trade_product", "TradeProductQueryBindValues"), 1831 FieldSpec::required("gcs_location", "GcsLocationQueryBindValues"), 1832 ], 1833 }, 1834 TypeSpec::Alias { 1835 name: "ITradeProductLocationResolve", 1836 target: "IResultPass", 1837 }, 1838 TypeSpec::Object { 1839 name: "ITradeProductMediaRelation", 1840 fields: &[ 1841 FieldSpec::required("trade_product", "TradeProductQueryBindValues"), 1842 FieldSpec::required("media_image", "MediaImageQueryBindValues"), 1843 ], 1844 }, 1845 TypeSpec::Alias { 1846 name: "ITradeProductMediaResolve", 1847 target: "IResultPass", 1848 }, 1849 TypeSpec::Alias { 1850 name: "ITradeProductUpdate", 1851 target: "ITradeProductUpdateArgs", 1852 }, 1853 TypeSpec::Object { 1854 name: "ITradeProductUpdateArgs", 1855 fields: &[ 1856 FieldSpec::required("on", "TradeProductQueryBindValues"), 1857 FieldSpec::required("fields", "ITradeProductFieldsPartial"), 1858 ], 1859 }, 1860 TypeSpec::Alias { 1861 name: "ITradeProductUpdateResolve", 1862 target: "IResult<TradeProduct>", 1863 }, 1864 TypeSpec::Object { 1865 name: "LogError", 1866 fields: &[ 1867 FieldSpec::required("id", "string"), 1868 FieldSpec::required("created_at", "string"), 1869 FieldSpec::required("updated_at", "string"), 1870 FieldSpec::required("error", "string"), 1871 FieldSpec::required("message", "string"), 1872 FieldSpec::nullable("stack_trace", "string"), 1873 FieldSpec::nullable("cause", "string"), 1874 FieldSpec::required("app_system", "string"), 1875 FieldSpec::required("app_version", "string"), 1876 FieldSpec::required("nostr_pubkey", "string"), 1877 FieldSpec::nullable("data", "string"), 1878 ], 1879 }, 1880 TypeSpec::Union { 1881 name: "LogErrorQueryBindValues", 1882 variants: &[ 1883 VariantSpec::Object(&[FieldSpec::required("id", "string")]), 1884 VariantSpec::Object(&[FieldSpec::required("nostr_pubkey", "string")]), 1885 ], 1886 }, 1887 TypeSpec::Object { 1888 name: "MediaImage", 1889 fields: &[ 1890 FieldSpec::required("id", "string"), 1891 FieldSpec::required("created_at", "string"), 1892 FieldSpec::required("updated_at", "string"), 1893 FieldSpec::required("file_path", "string"), 1894 FieldSpec::required("mime_type", "string"), 1895 FieldSpec::required("res_base", "string"), 1896 FieldSpec::required("res_path", "string"), 1897 FieldSpec::nullable("label", "string"), 1898 FieldSpec::nullable("description", "string"), 1899 ], 1900 }, 1901 TypeSpec::Union { 1902 name: "MediaImageFindManyRel", 1903 variants: &[ 1904 VariantSpec::Object(&[FieldSpec::required( 1905 "on_trade_product", 1906 "MediaImageTradeProductArgs", 1907 )]), 1908 VariantSpec::Object(&[FieldSpec::required( 1909 "off_trade_product", 1910 "MediaImageTradeProductArgs", 1911 )]), 1912 ], 1913 }, 1914 TypeSpec::Union { 1915 name: "MediaImageQueryBindValues", 1916 variants: &[ 1917 VariantSpec::Object(&[FieldSpec::required("id", "string")]), 1918 VariantSpec::Object(&[FieldSpec::required("file_path", "string")]), 1919 ], 1920 }, 1921 TypeSpec::Object { 1922 name: "MediaImageTradeProductArgs", 1923 fields: &[FieldSpec::required("id", "string")], 1924 }, 1925 TypeSpec::Object { 1926 name: "NostrEventHead", 1927 fields: &[ 1928 FieldSpec::required("id", "string"), 1929 FieldSpec::required("created_at", "string"), 1930 FieldSpec::required("updated_at", "string"), 1931 FieldSpec::required("key", "string"), 1932 FieldSpec::required("kind", "number"), 1933 FieldSpec::required("pubkey", "string"), 1934 FieldSpec::required("d_tag", "string"), 1935 FieldSpec::required("last_event_id", "string"), 1936 FieldSpec::required("last_created_at", "number"), 1937 FieldSpec::required("content_hash", "string"), 1938 ], 1939 }, 1940 TypeSpec::Union { 1941 name: "NostrEventHeadQueryBindValues", 1942 variants: &[ 1943 VariantSpec::Object(&[FieldSpec::required("id", "string")]), 1944 VariantSpec::Object(&[FieldSpec::required("key", "string")]), 1945 ], 1946 }, 1947 TypeSpec::Object { 1948 name: "NostrProfile", 1949 fields: &[ 1950 FieldSpec::required("id", "string"), 1951 FieldSpec::required("created_at", "string"), 1952 FieldSpec::required("updated_at", "string"), 1953 FieldSpec::required("public_key", "string"), 1954 FieldSpec::required("profile_type", "string"), 1955 FieldSpec::required("name", "string"), 1956 FieldSpec::nullable("display_name", "string"), 1957 FieldSpec::nullable("about", "string"), 1958 FieldSpec::nullable("website", "string"), 1959 FieldSpec::nullable("picture", "string"), 1960 FieldSpec::nullable("banner", "string"), 1961 FieldSpec::nullable("nip05", "string"), 1962 FieldSpec::nullable("lud06", "string"), 1963 FieldSpec::nullable("lud16", "string"), 1964 ], 1965 }, 1966 TypeSpec::Union { 1967 name: "NostrProfileFindManyRel", 1968 variants: &[ 1969 VariantSpec::Object(&[FieldSpec::required("on_relay", "NostrProfileRelayArgs")]), 1970 VariantSpec::Object(&[FieldSpec::required("off_relay", "NostrProfileRelayArgs")]), 1971 ], 1972 }, 1973 TypeSpec::Union { 1974 name: "NostrProfileQueryBindValues", 1975 variants: &[ 1976 VariantSpec::Object(&[FieldSpec::required("id", "string")]), 1977 VariantSpec::Object(&[FieldSpec::required("public_key", "string")]), 1978 ], 1979 }, 1980 TypeSpec::Object { 1981 name: "NostrProfileRelayArgs", 1982 fields: &[FieldSpec::required("id", "string")], 1983 }, 1984 TypeSpec::Object { 1985 name: "NostrRelay", 1986 fields: &[ 1987 FieldSpec::required("id", "string"), 1988 FieldSpec::required("created_at", "string"), 1989 FieldSpec::required("updated_at", "string"), 1990 FieldSpec::required("url", "string"), 1991 FieldSpec::nullable("relay_id", "string"), 1992 FieldSpec::nullable("name", "string"), 1993 FieldSpec::nullable("description", "string"), 1994 FieldSpec::nullable("pubkey", "string"), 1995 FieldSpec::nullable("contact", "string"), 1996 FieldSpec::nullable("supported_nips", "string"), 1997 FieldSpec::nullable("software", "string"), 1998 FieldSpec::nullable("version", "string"), 1999 FieldSpec::nullable("data", "string"), 2000 ], 2001 }, 2002 TypeSpec::Union { 2003 name: "NostrRelayFindManyRel", 2004 variants: &[ 2005 VariantSpec::Object(&[FieldSpec::required("on_profile", "NostrRelayProfileArgs")]), 2006 VariantSpec::Object(&[FieldSpec::required("off_profile", "NostrRelayProfileArgs")]), 2007 ], 2008 }, 2009 TypeSpec::Object { 2010 name: "NostrRelayProfileArgs", 2011 fields: &[FieldSpec::required("public_key", "string")], 2012 }, 2013 TypeSpec::Union { 2014 name: "NostrRelayQueryBindValues", 2015 variants: &[ 2016 VariantSpec::Object(&[FieldSpec::required("id", "string")]), 2017 VariantSpec::Object(&[FieldSpec::required("url", "string")]), 2018 ], 2019 }, 2020 TypeSpec::Object { 2021 name: "Plot", 2022 fields: &[ 2023 FieldSpec::required("id", "string"), 2024 FieldSpec::required("created_at", "string"), 2025 FieldSpec::required("updated_at", "string"), 2026 FieldSpec::required("d_tag", "string"), 2027 FieldSpec::required("farm_id", "string"), 2028 FieldSpec::required("name", "string"), 2029 FieldSpec::nullable("about", "string"), 2030 FieldSpec::nullable("location_primary", "string"), 2031 FieldSpec::nullable("location_city", "string"), 2032 FieldSpec::nullable("location_region", "string"), 2033 FieldSpec::nullable("location_country", "string"), 2034 ], 2035 }, 2036 TypeSpec::Object { 2037 name: "PlotGcsLocation", 2038 fields: &[ 2039 FieldSpec::required("id", "string"), 2040 FieldSpec::required("created_at", "string"), 2041 FieldSpec::required("updated_at", "string"), 2042 FieldSpec::required("plot_id", "string"), 2043 FieldSpec::required("gcs_location_id", "string"), 2044 FieldSpec::required("role", "string"), 2045 ], 2046 }, 2047 TypeSpec::Union { 2048 name: "PlotGcsLocationQueryBindValues", 2049 variants: &[ 2050 VariantSpec::Object(&[FieldSpec::required("id", "string")]), 2051 VariantSpec::Object(&[FieldSpec::required("plot_id", "string")]), 2052 VariantSpec::Object(&[FieldSpec::required("gcs_location_id", "string")]), 2053 ], 2054 }, 2055 TypeSpec::Union { 2056 name: "PlotQueryBindValues", 2057 variants: &[ 2058 VariantSpec::Object(&[FieldSpec::required("id", "string")]), 2059 VariantSpec::Object(&[FieldSpec::required("d_tag", "string")]), 2060 VariantSpec::Object(&[FieldSpec::required("farm_id", "string")]), 2061 ], 2062 }, 2063 TypeSpec::Object { 2064 name: "PlotTag", 2065 fields: &[ 2066 FieldSpec::required("id", "string"), 2067 FieldSpec::required("created_at", "string"), 2068 FieldSpec::required("updated_at", "string"), 2069 FieldSpec::required("plot_id", "string"), 2070 FieldSpec::required("tag", "string"), 2071 ], 2072 }, 2073 TypeSpec::Union { 2074 name: "PlotTagQueryBindValues", 2075 variants: &[ 2076 VariantSpec::Object(&[FieldSpec::required("id", "string")]), 2077 VariantSpec::Object(&[FieldSpec::required("plot_id", "string")]), 2078 VariantSpec::Object(&[FieldSpec::required("tag", "string")]), 2079 ], 2080 }, 2081 TypeSpec::Alias { 2082 name: "ReplicaDbJsonValue", 2083 target: "null | boolean | number | string | Array<ReplicaDbJsonValue> | { [key: string]: ReplicaDbJsonValue }", 2084 }, 2085 TypeSpec::Object { 2086 name: "TradeProduct", 2087 fields: &[ 2088 FieldSpec::required("id", "string"), 2089 FieldSpec::required("created_at", "string"), 2090 FieldSpec::required("updated_at", "string"), 2091 FieldSpec::required("key", "string"), 2092 FieldSpec::required("category", "string"), 2093 FieldSpec::required("title", "string"), 2094 FieldSpec::required("summary", "string"), 2095 FieldSpec::required("process", "string"), 2096 FieldSpec::required("lot", "string"), 2097 FieldSpec::required("profile", "string"), 2098 FieldSpec::required("year", "bigint"), 2099 FieldSpec::required("qty_amt", "number"), 2100 FieldSpec::nullable("qty_amt_exact", "string"), 2101 FieldSpec::required("qty_unit", "string"), 2102 FieldSpec::nullable("qty_label", "string"), 2103 FieldSpec::nullable("qty_avail", "bigint"), 2104 FieldSpec::required("price_amt", "number"), 2105 FieldSpec::nullable("price_amt_exact", "string"), 2106 FieldSpec::required("price_currency", "string"), 2107 FieldSpec::required("price_qty_amt", "number"), 2108 FieldSpec::nullable("price_qty_amt_exact", "string"), 2109 FieldSpec::required("price_qty_unit", "string"), 2110 FieldSpec::nullable("listing_addr", "string"), 2111 FieldSpec::nullable("primary_bin_id", "string"), 2112 FieldSpec::nullable("verified_primary_bin_id", "string"), 2113 FieldSpec::nullable("notes", "string"), 2114 ], 2115 }, 2116 TypeSpec::Union { 2117 name: "TradeProductQueryBindValues", 2118 variants: &[VariantSpec::Object(&[FieldSpec::required("id", "string")])], 2119 }, 2120 ]; 2121 2122 #[cfg(test)] 2123 mod tests { 2124 use super::{FieldSpec, TYPE_SPECS, TypeSpec, VariantSpec, dto_registry, type_inventory}; 2125 2126 #[test] 2127 fn registry_exports_known_schema_types() { 2128 let registry = dto_registry(); 2129 assert!(!registry.has_errors(), "{:?}", registry.diagnostics); 2130 assert!(type_inventory().contains(&"Farm")); 2131 assert!(type_inventory().contains(&"NostrEventHead")); 2132 assert!(type_inventory().contains(&"ReplicaDbJsonValue")); 2133 } 2134 2135 #[test] 2136 fn source_find_one_resolves_preserve_nullable_result() { 2137 assert!(TYPE_SPECS.iter().any(|spec| matches!( 2138 spec, 2139 TypeSpec::Alias { 2140 name: "IFarmFindOneResolve", 2141 target: "IResult<Farm | null>" 2142 } 2143 ))); 2144 } 2145 2146 #[test] 2147 fn relation_find_many_inputs_preserve_filter_and_rel_variants() { 2148 for (name, filter, rel) in [ 2149 ( 2150 "IGcsLocationFindMany", 2151 "IGcsLocationFieldsFilter", 2152 "GcsLocationFindManyRel", 2153 ), 2154 ( 2155 "IMediaImageFindMany", 2156 "IMediaImageFieldsFilter", 2157 "MediaImageFindManyRel", 2158 ), 2159 ( 2160 "INostrProfileFindMany", 2161 "INostrProfileFieldsFilter", 2162 "NostrProfileFindManyRel", 2163 ), 2164 ( 2165 "INostrRelayFindMany", 2166 "INostrRelayFieldsFilter", 2167 "NostrRelayFindManyRel", 2168 ), 2169 ] { 2170 assert!(TYPE_SPECS.iter().any(|spec| matches!( 2171 spec, 2172 TypeSpec::Union { name: actual_name, variants } 2173 if *actual_name == name 2174 && variants.len() == 2 2175 && matches!(variants[0], VariantSpec::Object(fields) if fields.len() == 1 && fields[0] == FieldSpec::nullable("filter", filter)) 2176 && matches!(variants[1], VariantSpec::Object(fields) if fields.len() == 1 && fields[0] == FieldSpec::required("rel", rel)) 2177 ))); 2178 } 2179 } 2180 2181 #[test] 2182 fn serde_json_value_policy_is_explicit() { 2183 assert!(TYPE_SPECS.iter().any(|spec| matches!( 2184 spec, 2185 TypeSpec::Alias { name: "ReplicaDbJsonValue", target } if target.contains("[key: string]: ReplicaDbJsonValue") 2186 ))); 2187 assert!(TYPE_SPECS.iter().any(|spec| matches!( 2188 spec, 2189 TypeSpec::Object { name: "ITradeProductFieldsPartial", fields } if fields.iter().any(|field| field.name == "year" && field.target == "ReplicaDbJsonValue" && field.optional && field.nullable) 2190 ))); 2191 } 2192 2193 #[test] 2194 fn trade_product_large_integer_policy_is_explicit() { 2195 assert!(TYPE_SPECS.iter().any(|spec| matches!( 2196 spec, 2197 TypeSpec::Object { name: "TradeProduct", fields } if fields.iter().any(|field| field.name == "year" && field.target == "bigint") 2198 ))); 2199 assert!(TYPE_SPECS.iter().any(|spec| matches!( 2200 spec, 2201 TypeSpec::Object { name: "ITradeProductFieldsFilter", fields } if fields.iter().any(|field| field.name == "qty_avail" && field.target == "bigint" && field.optional) 2202 ))); 2203 } 2204 }