commit eff18cb4c3d5ed9c8bee656f20d19e4dcadfb103 parent 9ca62a116e9c7ec1c30136b86524b96b86c741d5 Author: triesap <tyson@radroots.org> Date: Sat, 11 Jul 2026 22:22:41 +0000 crate-surface: delete generic types crate - delete the retired radroots_types crate and manifest entries - move result and error envelopes into replica schema ownership - update replica store and sync code to use ReplicaSchema result contracts - keep lock and coverage metadata aligned with the removed crate Diffstat:
61 files changed, 1037 insertions(+), 844 deletions(-)
diff --git a/Cargo.lock b/Cargo.lock @@ -4565,7 +4565,6 @@ dependencies = [ "hex", "radroots_replica_db_schema", "radroots_sql_core", - "radroots_types", "serde", "serde_json", "sha2", @@ -4576,7 +4575,6 @@ name = "radroots_replica_db_schema" version = "0.1.0-alpha.2" dependencies = [ "dto_bindgen_core", - "radroots_types", "serde", "serde_json", ] @@ -4593,7 +4591,6 @@ dependencies = [ "radroots_replica_db", "radroots_replica_db_schema", "radroots_sql_core", - "radroots_types", "serde", "serde_json", "sha2", @@ -4903,14 +4900,6 @@ dependencies = [ ] [[package]] -name = "radroots_types" -version = "0.1.0-alpha.2" -dependencies = [ - "serde", - "serde_json", -] - -[[package]] name = "rand" version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" diff --git a/Cargo.toml b/Cargo.toml @@ -44,7 +44,6 @@ members = [ "crates/sp1_host_trade", "crates/trade", "crates/transport", - "crates/types", "crates/mesh", "crates/mesh_agent_client", "crates/mesh_agent_proto", @@ -105,7 +104,6 @@ radroots_replica_sync = { path = "crates/replica_sync", version = "0.1.0-alpha.2 radroots_replica_db = { path = "crates/replica_db", version = "0.1.0-alpha.2", default-features = false } radroots_trade = { path = "crates/trade", version = "0.1.0-alpha.2", default-features = false } radroots_transport = { path = "crates/transport", version = "0.1.0-alpha.2", default-features = false } -radroots_types = { path = "crates/types", version = "0.1.0-alpha.2", default-features = false } radroots_mesh = { path = "crates/mesh", version = "0.1.0-alpha.2", default-features = false } radroots_mesh_agent_client = { path = "crates/mesh_agent_client", version = "0.1.0-alpha.2", default-features = false } radroots_mesh_agent_proto = { path = "crates/mesh_agent_proto", version = "0.1.0-alpha.2", default-features = false } diff --git a/build/nix/common.nix b/build/nix/common.nix @@ -88,7 +88,6 @@ let coreContractCrates = [ "xtask" "radroots_core" - "radroots_types" "radroots_event" "radroots_trade" "radroots_identity" diff --git a/contracts/coverage.toml b/contracts/coverage.toml @@ -70,6 +70,5 @@ crates = [ "radroots_test_fixtures", "radroots_trade", "radroots_transport", - "radroots_types", "xtask", ] diff --git a/contracts/manifest.toml b/contracts/manifest.toml @@ -40,7 +40,6 @@ published_support = [ "radroots_replica_sync", ] deferred_publication = [ - "radroots_types", "radroots_authority", "radroots_event_store", "radroots_outbox", diff --git a/crates/replica_db/Cargo.toml b/crates/replica_db/Cargo.toml @@ -24,7 +24,6 @@ native = ["std", "radroots_sql_core/native"] [dependencies] radroots_sql_core = { workspace = true } radroots_replica_db_schema = { workspace = true } -radroots_types = { workspace = true } serde = { workspace = true } serde_json = { workspace = true } hex = { workspace = true } diff --git a/crates/replica_db/src/lib.rs b/crates/replica_db/src/lib.rs @@ -1,6 +1,6 @@ +use radroots_replica_db_schema::ReplicaSchemaError; pub use radroots_sql_core::error::SqlError; pub use radroots_sql_core::{ExecOutcome, SqlExecutor}; -use radroots_types::types::IError; use radroots_replica_db_schema::farm::{ IFarmCreate, IFarmCreateResolve, IFarmDelete, IFarmDeleteResolve, IFarmFindMany, @@ -163,552 +163,570 @@ impl<E: SqlExecutor> ReplicaSql<E> { crate::backup::restore_database_backup_json(self.executor(), backup_json) } - pub fn farm_create(&self, opts: &IFarmCreate) -> Result<IFarmCreateResolve, IError<SqlError>> { + pub fn farm_create( + &self, + opts: &IFarmCreate, + ) -> Result<IFarmCreateResolve, ReplicaSchemaError<SqlError>> { models::farm::create(self.executor(), opts) } pub fn farm_find_many( &self, opts: &IFarmFindMany, - ) -> Result<IFarmFindManyResolve, IError<SqlError>> { + ) -> Result<IFarmFindManyResolve, ReplicaSchemaError<SqlError>> { models::farm::find_many(self.executor(), opts) } pub fn farm_find_one( &self, opts: &IFarmFindOne, - ) -> Result<IFarmFindOneResolve, IError<SqlError>> { + ) -> Result<IFarmFindOneResolve, ReplicaSchemaError<SqlError>> { models::farm::find_one(self.executor(), opts) } - pub fn farm_update(&self, opts: &IFarmUpdate) -> Result<IFarmUpdateResolve, IError<SqlError>> { + pub fn farm_update( + &self, + opts: &IFarmUpdate, + ) -> Result<IFarmUpdateResolve, ReplicaSchemaError<SqlError>> { models::farm::update(self.executor(), opts) } - pub fn farm_delete(&self, opts: &IFarmDelete) -> Result<IFarmDeleteResolve, IError<SqlError>> { + pub fn farm_delete( + &self, + opts: &IFarmDelete, + ) -> Result<IFarmDeleteResolve, ReplicaSchemaError<SqlError>> { models::farm::delete(self.executor(), opts) } - pub fn plot_create(&self, opts: &IPlotCreate) -> Result<IPlotCreateResolve, IError<SqlError>> { + pub fn plot_create( + &self, + opts: &IPlotCreate, + ) -> Result<IPlotCreateResolve, ReplicaSchemaError<SqlError>> { models::plot::create(self.executor(), opts) } pub fn plot_find_many( &self, opts: &IPlotFindMany, - ) -> Result<IPlotFindManyResolve, IError<SqlError>> { + ) -> Result<IPlotFindManyResolve, ReplicaSchemaError<SqlError>> { models::plot::find_many(self.executor(), opts) } pub fn plot_find_one( &self, opts: &IPlotFindOne, - ) -> Result<IPlotFindOneResolve, IError<SqlError>> { + ) -> Result<IPlotFindOneResolve, ReplicaSchemaError<SqlError>> { models::plot::find_one(self.executor(), opts) } - pub fn plot_update(&self, opts: &IPlotUpdate) -> Result<IPlotUpdateResolve, IError<SqlError>> { + pub fn plot_update( + &self, + opts: &IPlotUpdate, + ) -> Result<IPlotUpdateResolve, ReplicaSchemaError<SqlError>> { models::plot::update(self.executor(), opts) } - pub fn plot_delete(&self, opts: &IPlotDelete) -> Result<IPlotDeleteResolve, IError<SqlError>> { + pub fn plot_delete( + &self, + opts: &IPlotDelete, + ) -> Result<IPlotDeleteResolve, ReplicaSchemaError<SqlError>> { models::plot::delete(self.executor(), opts) } pub fn gcs_location_create( &self, opts: &IGcsLocationCreate, - ) -> Result<IGcsLocationCreateResolve, IError<SqlError>> { + ) -> Result<IGcsLocationCreateResolve, ReplicaSchemaError<SqlError>> { models::gcs_location::create(self.executor(), opts) } pub fn gcs_location_find_many( &self, opts: &IGcsLocationFindMany, - ) -> Result<IGcsLocationFindManyResolve, IError<SqlError>> { + ) -> Result<IGcsLocationFindManyResolve, ReplicaSchemaError<SqlError>> { models::gcs_location::find_many(self.executor(), opts) } pub fn gcs_location_find_one( &self, opts: &IGcsLocationFindOne, - ) -> Result<IGcsLocationFindOneResolve, IError<SqlError>> { + ) -> Result<IGcsLocationFindOneResolve, ReplicaSchemaError<SqlError>> { models::gcs_location::find_one(self.executor(), opts) } pub fn gcs_location_update( &self, opts: &IGcsLocationUpdate, - ) -> Result<IGcsLocationUpdateResolve, IError<SqlError>> { + ) -> Result<IGcsLocationUpdateResolve, ReplicaSchemaError<SqlError>> { models::gcs_location::update(self.executor(), opts) } pub fn gcs_location_delete( &self, opts: &IGcsLocationDelete, - ) -> Result<IGcsLocationDeleteResolve, IError<SqlError>> { + ) -> Result<IGcsLocationDeleteResolve, ReplicaSchemaError<SqlError>> { models::gcs_location::delete(self.executor(), opts) } pub fn farm_gcs_location_create( &self, opts: &IFarmGcsLocationCreate, - ) -> Result<IFarmGcsLocationCreateResolve, IError<SqlError>> { + ) -> Result<IFarmGcsLocationCreateResolve, ReplicaSchemaError<SqlError>> { models::farm_gcs_location::create(self.executor(), opts) } pub fn farm_gcs_location_find_many( &self, opts: &IFarmGcsLocationFindMany, - ) -> Result<IFarmGcsLocationFindManyResolve, IError<SqlError>> { + ) -> Result<IFarmGcsLocationFindManyResolve, ReplicaSchemaError<SqlError>> { models::farm_gcs_location::find_many(self.executor(), opts) } pub fn farm_gcs_location_find_one( &self, opts: &IFarmGcsLocationFindOne, - ) -> Result<IFarmGcsLocationFindOneResolve, IError<SqlError>> { + ) -> Result<IFarmGcsLocationFindOneResolve, ReplicaSchemaError<SqlError>> { models::farm_gcs_location::find_one(self.executor(), opts) } pub fn farm_gcs_location_update( &self, opts: &IFarmGcsLocationUpdate, - ) -> Result<IFarmGcsLocationUpdateResolve, IError<SqlError>> { + ) -> Result<IFarmGcsLocationUpdateResolve, ReplicaSchemaError<SqlError>> { models::farm_gcs_location::update(self.executor(), opts) } pub fn farm_gcs_location_delete( &self, opts: &IFarmGcsLocationDelete, - ) -> Result<IFarmGcsLocationDeleteResolve, IError<SqlError>> { + ) -> Result<IFarmGcsLocationDeleteResolve, ReplicaSchemaError<SqlError>> { models::farm_gcs_location::delete(self.executor(), opts) } pub fn plot_gcs_location_create( &self, opts: &IPlotGcsLocationCreate, - ) -> Result<IPlotGcsLocationCreateResolve, IError<SqlError>> { + ) -> Result<IPlotGcsLocationCreateResolve, ReplicaSchemaError<SqlError>> { models::plot_gcs_location::create(self.executor(), opts) } pub fn plot_gcs_location_find_many( &self, opts: &IPlotGcsLocationFindMany, - ) -> Result<IPlotGcsLocationFindManyResolve, IError<SqlError>> { + ) -> Result<IPlotGcsLocationFindManyResolve, ReplicaSchemaError<SqlError>> { models::plot_gcs_location::find_many(self.executor(), opts) } pub fn plot_gcs_location_find_one( &self, opts: &IPlotGcsLocationFindOne, - ) -> Result<IPlotGcsLocationFindOneResolve, IError<SqlError>> { + ) -> Result<IPlotGcsLocationFindOneResolve, ReplicaSchemaError<SqlError>> { models::plot_gcs_location::find_one(self.executor(), opts) } pub fn plot_gcs_location_update( &self, opts: &IPlotGcsLocationUpdate, - ) -> Result<IPlotGcsLocationUpdateResolve, IError<SqlError>> { + ) -> Result<IPlotGcsLocationUpdateResolve, ReplicaSchemaError<SqlError>> { models::plot_gcs_location::update(self.executor(), opts) } pub fn plot_gcs_location_delete( &self, opts: &IPlotGcsLocationDelete, - ) -> Result<IPlotGcsLocationDeleteResolve, IError<SqlError>> { + ) -> Result<IPlotGcsLocationDeleteResolve, ReplicaSchemaError<SqlError>> { models::plot_gcs_location::delete(self.executor(), opts) } pub fn farm_tag_create( &self, opts: &IFarmTagCreate, - ) -> Result<IFarmTagCreateResolve, IError<SqlError>> { + ) -> Result<IFarmTagCreateResolve, ReplicaSchemaError<SqlError>> { models::farm_tag::create(self.executor(), opts) } pub fn farm_tag_find_many( &self, opts: &IFarmTagFindMany, - ) -> Result<IFarmTagFindManyResolve, IError<SqlError>> { + ) -> Result<IFarmTagFindManyResolve, ReplicaSchemaError<SqlError>> { models::farm_tag::find_many(self.executor(), opts) } pub fn farm_tag_find_one( &self, opts: &IFarmTagFindOne, - ) -> Result<IFarmTagFindOneResolve, IError<SqlError>> { + ) -> Result<IFarmTagFindOneResolve, ReplicaSchemaError<SqlError>> { models::farm_tag::find_one(self.executor(), opts) } pub fn farm_tag_update( &self, opts: &IFarmTagUpdate, - ) -> Result<IFarmTagUpdateResolve, IError<SqlError>> { + ) -> Result<IFarmTagUpdateResolve, ReplicaSchemaError<SqlError>> { models::farm_tag::update(self.executor(), opts) } pub fn farm_tag_delete( &self, opts: &IFarmTagDelete, - ) -> Result<IFarmTagDeleteResolve, IError<SqlError>> { + ) -> Result<IFarmTagDeleteResolve, ReplicaSchemaError<SqlError>> { models::farm_tag::delete(self.executor(), opts) } pub fn plot_tag_create( &self, opts: &IPlotTagCreate, - ) -> Result<IPlotTagCreateResolve, IError<SqlError>> { + ) -> Result<IPlotTagCreateResolve, ReplicaSchemaError<SqlError>> { models::plot_tag::create(self.executor(), opts) } pub fn plot_tag_find_many( &self, opts: &IPlotTagFindMany, - ) -> Result<IPlotTagFindManyResolve, IError<SqlError>> { + ) -> Result<IPlotTagFindManyResolve, ReplicaSchemaError<SqlError>> { models::plot_tag::find_many(self.executor(), opts) } pub fn plot_tag_find_one( &self, opts: &IPlotTagFindOne, - ) -> Result<IPlotTagFindOneResolve, IError<SqlError>> { + ) -> Result<IPlotTagFindOneResolve, ReplicaSchemaError<SqlError>> { models::plot_tag::find_one(self.executor(), opts) } pub fn plot_tag_update( &self, opts: &IPlotTagUpdate, - ) -> Result<IPlotTagUpdateResolve, IError<SqlError>> { + ) -> Result<IPlotTagUpdateResolve, ReplicaSchemaError<SqlError>> { models::plot_tag::update(self.executor(), opts) } pub fn plot_tag_delete( &self, opts: &IPlotTagDelete, - ) -> Result<IPlotTagDeleteResolve, IError<SqlError>> { + ) -> Result<IPlotTagDeleteResolve, ReplicaSchemaError<SqlError>> { models::plot_tag::delete(self.executor(), opts) } pub fn farm_member_create( &self, opts: &IFarmMemberCreate, - ) -> Result<IFarmMemberCreateResolve, IError<SqlError>> { + ) -> Result<IFarmMemberCreateResolve, ReplicaSchemaError<SqlError>> { models::farm_member::create(self.executor(), opts) } pub fn farm_member_find_many( &self, opts: &IFarmMemberFindMany, - ) -> Result<IFarmMemberFindManyResolve, IError<SqlError>> { + ) -> Result<IFarmMemberFindManyResolve, ReplicaSchemaError<SqlError>> { models::farm_member::find_many(self.executor(), opts) } pub fn farm_member_find_one( &self, opts: &IFarmMemberFindOne, - ) -> Result<IFarmMemberFindOneResolve, IError<SqlError>> { + ) -> Result<IFarmMemberFindOneResolve, ReplicaSchemaError<SqlError>> { models::farm_member::find_one(self.executor(), opts) } pub fn farm_member_update( &self, opts: &IFarmMemberUpdate, - ) -> Result<IFarmMemberUpdateResolve, IError<SqlError>> { + ) -> Result<IFarmMemberUpdateResolve, ReplicaSchemaError<SqlError>> { models::farm_member::update(self.executor(), opts) } pub fn farm_member_delete( &self, opts: &IFarmMemberDelete, - ) -> Result<IFarmMemberDeleteResolve, IError<SqlError>> { + ) -> Result<IFarmMemberDeleteResolve, ReplicaSchemaError<SqlError>> { models::farm_member::delete(self.executor(), opts) } pub fn farm_member_claim_create( &self, opts: &IFarmMemberClaimCreate, - ) -> Result<IFarmMemberClaimCreateResolve, IError<SqlError>> { + ) -> Result<IFarmMemberClaimCreateResolve, ReplicaSchemaError<SqlError>> { models::farm_member_claim::create(self.executor(), opts) } pub fn farm_member_claim_find_many( &self, opts: &IFarmMemberClaimFindMany, - ) -> Result<IFarmMemberClaimFindManyResolve, IError<SqlError>> { + ) -> Result<IFarmMemberClaimFindManyResolve, ReplicaSchemaError<SqlError>> { models::farm_member_claim::find_many(self.executor(), opts) } pub fn farm_member_claim_find_one( &self, opts: &IFarmMemberClaimFindOne, - ) -> Result<IFarmMemberClaimFindOneResolve, IError<SqlError>> { + ) -> Result<IFarmMemberClaimFindOneResolve, ReplicaSchemaError<SqlError>> { models::farm_member_claim::find_one(self.executor(), opts) } pub fn farm_member_claim_update( &self, opts: &IFarmMemberClaimUpdate, - ) -> Result<IFarmMemberClaimUpdateResolve, IError<SqlError>> { + ) -> Result<IFarmMemberClaimUpdateResolve, ReplicaSchemaError<SqlError>> { models::farm_member_claim::update(self.executor(), opts) } pub fn farm_member_claim_delete( &self, opts: &IFarmMemberClaimDelete, - ) -> Result<IFarmMemberClaimDeleteResolve, IError<SqlError>> { + ) -> Result<IFarmMemberClaimDeleteResolve, ReplicaSchemaError<SqlError>> { models::farm_member_claim::delete(self.executor(), opts) } pub fn log_error_create( &self, opts: &ILogErrorCreate, - ) -> Result<ILogErrorCreateResolve, IError<SqlError>> { + ) -> Result<ILogErrorCreateResolve, ReplicaSchemaError<SqlError>> { models::log_error::create(self.executor(), opts) } pub fn log_error_find_many( &self, opts: &ILogErrorFindMany, - ) -> Result<ILogErrorFindManyResolve, IError<SqlError>> { + ) -> Result<ILogErrorFindManyResolve, ReplicaSchemaError<SqlError>> { models::log_error::find_many(self.executor(), opts) } pub fn log_error_find_one( &self, opts: &ILogErrorFindOne, - ) -> Result<ILogErrorFindOneResolve, IError<SqlError>> { + ) -> Result<ILogErrorFindOneResolve, ReplicaSchemaError<SqlError>> { models::log_error::find_one(self.executor(), opts) } pub fn log_error_update( &self, opts: &ILogErrorUpdate, - ) -> Result<ILogErrorUpdateResolve, IError<SqlError>> { + ) -> Result<ILogErrorUpdateResolve, ReplicaSchemaError<SqlError>> { models::log_error::update(self.executor(), opts) } pub fn log_error_delete( &self, opts: &ILogErrorDelete, - ) -> Result<ILogErrorDeleteResolve, IError<SqlError>> { + ) -> Result<ILogErrorDeleteResolve, ReplicaSchemaError<SqlError>> { models::log_error::delete(self.executor(), opts) } pub fn media_image_create( &self, opts: &IMediaImageCreate, - ) -> Result<IMediaImageCreateResolve, IError<SqlError>> { + ) -> Result<IMediaImageCreateResolve, ReplicaSchemaError<SqlError>> { models::media_image::create(self.executor(), opts) } pub fn media_image_find_many( &self, opts: &IMediaImageFindMany, - ) -> Result<IMediaImageFindManyResolve, IError<SqlError>> { + ) -> Result<IMediaImageFindManyResolve, ReplicaSchemaError<SqlError>> { models::media_image::find_many(self.executor(), opts) } pub fn media_image_find_one( &self, opts: &IMediaImageFindOne, - ) -> Result<IMediaImageFindOneResolve, IError<SqlError>> { + ) -> Result<IMediaImageFindOneResolve, ReplicaSchemaError<SqlError>> { models::media_image::find_one(self.executor(), opts) } pub fn media_image_update( &self, opts: &IMediaImageUpdate, - ) -> Result<IMediaImageUpdateResolve, IError<SqlError>> { + ) -> Result<IMediaImageUpdateResolve, ReplicaSchemaError<SqlError>> { models::media_image::update(self.executor(), opts) } pub fn media_image_delete( &self, opts: &IMediaImageDelete, - ) -> Result<IMediaImageDeleteResolve, IError<SqlError>> { + ) -> Result<IMediaImageDeleteResolve, ReplicaSchemaError<SqlError>> { models::media_image::delete(self.executor(), opts) } pub fn nostr_profile_create( &self, opts: &INostrProfileCreate, - ) -> Result<INostrProfileCreateResolve, IError<SqlError>> { + ) -> Result<INostrProfileCreateResolve, ReplicaSchemaError<SqlError>> { models::nostr_profile::create(self.executor(), opts) } pub fn nostr_profile_find_many( &self, opts: &INostrProfileFindMany, - ) -> Result<INostrProfileFindManyResolve, IError<SqlError>> { + ) -> Result<INostrProfileFindManyResolve, ReplicaSchemaError<SqlError>> { models::nostr_profile::find_many(self.executor(), opts) } pub fn nostr_profile_find_one( &self, opts: &INostrProfileFindOne, - ) -> Result<INostrProfileFindOneResolve, IError<SqlError>> { + ) -> Result<INostrProfileFindOneResolve, ReplicaSchemaError<SqlError>> { models::nostr_profile::find_one(self.executor(), opts) } pub fn nostr_profile_update( &self, opts: &INostrProfileUpdate, - ) -> Result<INostrProfileUpdateResolve, IError<SqlError>> { + ) -> Result<INostrProfileUpdateResolve, ReplicaSchemaError<SqlError>> { models::nostr_profile::update(self.executor(), opts) } pub fn nostr_profile_delete( &self, opts: &INostrProfileDelete, - ) -> Result<INostrProfileDeleteResolve, IError<SqlError>> { + ) -> Result<INostrProfileDeleteResolve, ReplicaSchemaError<SqlError>> { models::nostr_profile::delete(self.executor(), opts) } pub fn nostr_event_head_create( &self, opts: &INostrEventHeadCreate, - ) -> Result<INostrEventHeadCreateResolve, IError<SqlError>> { + ) -> Result<INostrEventHeadCreateResolve, ReplicaSchemaError<SqlError>> { models::nostr_event_head::create(self.executor(), opts) } pub fn nostr_event_head_find_many( &self, opts: &INostrEventHeadFindMany, - ) -> Result<INostrEventHeadFindManyResolve, IError<SqlError>> { + ) -> Result<INostrEventHeadFindManyResolve, ReplicaSchemaError<SqlError>> { models::nostr_event_head::find_many(self.executor(), opts) } pub fn nostr_event_head_find_one( &self, opts: &INostrEventHeadFindOne, - ) -> Result<INostrEventHeadFindOneResolve, IError<SqlError>> { + ) -> Result<INostrEventHeadFindOneResolve, ReplicaSchemaError<SqlError>> { models::nostr_event_head::find_one(self.executor(), opts) } pub fn nostr_event_head_update( &self, opts: &INostrEventHeadUpdate, - ) -> Result<INostrEventHeadUpdateResolve, IError<SqlError>> { + ) -> Result<INostrEventHeadUpdateResolve, ReplicaSchemaError<SqlError>> { models::nostr_event_head::update(self.executor(), opts) } pub fn nostr_event_head_delete( &self, opts: &INostrEventHeadDelete, - ) -> Result<INostrEventHeadDeleteResolve, IError<SqlError>> { + ) -> Result<INostrEventHeadDeleteResolve, ReplicaSchemaError<SqlError>> { models::nostr_event_head::delete(self.executor(), opts) } pub fn nostr_relay_create( &self, opts: &INostrRelayCreate, - ) -> Result<INostrRelayCreateResolve, IError<SqlError>> { + ) -> Result<INostrRelayCreateResolve, ReplicaSchemaError<SqlError>> { models::nostr_relay::create(self.executor(), opts) } pub fn nostr_relay_find_many( &self, opts: &INostrRelayFindMany, - ) -> Result<INostrRelayFindManyResolve, IError<SqlError>> { + ) -> Result<INostrRelayFindManyResolve, ReplicaSchemaError<SqlError>> { models::nostr_relay::find_many(self.executor(), opts) } pub fn nostr_relay_find_one( &self, opts: &INostrRelayFindOne, - ) -> Result<INostrRelayFindOneResolve, IError<SqlError>> { + ) -> Result<INostrRelayFindOneResolve, ReplicaSchemaError<SqlError>> { models::nostr_relay::find_one(self.executor(), opts) } pub fn nostr_relay_update( &self, opts: &INostrRelayUpdate, - ) -> Result<INostrRelayUpdateResolve, IError<SqlError>> { + ) -> Result<INostrRelayUpdateResolve, ReplicaSchemaError<SqlError>> { models::nostr_relay::update(self.executor(), opts) } pub fn nostr_relay_delete( &self, opts: &INostrRelayDelete, - ) -> Result<INostrRelayDeleteResolve, IError<SqlError>> { + ) -> Result<INostrRelayDeleteResolve, ReplicaSchemaError<SqlError>> { models::nostr_relay::delete(self.executor(), opts) } pub fn trade_product_create( &self, opts: &ITradeProductCreate, - ) -> Result<ITradeProductCreateResolve, IError<SqlError>> { + ) -> Result<ITradeProductCreateResolve, ReplicaSchemaError<SqlError>> { models::trade_product::create(self.executor(), opts) } pub fn trade_product_find_many( &self, opts: &ITradeProductFindMany, - ) -> Result<ITradeProductFindManyResolve, IError<SqlError>> { + ) -> Result<ITradeProductFindManyResolve, ReplicaSchemaError<SqlError>> { models::trade_product::find_many(self.executor(), opts) } pub fn trade_product_find_one( &self, opts: &ITradeProductFindOne, - ) -> Result<ITradeProductFindOneResolve, IError<SqlError>> { + ) -> Result<ITradeProductFindOneResolve, ReplicaSchemaError<SqlError>> { models::trade_product::find_one(self.executor(), opts) } pub fn trade_product_update( &self, opts: &ITradeProductUpdate, - ) -> Result<ITradeProductUpdateResolve, IError<SqlError>> { + ) -> Result<ITradeProductUpdateResolve, ReplicaSchemaError<SqlError>> { models::trade_product::update(self.executor(), opts) } pub fn trade_product_delete( &self, opts: &ITradeProductDelete, - ) -> Result<ITradeProductDeleteResolve, IError<SqlError>> { + ) -> Result<ITradeProductDeleteResolve, ReplicaSchemaError<SqlError>> { models::trade_product::delete(self.executor(), opts) } pub fn nostr_profile_relay_set( &self, opts: &INostrProfileRelayRelation, - ) -> Result<INostrProfileRelayResolve, IError<SqlError>> { + ) -> Result<INostrProfileRelayResolve, ReplicaSchemaError<SqlError>> { models::nostr_profile_relay::set(self.executor(), opts) } pub fn nostr_profile_relay_unset( &self, opts: &INostrProfileRelayRelation, - ) -> Result<INostrProfileRelayResolve, IError<SqlError>> { + ) -> Result<INostrProfileRelayResolve, ReplicaSchemaError<SqlError>> { models::nostr_profile_relay::unset(self.executor(), opts) } pub fn trade_product_location_set( &self, opts: &ITradeProductLocationRelation, - ) -> Result<ITradeProductLocationResolve, IError<SqlError>> { + ) -> Result<ITradeProductLocationResolve, ReplicaSchemaError<SqlError>> { models::trade_product_location::set(self.executor(), opts) } pub fn trade_product_location_unset( &self, opts: &ITradeProductLocationRelation, - ) -> Result<ITradeProductLocationResolve, IError<SqlError>> { + ) -> Result<ITradeProductLocationResolve, ReplicaSchemaError<SqlError>> { models::trade_product_location::unset(self.executor(), opts) } pub fn trade_product_media_set( &self, opts: &ITradeProductMediaRelation, - ) -> Result<ITradeProductMediaResolve, IError<SqlError>> { + ) -> Result<ITradeProductMediaResolve, ReplicaSchemaError<SqlError>> { models::trade_product_media::set(self.executor(), opts) } pub fn trade_product_media_unset( &self, opts: &ITradeProductMediaRelation, - ) -> Result<ITradeProductMediaResolve, IError<SqlError>> { + ) -> Result<ITradeProductMediaResolve, ReplicaSchemaError<SqlError>> { models::trade_product_media::unset(self.executor(), opts) } } diff --git a/crates/replica_db/src/models/farm.rs b/crates/replica_db/src/models/farm.rs @@ -3,9 +3,11 @@ use radroots_replica_db_schema::farm::{ IFarmFieldsFilter, IFarmFindMany, IFarmFindManyResolve, IFarmFindOne, IFarmFindOneResolve, IFarmUpdate, IFarmUpdateResolve, }; +use radroots_replica_db_schema::{ + ReplicaSchemaError, ReplicaSchemaResult, ReplicaSchemaResultList, +}; use radroots_sql_core::error::SqlError; use radroots_sql_core::{SqlExecutor, utils}; -use radroots_types::types::{IError, IResult, IResultList}; use serde_json::Value; const TABLE_NAME: &str = "farm"; @@ -13,7 +15,7 @@ const TABLE_NAME: &str = "farm"; pub fn create( exec: &dyn SqlExecutor, opts: &IFarmCreate, -) -> Result<IFarmCreateResolve, IError<SqlError>> { +) -> Result<IFarmCreateResolve, ReplicaSchemaError<SqlError>> { let field_map = utils::to_object_map(opts).expect("farm create fields serialize"); let id = utils::uuidv4(); let now = utils::time_created_on(); @@ -27,32 +29,33 @@ pub fn create( utils::to_params_json(bind_values).expect("farm create bind params serialize"); let _ = exec.exec(&sql, ¶ms_json)?; let on = FarmQueryBindValues::Id { id: id.clone() }; - let result = find_one_by_on(exec, &on)?.ok_or(IError::from(SqlError::NotFound(id.clone())))?; - Ok(IResult { result }) + let result = find_one_by_on(exec, &on)? + .ok_or(ReplicaSchemaError::from(SqlError::NotFound(id.clone())))?; + Ok(ReplicaSchemaResult { result }) } pub fn find_one( exec: &dyn SqlExecutor, opts: &IFarmFindOne, -) -> Result<IFarmFindOneResolve, IError<SqlError>> { +) -> Result<IFarmFindOneResolve, ReplicaSchemaError<SqlError>> { let result = match opts { IFarmFindOne::On(args) => find_one_by_on(exec, &args.on)?, }; - Ok(IResult { result }) + Ok(ReplicaSchemaResult { result }) } pub fn find_many( exec: &dyn SqlExecutor, opts: &IFarmFindMany, -) -> Result<IFarmFindManyResolve, IError<SqlError>> { +) -> Result<IFarmFindManyResolve, ReplicaSchemaError<SqlError>> { let results = find_many_filter(exec, &opts.filter)?; - Ok(IResultList { results }) + Ok(ReplicaSchemaResultList { results }) } fn find_many_filter( exec: &dyn SqlExecutor, filter: &Option<IFarmFieldsFilter>, -) -> Result<Vec<Farm>, IError<SqlError>> { +) -> Result<Vec<Farm>, ReplicaSchemaError<SqlError>> { let (sql, bind_values) = utils::build_select_query_with_meta(TABLE_NAME, filter.as_ref()); let params_json = utils::to_params_json(bind_values).expect("farm find_many bind params serialize"); @@ -64,7 +67,7 @@ fn find_many_filter( fn find_one_by_on( exec: &dyn SqlExecutor, on: &FarmQueryBindValues, -) -> Result<Option<Farm>, IError<SqlError>> { +) -> Result<Option<Farm>, ReplicaSchemaError<SqlError>> { let (column, value) = on.to_filter_param(); let sql = format!("SELECT * FROM {TABLE_NAME} WHERE {column} = ? LIMIT 1;"); let params_json = @@ -74,26 +77,26 @@ fn find_one_by_on( Ok(rows.pop()) } -fn select_by_id(exec: &dyn SqlExecutor, id: &str) -> Result<Farm, IError<SqlError>> { +fn select_by_id(exec: &dyn SqlExecutor, id: &str) -> Result<Farm, ReplicaSchemaError<SqlError>> { let params_json = utils::to_params_json(vec![Value::from(id.to_owned())]) .expect("farm select_by_id bind params serialize"); let sql = format!("SELECT * FROM {TABLE_NAME} WHERE id = ?;"); let json = exec.query_raw(&sql, ¶ms_json)?; let mut rows: Vec<Farm> = utils::parse_json(&json)?; rows.pop() - .ok_or(IError::from(SqlError::NotFound(id.to_owned()))) + .ok_or(ReplicaSchemaError::from(SqlError::NotFound(id.to_owned()))) } pub fn update( exec: &dyn SqlExecutor, opts: &IFarmUpdate, -) -> Result<IFarmUpdateResolve, IError<SqlError>> { +) -> Result<IFarmUpdateResolve, ReplicaSchemaError<SqlError>> { let mut updates = utils::to_partial_object_map(&opts.fields).expect("farm update fields serialize"); if updates.is_empty() { - return Err(IError::from(SqlError::InvalidArgument(String::from( - "no fields to update", - )))); + return Err(ReplicaSchemaError::from(SqlError::InvalidArgument( + String::from("no fields to update"), + ))); } updates.insert( String::from("updated_at"), @@ -109,7 +112,9 @@ pub fn update( Some(id) => id, None => { let found = find_one_by_on(exec, &opts.on)?; - let model = found.ok_or(IError::from(SqlError::NotFound(opts.on.lookup_key())))?; + let model = found.ok_or(ReplicaSchemaError::from(SqlError::NotFound( + opts.on.lookup_key(), + )))?; model.id } }; @@ -122,19 +127,21 @@ pub fn update( utils::to_params_json(bind_values).expect("farm update bind params serialize"); let _ = exec.exec(&sql, ¶ms_json)?; let updated = select_by_id(exec, &id_for_lookup)?; - Ok(IResult { result: updated }) + Ok(ReplicaSchemaResult { result: updated }) } pub fn delete( exec: &dyn SqlExecutor, opts: &IFarmDelete, -) -> Result<IFarmDeleteResolve, IError<SqlError>> { +) -> Result<IFarmDeleteResolve, ReplicaSchemaError<SqlError>> { let id_for_lookup = match opts { IFarmDelete::On(args) => match args.on.primary_key() { Some(id) => id, None => { let found = find_one_by_on(exec, &args.on)?; - let model = found.ok_or(IError::from(SqlError::NotFound(args.on.lookup_key())))?; + let model = found.ok_or(ReplicaSchemaError::from(SqlError::NotFound( + args.on.lookup_key(), + )))?; model.id } }, @@ -144,9 +151,11 @@ pub fn delete( let sql = format!("DELETE FROM {TABLE_NAME} WHERE id = ?;"); let outcome = exec.exec(&sql, ¶ms_json)?; if outcome.changes == 0 { - return Err(IError::from(SqlError::NotFound(id_for_lookup.clone()))); + return Err(ReplicaSchemaError::from(SqlError::NotFound( + id_for_lookup.clone(), + ))); } - Ok(IResult { + Ok(ReplicaSchemaResult { result: id_for_lookup, }) } diff --git a/crates/replica_db/src/models/farm_gcs_location.rs b/crates/replica_db/src/models/farm_gcs_location.rs @@ -5,9 +5,11 @@ use radroots_replica_db_schema::farm_gcs_location::{ IFarmGcsLocationFindOne, IFarmGcsLocationFindOneResolve, IFarmGcsLocationUpdate, IFarmGcsLocationUpdateResolve, }; +use radroots_replica_db_schema::{ + ReplicaSchemaError, ReplicaSchemaResult, ReplicaSchemaResultList, +}; use radroots_sql_core::error::SqlError; use radroots_sql_core::{SqlExecutor, utils}; -use radroots_types::types::{IError, IResult, IResultList}; use serde_json::Value; const TABLE_NAME: &str = "farm_gcs_location"; @@ -15,7 +17,7 @@ const TABLE_NAME: &str = "farm_gcs_location"; pub fn create( exec: &dyn SqlExecutor, opts: &IFarmGcsLocationCreate, -) -> Result<IFarmGcsLocationCreateResolve, IError<SqlError>> { +) -> Result<IFarmGcsLocationCreateResolve, ReplicaSchemaError<SqlError>> { let field_map = utils::to_object_map(opts).expect("serialize object map"); let id = utils::uuidv4(); let now = utils::time_created_on(); @@ -28,32 +30,33 @@ pub fn create( let params_json = utils::to_params_json(bind_values).expect("serialize bind params"); let _ = exec.exec(&sql, ¶ms_json)?; let on = FarmGcsLocationQueryBindValues::Id { id: id.clone() }; - let result = find_one_by_on(exec, &on)?.ok_or(IError::from(SqlError::NotFound(id.clone())))?; - Ok(IResult { result }) + let result = find_one_by_on(exec, &on)? + .ok_or(ReplicaSchemaError::from(SqlError::NotFound(id.clone())))?; + Ok(ReplicaSchemaResult { result }) } pub fn find_one( exec: &dyn SqlExecutor, opts: &IFarmGcsLocationFindOne, -) -> Result<IFarmGcsLocationFindOneResolve, IError<SqlError>> { +) -> Result<IFarmGcsLocationFindOneResolve, ReplicaSchemaError<SqlError>> { let result = match opts { IFarmGcsLocationFindOne::On(args) => find_one_by_on(exec, &args.on)?, }; - Ok(IResult { result }) + Ok(ReplicaSchemaResult { result }) } pub fn find_many( exec: &dyn SqlExecutor, opts: &IFarmGcsLocationFindMany, -) -> Result<IFarmGcsLocationFindManyResolve, IError<SqlError>> { +) -> Result<IFarmGcsLocationFindManyResolve, ReplicaSchemaError<SqlError>> { let results = find_many_filter(exec, &opts.filter)?; - Ok(IResultList { results }) + Ok(ReplicaSchemaResultList { results }) } fn find_many_filter( exec: &dyn SqlExecutor, filter: &Option<IFarmGcsLocationFieldsFilter>, -) -> Result<Vec<FarmGcsLocation>, IError<SqlError>> { +) -> Result<Vec<FarmGcsLocation>, ReplicaSchemaError<SqlError>> { let (sql, bind_values) = utils::build_select_query_with_meta(TABLE_NAME, filter.as_ref()); let params_json = utils::to_params_json(bind_values).expect("serialize bind params"); let json = exec.query_raw(&sql, ¶ms_json)?; @@ -64,7 +67,7 @@ fn find_many_filter( fn find_one_by_on( exec: &dyn SqlExecutor, on: &FarmGcsLocationQueryBindValues, -) -> Result<Option<FarmGcsLocation>, IError<SqlError>> { +) -> Result<Option<FarmGcsLocation>, ReplicaSchemaError<SqlError>> { let (column, value) = on.to_filter_param(); let sql = format!("SELECT * FROM {TABLE_NAME} WHERE {column} = ? LIMIT 1;"); let params_json = utils::to_params_json(vec![value]).expect("serialize bind params"); @@ -73,26 +76,29 @@ fn find_one_by_on( Ok(rows.pop()) } -fn select_by_id(exec: &dyn SqlExecutor, id: &str) -> Result<FarmGcsLocation, IError<SqlError>> { +fn select_by_id( + exec: &dyn SqlExecutor, + id: &str, +) -> Result<FarmGcsLocation, ReplicaSchemaError<SqlError>> { let params_json = utils::to_params_json(vec![Value::from(id.to_owned())]).expect("serialize bind params"); let sql = format!("SELECT * FROM {TABLE_NAME} WHERE id = ?;"); let json = exec.query_raw(&sql, ¶ms_json)?; let mut rows: Vec<FarmGcsLocation> = utils::parse_json(&json)?; rows.pop() - .ok_or(IError::from(SqlError::NotFound(id.to_owned()))) + .ok_or(ReplicaSchemaError::from(SqlError::NotFound(id.to_owned()))) } pub fn update( exec: &dyn SqlExecutor, opts: &IFarmGcsLocationUpdate, -) -> Result<IFarmGcsLocationUpdateResolve, IError<SqlError>> { +) -> Result<IFarmGcsLocationUpdateResolve, ReplicaSchemaError<SqlError>> { let mut updates = utils::to_partial_object_map(&opts.fields).expect("serialize partial object map"); if updates.is_empty() { - return Err(IError::from(SqlError::InvalidArgument(String::from( - "no fields to update", - )))); + return Err(ReplicaSchemaError::from(SqlError::InvalidArgument( + String::from("no fields to update"), + ))); } updates.insert( String::from("updated_at"), @@ -108,7 +114,9 @@ pub fn update( Some(id) => id, None => { let found = find_one_by_on(exec, &opts.on)?; - let model = found.ok_or(IError::from(SqlError::NotFound(opts.on.lookup_key())))?; + let model = found.ok_or(ReplicaSchemaError::from(SqlError::NotFound( + opts.on.lookup_key(), + )))?; model.id } }; @@ -120,19 +128,21 @@ pub fn update( let params_json = utils::to_params_json(bind_values).expect("serialize bind params"); let _ = exec.exec(&sql, ¶ms_json)?; let updated = select_by_id(exec, &id_for_lookup)?; - Ok(IResult { result: updated }) + Ok(ReplicaSchemaResult { result: updated }) } pub fn delete( exec: &dyn SqlExecutor, opts: &IFarmGcsLocationDelete, -) -> Result<IFarmGcsLocationDeleteResolve, IError<SqlError>> { +) -> Result<IFarmGcsLocationDeleteResolve, ReplicaSchemaError<SqlError>> { let id_for_lookup = match opts { IFarmGcsLocationDelete::On(args) => match args.on.primary_key() { Some(id) => id, None => { let found = find_one_by_on(exec, &args.on)?; - let model = found.ok_or(IError::from(SqlError::NotFound(args.on.lookup_key())))?; + let model = found.ok_or(ReplicaSchemaError::from(SqlError::NotFound( + args.on.lookup_key(), + )))?; model.id } }, @@ -142,9 +152,11 @@ pub fn delete( let sql = format!("DELETE FROM {TABLE_NAME} WHERE id = ?;"); let outcome = exec.exec(&sql, ¶ms_json)?; if outcome.changes == 0 { - return Err(IError::from(SqlError::NotFound(id_for_lookup.clone()))); + return Err(ReplicaSchemaError::from(SqlError::NotFound( + id_for_lookup.clone(), + ))); } - Ok(IResult { + Ok(ReplicaSchemaResult { result: id_for_lookup, }) } diff --git a/crates/replica_db/src/models/farm_member.rs b/crates/replica_db/src/models/farm_member.rs @@ -4,9 +4,11 @@ use radroots_replica_db_schema::farm_member::{ IFarmMemberFindManyResolve, IFarmMemberFindOne, IFarmMemberFindOneResolve, IFarmMemberUpdate, IFarmMemberUpdateResolve, }; +use radroots_replica_db_schema::{ + ReplicaSchemaError, ReplicaSchemaResult, ReplicaSchemaResultList, +}; use radroots_sql_core::error::SqlError; use radroots_sql_core::{SqlExecutor, utils}; -use radroots_types::types::{IError, IResult, IResultList}; use serde_json::Value; const TABLE_NAME: &str = "farm_member"; @@ -14,7 +16,7 @@ const TABLE_NAME: &str = "farm_member"; pub fn create( exec: &dyn SqlExecutor, opts: &IFarmMemberCreate, -) -> Result<IFarmMemberCreateResolve, IError<SqlError>> { +) -> Result<IFarmMemberCreateResolve, ReplicaSchemaError<SqlError>> { let field_map = utils::to_object_map(opts).expect("serialize object map"); let id = utils::uuidv4(); let now = utils::time_created_on(); @@ -27,32 +29,33 @@ pub fn create( let params_json = utils::to_params_json(bind_values).expect("serialize bind params"); let _ = exec.exec(&sql, ¶ms_json)?; let on = FarmMemberQueryBindValues::Id { id: id.clone() }; - let result = find_one_by_on(exec, &on)?.ok_or(IError::from(SqlError::NotFound(id.clone())))?; - Ok(IResult { result }) + let result = find_one_by_on(exec, &on)? + .ok_or(ReplicaSchemaError::from(SqlError::NotFound(id.clone())))?; + Ok(ReplicaSchemaResult { result }) } pub fn find_one( exec: &dyn SqlExecutor, opts: &IFarmMemberFindOne, -) -> Result<IFarmMemberFindOneResolve, IError<SqlError>> { +) -> Result<IFarmMemberFindOneResolve, ReplicaSchemaError<SqlError>> { let result = match opts { IFarmMemberFindOne::On(args) => find_one_by_on(exec, &args.on)?, }; - Ok(IResult { result }) + Ok(ReplicaSchemaResult { result }) } pub fn find_many( exec: &dyn SqlExecutor, opts: &IFarmMemberFindMany, -) -> Result<IFarmMemberFindManyResolve, IError<SqlError>> { +) -> Result<IFarmMemberFindManyResolve, ReplicaSchemaError<SqlError>> { let results = find_many_filter(exec, &opts.filter)?; - Ok(IResultList { results }) + Ok(ReplicaSchemaResultList { results }) } fn find_many_filter( exec: &dyn SqlExecutor, filter: &Option<IFarmMemberFieldsFilter>, -) -> Result<Vec<FarmMember>, IError<SqlError>> { +) -> Result<Vec<FarmMember>, ReplicaSchemaError<SqlError>> { let (sql, bind_values) = utils::build_select_query_with_meta(TABLE_NAME, filter.as_ref()); let params_json = utils::to_params_json(bind_values).expect("serialize bind params"); let json = exec.query_raw(&sql, ¶ms_json)?; @@ -63,7 +66,7 @@ fn find_many_filter( fn find_one_by_on( exec: &dyn SqlExecutor, on: &FarmMemberQueryBindValues, -) -> Result<Option<FarmMember>, IError<SqlError>> { +) -> Result<Option<FarmMember>, ReplicaSchemaError<SqlError>> { let (column, value) = on.to_filter_param(); let sql = format!("SELECT * FROM {TABLE_NAME} WHERE {column} = ? LIMIT 1;"); let params_json = utils::to_params_json(vec![value]).expect("serialize bind params"); @@ -72,26 +75,29 @@ fn find_one_by_on( Ok(rows.pop()) } -fn select_by_id(exec: &dyn SqlExecutor, id: &str) -> Result<FarmMember, IError<SqlError>> { +fn select_by_id( + exec: &dyn SqlExecutor, + id: &str, +) -> Result<FarmMember, ReplicaSchemaError<SqlError>> { let params_json = utils::to_params_json(vec![Value::from(id.to_owned())]).expect("serialize bind params"); let sql = format!("SELECT * FROM {TABLE_NAME} WHERE id = ?;"); let json = exec.query_raw(&sql, ¶ms_json)?; let mut rows: Vec<FarmMember> = utils::parse_json(&json)?; rows.pop() - .ok_or(IError::from(SqlError::NotFound(id.to_owned()))) + .ok_or(ReplicaSchemaError::from(SqlError::NotFound(id.to_owned()))) } pub fn update( exec: &dyn SqlExecutor, opts: &IFarmMemberUpdate, -) -> Result<IFarmMemberUpdateResolve, IError<SqlError>> { +) -> Result<IFarmMemberUpdateResolve, ReplicaSchemaError<SqlError>> { let mut updates = utils::to_partial_object_map(&opts.fields).expect("serialize partial object map"); if updates.is_empty() { - return Err(IError::from(SqlError::InvalidArgument(String::from( - "no fields to update", - )))); + return Err(ReplicaSchemaError::from(SqlError::InvalidArgument( + String::from("no fields to update"), + ))); } updates.insert( String::from("updated_at"), @@ -107,7 +113,9 @@ pub fn update( Some(id) => id, None => { let found = find_one_by_on(exec, &opts.on)?; - let model = found.ok_or(IError::from(SqlError::NotFound(opts.on.lookup_key())))?; + let model = found.ok_or(ReplicaSchemaError::from(SqlError::NotFound( + opts.on.lookup_key(), + )))?; model.id } }; @@ -119,19 +127,21 @@ pub fn update( let params_json = utils::to_params_json(bind_values).expect("serialize bind params"); let _ = exec.exec(&sql, ¶ms_json)?; let updated = select_by_id(exec, &id_for_lookup)?; - Ok(IResult { result: updated }) + Ok(ReplicaSchemaResult { result: updated }) } pub fn delete( exec: &dyn SqlExecutor, opts: &IFarmMemberDelete, -) -> Result<IFarmMemberDeleteResolve, IError<SqlError>> { +) -> Result<IFarmMemberDeleteResolve, ReplicaSchemaError<SqlError>> { let id_for_lookup = match opts { IFarmMemberDelete::On(args) => match args.on.primary_key() { Some(id) => id, None => { let found = find_one_by_on(exec, &args.on)?; - let model = found.ok_or(IError::from(SqlError::NotFound(args.on.lookup_key())))?; + let model = found.ok_or(ReplicaSchemaError::from(SqlError::NotFound( + args.on.lookup_key(), + )))?; model.id } }, @@ -141,9 +151,11 @@ pub fn delete( let sql = format!("DELETE FROM {TABLE_NAME} WHERE id = ?;"); let outcome = exec.exec(&sql, ¶ms_json)?; if outcome.changes == 0 { - return Err(IError::from(SqlError::NotFound(id_for_lookup.clone()))); + return Err(ReplicaSchemaError::from(SqlError::NotFound( + id_for_lookup.clone(), + ))); } - Ok(IResult { + Ok(ReplicaSchemaResult { result: id_for_lookup, }) } diff --git a/crates/replica_db/src/models/farm_member_claim.rs b/crates/replica_db/src/models/farm_member_claim.rs @@ -5,9 +5,11 @@ use radroots_replica_db_schema::farm_member_claim::{ IFarmMemberClaimFindOne, IFarmMemberClaimFindOneResolve, IFarmMemberClaimUpdate, IFarmMemberClaimUpdateResolve, }; +use radroots_replica_db_schema::{ + ReplicaSchemaError, ReplicaSchemaResult, ReplicaSchemaResultList, +}; use radroots_sql_core::error::SqlError; use radroots_sql_core::{SqlExecutor, utils}; -use radroots_types::types::{IError, IResult, IResultList}; use serde_json::Value; const TABLE_NAME: &str = "farm_member_claim"; @@ -15,7 +17,7 @@ const TABLE_NAME: &str = "farm_member_claim"; pub fn create( exec: &dyn SqlExecutor, opts: &IFarmMemberClaimCreate, -) -> Result<IFarmMemberClaimCreateResolve, IError<SqlError>> { +) -> Result<IFarmMemberClaimCreateResolve, ReplicaSchemaError<SqlError>> { let field_map = utils::to_object_map(opts).expect("serialize object map"); let id = utils::uuidv4(); let now = utils::time_created_on(); @@ -28,32 +30,33 @@ pub fn create( let params_json = utils::to_params_json(bind_values).expect("serialize bind params"); let _ = exec.exec(&sql, ¶ms_json)?; let on = FarmMemberClaimQueryBindValues::Id { id: id.clone() }; - let result = find_one_by_on(exec, &on)?.ok_or(IError::from(SqlError::NotFound(id.clone())))?; - Ok(IResult { result }) + let result = find_one_by_on(exec, &on)? + .ok_or(ReplicaSchemaError::from(SqlError::NotFound(id.clone())))?; + Ok(ReplicaSchemaResult { result }) } pub fn find_one( exec: &dyn SqlExecutor, opts: &IFarmMemberClaimFindOne, -) -> Result<IFarmMemberClaimFindOneResolve, IError<SqlError>> { +) -> Result<IFarmMemberClaimFindOneResolve, ReplicaSchemaError<SqlError>> { let result = match opts { IFarmMemberClaimFindOne::On(args) => find_one_by_on(exec, &args.on)?, }; - Ok(IResult { result }) + Ok(ReplicaSchemaResult { result }) } pub fn find_many( exec: &dyn SqlExecutor, opts: &IFarmMemberClaimFindMany, -) -> Result<IFarmMemberClaimFindManyResolve, IError<SqlError>> { +) -> Result<IFarmMemberClaimFindManyResolve, ReplicaSchemaError<SqlError>> { let results = find_many_filter(exec, &opts.filter)?; - Ok(IResultList { results }) + Ok(ReplicaSchemaResultList { results }) } fn find_many_filter( exec: &dyn SqlExecutor, filter: &Option<IFarmMemberClaimFieldsFilter>, -) -> Result<Vec<FarmMemberClaim>, IError<SqlError>> { +) -> Result<Vec<FarmMemberClaim>, ReplicaSchemaError<SqlError>> { let (sql, bind_values) = utils::build_select_query_with_meta(TABLE_NAME, filter.as_ref()); let params_json = utils::to_params_json(bind_values).expect("serialize bind params"); let json = exec.query_raw(&sql, ¶ms_json)?; @@ -64,7 +67,7 @@ fn find_many_filter( fn find_one_by_on( exec: &dyn SqlExecutor, on: &FarmMemberClaimQueryBindValues, -) -> Result<Option<FarmMemberClaim>, IError<SqlError>> { +) -> Result<Option<FarmMemberClaim>, ReplicaSchemaError<SqlError>> { let (column, value) = on.to_filter_param(); let sql = format!("SELECT * FROM {TABLE_NAME} WHERE {column} = ? LIMIT 1;"); let params_json = utils::to_params_json(vec![value]).expect("serialize bind params"); @@ -73,26 +76,29 @@ fn find_one_by_on( Ok(rows.pop()) } -fn select_by_id(exec: &dyn SqlExecutor, id: &str) -> Result<FarmMemberClaim, IError<SqlError>> { +fn select_by_id( + exec: &dyn SqlExecutor, + id: &str, +) -> Result<FarmMemberClaim, ReplicaSchemaError<SqlError>> { let params_json = utils::to_params_json(vec![Value::from(id.to_owned())]).expect("serialize bind params"); let sql = format!("SELECT * FROM {TABLE_NAME} WHERE id = ?;"); let json = exec.query_raw(&sql, ¶ms_json)?; let mut rows: Vec<FarmMemberClaim> = utils::parse_json(&json)?; rows.pop() - .ok_or(IError::from(SqlError::NotFound(id.to_owned()))) + .ok_or(ReplicaSchemaError::from(SqlError::NotFound(id.to_owned()))) } pub fn update( exec: &dyn SqlExecutor, opts: &IFarmMemberClaimUpdate, -) -> Result<IFarmMemberClaimUpdateResolve, IError<SqlError>> { +) -> Result<IFarmMemberClaimUpdateResolve, ReplicaSchemaError<SqlError>> { let mut updates = utils::to_partial_object_map(&opts.fields).expect("serialize partial object map"); if updates.is_empty() { - return Err(IError::from(SqlError::InvalidArgument(String::from( - "no fields to update", - )))); + return Err(ReplicaSchemaError::from(SqlError::InvalidArgument( + String::from("no fields to update"), + ))); } updates.insert( String::from("updated_at"), @@ -108,7 +114,9 @@ pub fn update( Some(id) => id, None => { let found = find_one_by_on(exec, &opts.on)?; - let model = found.ok_or(IError::from(SqlError::NotFound(opts.on.lookup_key())))?; + let model = found.ok_or(ReplicaSchemaError::from(SqlError::NotFound( + opts.on.lookup_key(), + )))?; model.id } }; @@ -120,19 +128,21 @@ pub fn update( let params_json = utils::to_params_json(bind_values).expect("serialize bind params"); let _ = exec.exec(&sql, ¶ms_json)?; let updated = select_by_id(exec, &id_for_lookup)?; - Ok(IResult { result: updated }) + Ok(ReplicaSchemaResult { result: updated }) } pub fn delete( exec: &dyn SqlExecutor, opts: &IFarmMemberClaimDelete, -) -> Result<IFarmMemberClaimDeleteResolve, IError<SqlError>> { +) -> Result<IFarmMemberClaimDeleteResolve, ReplicaSchemaError<SqlError>> { let id_for_lookup = match opts { IFarmMemberClaimDelete::On(args) => match args.on.primary_key() { Some(id) => id, None => { let found = find_one_by_on(exec, &args.on)?; - let model = found.ok_or(IError::from(SqlError::NotFound(args.on.lookup_key())))?; + let model = found.ok_or(ReplicaSchemaError::from(SqlError::NotFound( + args.on.lookup_key(), + )))?; model.id } }, @@ -142,9 +152,11 @@ pub fn delete( let sql = format!("DELETE FROM {TABLE_NAME} WHERE id = ?;"); let outcome = exec.exec(&sql, ¶ms_json)?; if outcome.changes == 0 { - return Err(IError::from(SqlError::NotFound(id_for_lookup.clone()))); + return Err(ReplicaSchemaError::from(SqlError::NotFound( + id_for_lookup.clone(), + ))); } - Ok(IResult { + Ok(ReplicaSchemaResult { result: id_for_lookup, }) } diff --git a/crates/replica_db/src/models/farm_tag.rs b/crates/replica_db/src/models/farm_tag.rs @@ -3,9 +3,11 @@ use radroots_replica_db_schema::farm_tag::{ IFarmTagDeleteResolve, IFarmTagFieldsFilter, IFarmTagFindMany, IFarmTagFindManyResolve, IFarmTagFindOne, IFarmTagFindOneResolve, IFarmTagUpdate, IFarmTagUpdateResolve, }; +use radroots_replica_db_schema::{ + ReplicaSchemaError, ReplicaSchemaResult, ReplicaSchemaResultList, +}; use radroots_sql_core::error::SqlError; use radroots_sql_core::{SqlExecutor, utils}; -use radroots_types::types::{IError, IResult, IResultList}; use serde_json::Value; const TABLE_NAME: &str = "farm_tag"; @@ -13,7 +15,7 @@ const TABLE_NAME: &str = "farm_tag"; pub fn create( exec: &dyn SqlExecutor, opts: &IFarmTagCreate, -) -> Result<IFarmTagCreateResolve, IError<SqlError>> { +) -> Result<IFarmTagCreateResolve, ReplicaSchemaError<SqlError>> { let field_map = utils::to_object_map(opts).expect("serialize object map"); let id = utils::uuidv4(); let now = utils::time_created_on(); @@ -26,32 +28,33 @@ pub fn create( let params_json = utils::to_params_json(bind_values).expect("serialize bind params"); let _ = exec.exec(&sql, ¶ms_json)?; let on = FarmTagQueryBindValues::Id { id: id.clone() }; - let result = find_one_by_on(exec, &on)?.ok_or(IError::from(SqlError::NotFound(id.clone())))?; - Ok(IResult { result }) + let result = find_one_by_on(exec, &on)? + .ok_or(ReplicaSchemaError::from(SqlError::NotFound(id.clone())))?; + Ok(ReplicaSchemaResult { result }) } pub fn find_one( exec: &dyn SqlExecutor, opts: &IFarmTagFindOne, -) -> Result<IFarmTagFindOneResolve, IError<SqlError>> { +) -> Result<IFarmTagFindOneResolve, ReplicaSchemaError<SqlError>> { let result = match opts { IFarmTagFindOne::On(args) => find_one_by_on(exec, &args.on)?, }; - Ok(IResult { result }) + Ok(ReplicaSchemaResult { result }) } pub fn find_many( exec: &dyn SqlExecutor, opts: &IFarmTagFindMany, -) -> Result<IFarmTagFindManyResolve, IError<SqlError>> { +) -> Result<IFarmTagFindManyResolve, ReplicaSchemaError<SqlError>> { let results = find_many_filter(exec, &opts.filter)?; - Ok(IResultList { results }) + Ok(ReplicaSchemaResultList { results }) } fn find_many_filter( exec: &dyn SqlExecutor, filter: &Option<IFarmTagFieldsFilter>, -) -> Result<Vec<FarmTag>, IError<SqlError>> { +) -> Result<Vec<FarmTag>, ReplicaSchemaError<SqlError>> { let (sql, bind_values) = utils::build_select_query_with_meta(TABLE_NAME, filter.as_ref()); let params_json = utils::to_params_json(bind_values).expect("serialize bind params"); let json = exec.query_raw(&sql, ¶ms_json)?; @@ -62,7 +65,7 @@ fn find_many_filter( fn find_one_by_on( exec: &dyn SqlExecutor, on: &FarmTagQueryBindValues, -) -> Result<Option<FarmTag>, IError<SqlError>> { +) -> Result<Option<FarmTag>, ReplicaSchemaError<SqlError>> { let (column, value) = on.to_filter_param(); let sql = format!("SELECT * FROM {TABLE_NAME} WHERE {column} = ? LIMIT 1;"); let params_json = utils::to_params_json(vec![value]).expect("serialize bind params"); @@ -71,26 +74,26 @@ fn find_one_by_on( Ok(rows.pop()) } -fn select_by_id(exec: &dyn SqlExecutor, id: &str) -> Result<FarmTag, IError<SqlError>> { +fn select_by_id(exec: &dyn SqlExecutor, id: &str) -> Result<FarmTag, ReplicaSchemaError<SqlError>> { let params_json = utils::to_params_json(vec![Value::from(id.to_owned())]).expect("serialize bind params"); let sql = format!("SELECT * FROM {TABLE_NAME} WHERE id = ?;"); let json = exec.query_raw(&sql, ¶ms_json)?; let mut rows: Vec<FarmTag> = utils::parse_json(&json)?; rows.pop() - .ok_or(IError::from(SqlError::NotFound(id.to_owned()))) + .ok_or(ReplicaSchemaError::from(SqlError::NotFound(id.to_owned()))) } pub fn update( exec: &dyn SqlExecutor, opts: &IFarmTagUpdate, -) -> Result<IFarmTagUpdateResolve, IError<SqlError>> { +) -> Result<IFarmTagUpdateResolve, ReplicaSchemaError<SqlError>> { let mut updates = utils::to_partial_object_map(&opts.fields).expect("serialize partial object map"); if updates.is_empty() { - return Err(IError::from(SqlError::InvalidArgument(String::from( - "no fields to update", - )))); + return Err(ReplicaSchemaError::from(SqlError::InvalidArgument( + String::from("no fields to update"), + ))); } updates.insert( String::from("updated_at"), @@ -106,7 +109,9 @@ pub fn update( Some(id) => id, None => { let found = find_one_by_on(exec, &opts.on)?; - let model = found.ok_or(IError::from(SqlError::NotFound(opts.on.lookup_key())))?; + let model = found.ok_or(ReplicaSchemaError::from(SqlError::NotFound( + opts.on.lookup_key(), + )))?; model.id } }; @@ -118,19 +123,21 @@ pub fn update( let params_json = utils::to_params_json(bind_values).expect("serialize bind params"); let _ = exec.exec(&sql, ¶ms_json)?; let updated = select_by_id(exec, &id_for_lookup)?; - Ok(IResult { result: updated }) + Ok(ReplicaSchemaResult { result: updated }) } pub fn delete( exec: &dyn SqlExecutor, opts: &IFarmTagDelete, -) -> Result<IFarmTagDeleteResolve, IError<SqlError>> { +) -> Result<IFarmTagDeleteResolve, ReplicaSchemaError<SqlError>> { let id_for_lookup = match opts { IFarmTagDelete::On(args) => match args.on.primary_key() { Some(id) => id, None => { let found = find_one_by_on(exec, &args.on)?; - let model = found.ok_or(IError::from(SqlError::NotFound(args.on.lookup_key())))?; + let model = found.ok_or(ReplicaSchemaError::from(SqlError::NotFound( + args.on.lookup_key(), + )))?; model.id } }, @@ -140,9 +147,11 @@ pub fn delete( let sql = format!("DELETE FROM {TABLE_NAME} WHERE id = ?;"); let outcome = exec.exec(&sql, ¶ms_json)?; if outcome.changes == 0 { - return Err(IError::from(SqlError::NotFound(id_for_lookup.clone()))); + return Err(ReplicaSchemaError::from(SqlError::NotFound( + id_for_lookup.clone(), + ))); } - Ok(IResult { + Ok(ReplicaSchemaResult { result: id_for_lookup, }) } diff --git a/crates/replica_db/src/models/gcs_location.rs b/crates/replica_db/src/models/gcs_location.rs @@ -4,9 +4,11 @@ use radroots_replica_db_schema::gcs_location::{ IGcsLocationFieldsFilter, IGcsLocationFindMany, IGcsLocationFindManyResolve, IGcsLocationFindOne, IGcsLocationFindOneResolve, IGcsLocationUpdate, IGcsLocationUpdateResolve, }; +use radroots_replica_db_schema::{ + ReplicaSchemaError, ReplicaSchemaResult, ReplicaSchemaResultList, +}; use radroots_sql_core::error::SqlError; use radroots_sql_core::{SqlExecutor, utils}; -use radroots_types::types::{IError, IResult, IResultList}; use serde_json::Value; const TABLE_NAME: &str = "gcs_location"; @@ -14,7 +16,7 @@ const TABLE_NAME: &str = "gcs_location"; pub fn create( exec: &dyn SqlExecutor, opts: &IGcsLocationCreate, -) -> Result<IGcsLocationCreateResolve, IError<SqlError>> { +) -> Result<IGcsLocationCreateResolve, ReplicaSchemaError<SqlError>> { let field_map = utils::to_object_map(opts).expect("serialize object map"); let id = utils::uuidv4(); let now = utils::time_created_on(); @@ -27,36 +29,37 @@ pub fn create( let params_json = utils::to_params_json(bind_values).expect("serialize bind params"); let _ = exec.exec(&sql, ¶ms_json)?; let on = GcsLocationQueryBindValues::Id { id: id.clone() }; - let result = find_one_by_on(exec, &on)?.ok_or(IError::from(SqlError::NotFound(id.clone())))?; - Ok(IResult { result }) + let result = find_one_by_on(exec, &on)? + .ok_or(ReplicaSchemaError::from(SqlError::NotFound(id.clone())))?; + Ok(ReplicaSchemaResult { result }) } pub fn find_one( exec: &dyn SqlExecutor, opts: &IGcsLocationFindOne, -) -> Result<IGcsLocationFindOneResolve, IError<SqlError>> { +) -> Result<IGcsLocationFindOneResolve, ReplicaSchemaError<SqlError>> { let result = match opts { IGcsLocationFindOne::On(args) => find_one_by_on(exec, &args.on)?, IGcsLocationFindOne::Rel(args) => find_one_by_rel(exec, &args.rel)?, }; - Ok(IResult { result }) + Ok(ReplicaSchemaResult { result }) } pub fn find_many( exec: &dyn SqlExecutor, opts: &IGcsLocationFindMany, -) -> Result<IGcsLocationFindManyResolve, IError<SqlError>> { +) -> Result<IGcsLocationFindManyResolve, ReplicaSchemaError<SqlError>> { let results = match opts { IGcsLocationFindMany::Filter { filter } => find_many_filter(exec, filter)?, IGcsLocationFindMany::Rel { rel } => find_many_by_rel(exec, rel)?, }; - Ok(IResultList { results }) + Ok(ReplicaSchemaResultList { results }) } fn find_many_filter( exec: &dyn SqlExecutor, filter: &Option<IGcsLocationFieldsFilter>, -) -> Result<Vec<GcsLocation>, IError<SqlError>> { +) -> Result<Vec<GcsLocation>, ReplicaSchemaError<SqlError>> { let (sql, bind_values) = utils::build_select_query_with_meta(TABLE_NAME, filter.as_ref()); let params_json = utils::to_params_json(bind_values).expect("serialize bind params"); let json = exec.query_raw(&sql, ¶ms_json)?; @@ -67,7 +70,7 @@ fn find_many_filter( fn find_one_by_on( exec: &dyn SqlExecutor, on: &GcsLocationQueryBindValues, -) -> Result<Option<GcsLocation>, IError<SqlError>> { +) -> Result<Option<GcsLocation>, ReplicaSchemaError<SqlError>> { let (column, value) = on.to_filter_param(); let sql = format!("SELECT * FROM {TABLE_NAME} WHERE {column} = ? LIMIT 1;"); let params_json = utils::to_params_json(vec![value]).expect("serialize bind params"); @@ -108,7 +111,7 @@ fn rel_query(rel: &GcsLocationFindManyRel) -> (&'static str, Vec<Value>) { fn find_one_by_rel( exec: &dyn SqlExecutor, rel: &GcsLocationFindManyRel, -) -> Result<Option<GcsLocation>, IError<SqlError>> { +) -> Result<Option<GcsLocation>, ReplicaSchemaError<SqlError>> { let (sql, bind_values) = rel_query(rel); let params_json = utils::to_params_json(bind_values).expect("serialize bind params"); let sql = format!("{sql} LIMIT 1;"); @@ -120,7 +123,7 @@ fn find_one_by_rel( fn find_many_by_rel( exec: &dyn SqlExecutor, rel: &GcsLocationFindManyRel, -) -> Result<Vec<GcsLocation>, IError<SqlError>> { +) -> Result<Vec<GcsLocation>, ReplicaSchemaError<SqlError>> { let (sql, bind_values) = rel_query(rel); let params_json = utils::to_params_json(bind_values).expect("serialize bind params"); let sql = format!("{sql};"); @@ -129,26 +132,29 @@ fn find_many_by_rel( Ok(rows) } -fn select_by_id(exec: &dyn SqlExecutor, id: &str) -> Result<GcsLocation, IError<SqlError>> { +fn select_by_id( + exec: &dyn SqlExecutor, + id: &str, +) -> Result<GcsLocation, ReplicaSchemaError<SqlError>> { let params_json = utils::to_params_json(vec![Value::from(id.to_owned())]).expect("serialize bind params"); let sql = format!("SELECT * FROM {TABLE_NAME} WHERE id = ?;"); let json = exec.query_raw(&sql, ¶ms_json)?; let mut rows: Vec<GcsLocation> = utils::parse_json(&json)?; rows.pop() - .ok_or(IError::from(SqlError::NotFound(id.to_owned()))) + .ok_or(ReplicaSchemaError::from(SqlError::NotFound(id.to_owned()))) } pub fn update( exec: &dyn SqlExecutor, opts: &IGcsLocationUpdate, -) -> Result<IGcsLocationUpdateResolve, IError<SqlError>> { +) -> Result<IGcsLocationUpdateResolve, ReplicaSchemaError<SqlError>> { let mut updates = utils::to_partial_object_map(&opts.fields).expect("serialize partial object map"); if updates.is_empty() { - return Err(IError::from(SqlError::InvalidArgument(String::from( - "no fields to update", - )))); + return Err(ReplicaSchemaError::from(SqlError::InvalidArgument( + String::from("no fields to update"), + ))); } updates.insert( String::from("updated_at"), @@ -164,7 +170,9 @@ pub fn update( Some(id) => id, None => { let found = find_one_by_on(exec, &opts.on)?; - let model = found.ok_or(IError::from(SqlError::NotFound(opts.on.lookup_key())))?; + let model = found.ok_or(ReplicaSchemaError::from(SqlError::NotFound( + opts.on.lookup_key(), + )))?; model.id } }; @@ -176,25 +184,29 @@ pub fn update( let params_json = utils::to_params_json(bind_values).expect("serialize bind params"); let _ = exec.exec(&sql, ¶ms_json)?; let updated = select_by_id(exec, &id_for_lookup)?; - Ok(IResult { result: updated }) + Ok(ReplicaSchemaResult { result: updated }) } pub fn delete( exec: &dyn SqlExecutor, opts: &IGcsLocationDelete, -) -> Result<IGcsLocationDeleteResolve, IError<SqlError>> { +) -> Result<IGcsLocationDeleteResolve, ReplicaSchemaError<SqlError>> { let id_for_lookup = match opts { IGcsLocationDelete::On(args) => match args.on.primary_key() { Some(id) => id, None => { let found = find_one_by_on(exec, &args.on)?; - let model = found.ok_or(IError::from(SqlError::NotFound(args.on.lookup_key())))?; + let model = found.ok_or(ReplicaSchemaError::from(SqlError::NotFound( + args.on.lookup_key(), + )))?; model.id } }, IGcsLocationDelete::Rel(args) => { let found = find_one_by_rel(exec, &args.rel)?; - let model = found.ok_or(IError::from(SqlError::NotFound(rel_lookup_key(&args.rel))))?; + let model = found.ok_or(ReplicaSchemaError::from(SqlError::NotFound( + rel_lookup_key(&args.rel), + )))?; model.id } }; @@ -203,9 +215,11 @@ pub fn delete( let sql = format!("DELETE FROM {TABLE_NAME} WHERE id = ?;"); let outcome = exec.exec(&sql, ¶ms_json)?; if outcome.changes == 0 { - return Err(IError::from(SqlError::NotFound(id_for_lookup.clone()))); + return Err(ReplicaSchemaError::from(SqlError::NotFound( + id_for_lookup.clone(), + ))); } - Ok(IResult { + Ok(ReplicaSchemaResult { result: id_for_lookup, }) } diff --git a/crates/replica_db/src/models/log_error.rs b/crates/replica_db/src/models/log_error.rs @@ -4,9 +4,11 @@ use radroots_replica_db_schema::log_error::{ ILogErrorFindOneResolve, ILogErrorUpdate, ILogErrorUpdateResolve, LogError, LogErrorQueryBindValues, }; +use radroots_replica_db_schema::{ + ReplicaSchemaError, ReplicaSchemaResult, ReplicaSchemaResultList, +}; use radroots_sql_core::error::SqlError; use radroots_sql_core::{SqlExecutor, utils}; -use radroots_types::types::{IError, IResult, IResultList}; use serde_json::Value; const TABLE_NAME: &str = "log_error"; @@ -14,7 +16,7 @@ const TABLE_NAME: &str = "log_error"; pub fn create( exec: &dyn SqlExecutor, opts: &ILogErrorCreate, -) -> Result<ILogErrorCreateResolve, IError<SqlError>> { +) -> Result<ILogErrorCreateResolve, ReplicaSchemaError<SqlError>> { let field_map = utils::to_object_map(opts).expect("serialize object map"); let id = utils::uuidv4(); let now = utils::time_created_on(); @@ -27,32 +29,33 @@ pub fn create( let params_json = utils::to_params_json(bind_values).expect("serialize bind params"); let _ = exec.exec(&sql, ¶ms_json)?; let on = LogErrorQueryBindValues::Id { id: id.clone() }; - let result = find_one_by_on(exec, &on)?.ok_or(IError::from(SqlError::NotFound(id.clone())))?; - Ok(IResult { result }) + let result = find_one_by_on(exec, &on)? + .ok_or(ReplicaSchemaError::from(SqlError::NotFound(id.clone())))?; + Ok(ReplicaSchemaResult { result }) } pub fn find_one( exec: &dyn SqlExecutor, opts: &ILogErrorFindOne, -) -> Result<ILogErrorFindOneResolve, IError<SqlError>> { +) -> Result<ILogErrorFindOneResolve, ReplicaSchemaError<SqlError>> { let result = match opts { ILogErrorFindOne::On(args) => find_one_by_on(exec, &args.on)?, }; - Ok(IResult { result }) + Ok(ReplicaSchemaResult { result }) } pub fn find_many( exec: &dyn SqlExecutor, opts: &ILogErrorFindMany, -) -> Result<ILogErrorFindManyResolve, IError<SqlError>> { +) -> Result<ILogErrorFindManyResolve, ReplicaSchemaError<SqlError>> { let results = find_many_filter(exec, &opts.filter)?; - Ok(IResultList { results }) + Ok(ReplicaSchemaResultList { results }) } fn find_many_filter( exec: &dyn SqlExecutor, filter: &Option<ILogErrorFieldsFilter>, -) -> Result<Vec<LogError>, IError<SqlError>> { +) -> Result<Vec<LogError>, ReplicaSchemaError<SqlError>> { let (sql, bind_values) = utils::build_select_query_with_meta(TABLE_NAME, filter.as_ref()); let params_json = utils::to_params_json(bind_values).expect("serialize bind params"); let json = exec.query_raw(&sql, ¶ms_json)?; @@ -63,7 +66,7 @@ fn find_many_filter( fn find_one_by_on( exec: &dyn SqlExecutor, on: &LogErrorQueryBindValues, -) -> Result<Option<LogError>, IError<SqlError>> { +) -> Result<Option<LogError>, ReplicaSchemaError<SqlError>> { let (column, value) = on.to_filter_param(); let sql = format!("SELECT * FROM {TABLE_NAME} WHERE {column} = ? LIMIT 1;"); let params_json = utils::to_params_json(vec![value]).expect("serialize bind params"); @@ -72,26 +75,29 @@ fn find_one_by_on( Ok(rows.pop()) } -fn select_by_id(exec: &dyn SqlExecutor, id: &str) -> Result<LogError, IError<SqlError>> { +fn select_by_id( + exec: &dyn SqlExecutor, + id: &str, +) -> Result<LogError, ReplicaSchemaError<SqlError>> { let params_json = utils::to_params_json(vec![Value::from(id.to_owned())]).expect("serialize bind params"); let sql = format!("SELECT * FROM {TABLE_NAME} WHERE id = ?;"); let json = exec.query_raw(&sql, ¶ms_json)?; let mut rows: Vec<LogError> = utils::parse_json(&json)?; rows.pop() - .ok_or(IError::from(SqlError::NotFound(id.to_owned()))) + .ok_or(ReplicaSchemaError::from(SqlError::NotFound(id.to_owned()))) } pub fn update( exec: &dyn SqlExecutor, opts: &ILogErrorUpdate, -) -> Result<ILogErrorUpdateResolve, IError<SqlError>> { +) -> Result<ILogErrorUpdateResolve, ReplicaSchemaError<SqlError>> { let mut updates = utils::to_partial_object_map(&opts.fields).expect("serialize partial object map"); if updates.is_empty() { - return Err(IError::from(SqlError::InvalidArgument(String::from( - "no fields to update", - )))); + return Err(ReplicaSchemaError::from(SqlError::InvalidArgument( + String::from("no fields to update"), + ))); } updates.insert( String::from("updated_at"), @@ -107,7 +113,9 @@ pub fn update( Some(id) => id, None => { let found = find_one_by_on(exec, &opts.on)?; - let model = found.ok_or(IError::from(SqlError::NotFound(opts.on.lookup_key())))?; + let model = found.ok_or(ReplicaSchemaError::from(SqlError::NotFound( + opts.on.lookup_key(), + )))?; model.id } }; @@ -119,19 +127,21 @@ pub fn update( let params_json = utils::to_params_json(bind_values).expect("serialize bind params"); let _ = exec.exec(&sql, ¶ms_json)?; let updated = select_by_id(exec, &id_for_lookup)?; - Ok(IResult { result: updated }) + Ok(ReplicaSchemaResult { result: updated }) } pub fn delete( exec: &dyn SqlExecutor, opts: &ILogErrorDelete, -) -> Result<ILogErrorDeleteResolve, IError<SqlError>> { +) -> Result<ILogErrorDeleteResolve, ReplicaSchemaError<SqlError>> { let id_for_lookup = match opts { ILogErrorDelete::On(args) => match args.on.primary_key() { Some(id) => id, None => { let found = find_one_by_on(exec, &args.on)?; - let model = found.ok_or(IError::from(SqlError::NotFound(args.on.lookup_key())))?; + let model = found.ok_or(ReplicaSchemaError::from(SqlError::NotFound( + args.on.lookup_key(), + )))?; model.id } }, @@ -141,9 +151,11 @@ pub fn delete( let sql = format!("DELETE FROM {TABLE_NAME} WHERE id = ?;"); let outcome = exec.exec(&sql, ¶ms_json)?; if outcome.changes == 0 { - return Err(IError::from(SqlError::NotFound(id_for_lookup.clone()))); + return Err(ReplicaSchemaError::from(SqlError::NotFound( + id_for_lookup.clone(), + ))); } - Ok(IResult { + Ok(ReplicaSchemaResult { result: id_for_lookup, }) } diff --git a/crates/replica_db/src/models/media_image.rs b/crates/replica_db/src/models/media_image.rs @@ -4,9 +4,11 @@ use radroots_replica_db_schema::media_image::{ IMediaImageFindOneResolve, IMediaImageUpdate, IMediaImageUpdateResolve, MediaImage, MediaImageFindManyRel, MediaImageQueryBindValues, }; +use radroots_replica_db_schema::{ + ReplicaSchemaError, ReplicaSchemaResult, ReplicaSchemaResultList, +}; use radroots_sql_core::error::SqlError; use radroots_sql_core::{SqlExecutor, utils}; -use radroots_types::types::{IError, IResult, IResultList}; use serde_json::Value; const TABLE_NAME: &str = "media_image"; @@ -14,7 +16,7 @@ const TABLE_NAME: &str = "media_image"; pub fn create( exec: &dyn SqlExecutor, opts: &IMediaImageCreate, -) -> Result<IMediaImageCreateResolve, IError<SqlError>> { +) -> Result<IMediaImageCreateResolve, ReplicaSchemaError<SqlError>> { let field_map = utils::to_object_map(opts).expect("serialize object map"); let id = utils::uuidv4(); let now = utils::time_created_on(); @@ -27,36 +29,37 @@ pub fn create( let params_json = utils::to_params_json(bind_values).expect("serialize bind params"); let _ = exec.exec(&sql, ¶ms_json)?; let on = MediaImageQueryBindValues::Id { id: id.clone() }; - let result = find_one_by_on(exec, &on)?.ok_or(IError::from(SqlError::NotFound(id.clone())))?; - Ok(IResult { result }) + let result = find_one_by_on(exec, &on)? + .ok_or(ReplicaSchemaError::from(SqlError::NotFound(id.clone())))?; + Ok(ReplicaSchemaResult { result }) } pub fn find_one( exec: &dyn SqlExecutor, opts: &IMediaImageFindOne, -) -> Result<IMediaImageFindOneResolve, IError<SqlError>> { +) -> Result<IMediaImageFindOneResolve, ReplicaSchemaError<SqlError>> { let result = match opts { IMediaImageFindOne::On(args) => find_one_by_on(exec, &args.on)?, IMediaImageFindOne::Rel(args) => find_one_by_rel(exec, &args.rel)?, }; - Ok(IResult { result }) + Ok(ReplicaSchemaResult { result }) } pub fn find_many( exec: &dyn SqlExecutor, opts: &IMediaImageFindMany, -) -> Result<IMediaImageFindManyResolve, IError<SqlError>> { +) -> Result<IMediaImageFindManyResolve, ReplicaSchemaError<SqlError>> { let results = match opts { IMediaImageFindMany::Filter { filter } => find_many_filter(exec, filter)?, IMediaImageFindMany::Rel { rel } => find_many_by_rel(exec, rel)?, }; - Ok(IResultList { results }) + Ok(ReplicaSchemaResultList { results }) } fn find_many_filter( exec: &dyn SqlExecutor, filter: &Option<IMediaImageFieldsFilter>, -) -> Result<Vec<MediaImage>, IError<SqlError>> { +) -> Result<Vec<MediaImage>, ReplicaSchemaError<SqlError>> { let (sql, bind_values) = utils::build_select_query_with_meta(TABLE_NAME, filter.as_ref()); let params_json = utils::to_params_json(bind_values).expect("serialize bind params"); let json = exec.query_raw(&sql, ¶ms_json)?; @@ -67,7 +70,7 @@ fn find_many_filter( fn find_one_by_on( exec: &dyn SqlExecutor, on: &MediaImageQueryBindValues, -) -> Result<Option<MediaImage>, IError<SqlError>> { +) -> Result<Option<MediaImage>, ReplicaSchemaError<SqlError>> { let (column, value) = on.to_filter_param(); let sql = format!("SELECT * FROM {TABLE_NAME} WHERE {column} = ? LIMIT 1;"); let params_json = utils::to_params_json(vec![value]).expect("serialize bind params"); @@ -92,7 +95,7 @@ fn rel_query(rel: &MediaImageFindManyRel) -> (&'static str, Vec<Value>) { fn find_one_by_rel( exec: &dyn SqlExecutor, rel: &MediaImageFindManyRel, -) -> Result<Option<MediaImage>, IError<SqlError>> { +) -> Result<Option<MediaImage>, ReplicaSchemaError<SqlError>> { let (sql, bind_values) = rel_query(rel); let params_json = utils::to_params_json(bind_values).expect("serialize bind params"); let sql = format!("{sql} LIMIT 1;"); @@ -104,7 +107,7 @@ fn find_one_by_rel( fn find_many_by_rel( exec: &dyn SqlExecutor, rel: &MediaImageFindManyRel, -) -> Result<Vec<MediaImage>, IError<SqlError>> { +) -> Result<Vec<MediaImage>, ReplicaSchemaError<SqlError>> { let (sql, bind_values) = rel_query(rel); let params_json = utils::to_params_json(bind_values).expect("serialize bind params"); let sql = format!("{sql};"); @@ -113,26 +116,29 @@ fn find_many_by_rel( Ok(rows) } -fn select_by_id(exec: &dyn SqlExecutor, id: &str) -> Result<MediaImage, IError<SqlError>> { +fn select_by_id( + exec: &dyn SqlExecutor, + id: &str, +) -> Result<MediaImage, ReplicaSchemaError<SqlError>> { let params_json = utils::to_params_json(vec![Value::from(id.to_owned())]).expect("serialize bind params"); let sql = format!("SELECT * FROM {TABLE_NAME} WHERE id = ?;"); let json = exec.query_raw(&sql, ¶ms_json)?; let mut rows: Vec<MediaImage> = utils::parse_json(&json)?; rows.pop() - .ok_or(IError::from(SqlError::NotFound(id.to_owned()))) + .ok_or(ReplicaSchemaError::from(SqlError::NotFound(id.to_owned()))) } pub fn update( exec: &dyn SqlExecutor, opts: &IMediaImageUpdate, -) -> Result<IMediaImageUpdateResolve, IError<SqlError>> { +) -> Result<IMediaImageUpdateResolve, ReplicaSchemaError<SqlError>> { let mut updates = utils::to_partial_object_map(&opts.fields).expect("serialize partial object map"); if updates.is_empty() { - return Err(IError::from(SqlError::InvalidArgument(String::from( - "no fields to update", - )))); + return Err(ReplicaSchemaError::from(SqlError::InvalidArgument( + String::from("no fields to update"), + ))); } updates.insert( String::from("updated_at"), @@ -148,7 +154,9 @@ pub fn update( Some(id) => id, None => { let found = find_one_by_on(exec, &opts.on)?; - let model = found.ok_or(IError::from(SqlError::NotFound(opts.on.lookup_key())))?; + let model = found.ok_or(ReplicaSchemaError::from(SqlError::NotFound( + opts.on.lookup_key(), + )))?; model.id } }; @@ -160,25 +168,29 @@ pub fn update( let params_json = utils::to_params_json(bind_values).expect("serialize bind params"); let _ = exec.exec(&sql, ¶ms_json)?; let updated = select_by_id(exec, &id_for_lookup)?; - Ok(IResult { result: updated }) + Ok(ReplicaSchemaResult { result: updated }) } pub fn delete( exec: &dyn SqlExecutor, opts: &IMediaImageDelete, -) -> Result<IMediaImageDeleteResolve, IError<SqlError>> { +) -> Result<IMediaImageDeleteResolve, ReplicaSchemaError<SqlError>> { let id_for_lookup = match opts { IMediaImageDelete::On(args) => match args.on.primary_key() { Some(id) => id, None => { let found = find_one_by_on(exec, &args.on)?; - let model = found.ok_or(IError::from(SqlError::NotFound(args.on.lookup_key())))?; + let model = found.ok_or(ReplicaSchemaError::from(SqlError::NotFound( + args.on.lookup_key(), + )))?; model.id } }, IMediaImageDelete::Rel(args) => { let found = find_one_by_rel(exec, &args.rel)?; - let model = found.ok_or(IError::from(SqlError::NotFound(rel_lookup_key(&args.rel))))?; + let model = found.ok_or(ReplicaSchemaError::from(SqlError::NotFound( + rel_lookup_key(&args.rel), + )))?; model.id } }; @@ -187,9 +199,11 @@ pub fn delete( let sql = format!("DELETE FROM {TABLE_NAME} WHERE id = ?;"); let outcome = exec.exec(&sql, ¶ms_json)?; if outcome.changes == 0 { - return Err(IError::from(SqlError::NotFound(id_for_lookup.clone()))); + return Err(ReplicaSchemaError::from(SqlError::NotFound( + id_for_lookup.clone(), + ))); } - Ok(IResult { + Ok(ReplicaSchemaResult { result: id_for_lookup, }) } diff --git a/crates/replica_db/src/models/nostr_event_head.rs b/crates/replica_db/src/models/nostr_event_head.rs @@ -5,9 +5,11 @@ use radroots_replica_db_schema::nostr_event_head::{ INostrEventHeadUpdate, INostrEventHeadUpdateResolve, NostrEventHead, NostrEventHeadQueryBindValues, }; +use radroots_replica_db_schema::{ + ReplicaSchemaError, ReplicaSchemaResult, ReplicaSchemaResultList, +}; use radroots_sql_core::error::SqlError; use radroots_sql_core::{SqlExecutor, utils}; -use radroots_types::types::{IError, IResult, IResultList}; use serde_json::Value; const TABLE_NAME: &str = "nostr_event_head"; @@ -15,7 +17,7 @@ const TABLE_NAME: &str = "nostr_event_head"; pub fn create( exec: &dyn SqlExecutor, opts: &INostrEventHeadCreate, -) -> Result<INostrEventHeadCreateResolve, IError<SqlError>> { +) -> Result<INostrEventHeadCreateResolve, ReplicaSchemaError<SqlError>> { let field_map = utils::to_object_map(opts).expect("serialize object map"); let id = utils::uuidv4(); let now = utils::time_created_on(); @@ -28,32 +30,33 @@ pub fn create( let params_json = utils::to_params_json(bind_values).expect("serialize bind params"); let _ = exec.exec(&sql, ¶ms_json)?; let on = NostrEventHeadQueryBindValues::Id { id: id.clone() }; - let result = find_one_by_on(exec, &on)?.ok_or(IError::from(SqlError::NotFound(id.clone())))?; - Ok(IResult { result }) + let result = find_one_by_on(exec, &on)? + .ok_or(ReplicaSchemaError::from(SqlError::NotFound(id.clone())))?; + Ok(ReplicaSchemaResult { result }) } pub fn find_one( exec: &dyn SqlExecutor, opts: &INostrEventHeadFindOne, -) -> Result<INostrEventHeadFindOneResolve, IError<SqlError>> { +) -> Result<INostrEventHeadFindOneResolve, ReplicaSchemaError<SqlError>> { let result = match opts { INostrEventHeadFindOne::On(args) => find_one_by_on(exec, &args.on)?, }; - Ok(IResult { result }) + Ok(ReplicaSchemaResult { result }) } pub fn find_many( exec: &dyn SqlExecutor, opts: &INostrEventHeadFindMany, -) -> Result<INostrEventHeadFindManyResolve, IError<SqlError>> { +) -> Result<INostrEventHeadFindManyResolve, ReplicaSchemaError<SqlError>> { let results = find_many_filter(exec, &opts.filter)?; - Ok(IResultList { results }) + Ok(ReplicaSchemaResultList { results }) } fn find_many_filter( exec: &dyn SqlExecutor, filter: &Option<INostrEventHeadFieldsFilter>, -) -> Result<Vec<NostrEventHead>, IError<SqlError>> { +) -> Result<Vec<NostrEventHead>, ReplicaSchemaError<SqlError>> { let (sql, bind_values) = utils::build_select_query_with_meta(TABLE_NAME, filter.as_ref()); let params_json = utils::to_params_json(bind_values).expect("serialize bind params"); let json = exec.query_raw(&sql, ¶ms_json)?; @@ -64,7 +67,7 @@ fn find_many_filter( fn find_one_by_on( exec: &dyn SqlExecutor, on: &NostrEventHeadQueryBindValues, -) -> Result<Option<NostrEventHead>, IError<SqlError>> { +) -> Result<Option<NostrEventHead>, ReplicaSchemaError<SqlError>> { let (column, value) = on.to_filter_param(); let sql = format!("SELECT * FROM {TABLE_NAME} WHERE {column} = ? LIMIT 1;"); let params_json = utils::to_params_json(vec![value]).expect("serialize bind params"); @@ -73,26 +76,29 @@ fn find_one_by_on( Ok(rows.pop()) } -fn select_by_id(exec: &dyn SqlExecutor, id: &str) -> Result<NostrEventHead, IError<SqlError>> { +fn select_by_id( + exec: &dyn SqlExecutor, + id: &str, +) -> Result<NostrEventHead, ReplicaSchemaError<SqlError>> { let params_json = utils::to_params_json(vec![Value::from(id.to_owned())]).expect("serialize bind params"); let sql = format!("SELECT * FROM {TABLE_NAME} WHERE id = ?;"); let json = exec.query_raw(&sql, ¶ms_json)?; let mut rows: Vec<NostrEventHead> = utils::parse_json(&json)?; rows.pop() - .ok_or(IError::from(SqlError::NotFound(id.to_owned()))) + .ok_or(ReplicaSchemaError::from(SqlError::NotFound(id.to_owned()))) } pub fn update( exec: &dyn SqlExecutor, opts: &INostrEventHeadUpdate, -) -> Result<INostrEventHeadUpdateResolve, IError<SqlError>> { +) -> Result<INostrEventHeadUpdateResolve, ReplicaSchemaError<SqlError>> { let mut updates = utils::to_partial_object_map(&opts.fields).expect("serialize partial object map"); if updates.is_empty() { - return Err(IError::from(SqlError::InvalidArgument(String::from( - "no fields to update", - )))); + return Err(ReplicaSchemaError::from(SqlError::InvalidArgument( + String::from("no fields to update"), + ))); } updates.insert( String::from("updated_at"), @@ -108,7 +114,9 @@ pub fn update( Some(id) => id, None => { let found = find_one_by_on(exec, &opts.on)?; - let model = found.ok_or(IError::from(SqlError::NotFound(opts.on.lookup_key())))?; + let model = found.ok_or(ReplicaSchemaError::from(SqlError::NotFound( + opts.on.lookup_key(), + )))?; model.id } }; @@ -120,19 +128,21 @@ pub fn update( let params_json = utils::to_params_json(bind_values).expect("serialize bind params"); let _ = exec.exec(&sql, ¶ms_json)?; let updated = select_by_id(exec, &id_for_lookup)?; - Ok(IResult { result: updated }) + Ok(ReplicaSchemaResult { result: updated }) } pub fn delete( exec: &dyn SqlExecutor, opts: &INostrEventHeadDelete, -) -> Result<INostrEventHeadDeleteResolve, IError<SqlError>> { +) -> Result<INostrEventHeadDeleteResolve, ReplicaSchemaError<SqlError>> { let id_for_lookup = match opts { INostrEventHeadDelete::On(args) => match args.on.primary_key() { Some(id) => id, None => { let found = find_one_by_on(exec, &args.on)?; - let model = found.ok_or(IError::from(SqlError::NotFound(args.on.lookup_key())))?; + let model = found.ok_or(ReplicaSchemaError::from(SqlError::NotFound( + args.on.lookup_key(), + )))?; model.id } }, @@ -142,9 +152,11 @@ pub fn delete( let sql = format!("DELETE FROM {TABLE_NAME} WHERE id = ?;"); let outcome = exec.exec(&sql, ¶ms_json)?; if outcome.changes == 0 { - return Err(IError::from(SqlError::NotFound(id_for_lookup.clone()))); + return Err(ReplicaSchemaError::from(SqlError::NotFound( + id_for_lookup.clone(), + ))); } - Ok(IResult { + Ok(ReplicaSchemaResult { result: id_for_lookup, }) } diff --git a/crates/replica_db/src/models/nostr_profile.rs b/crates/replica_db/src/models/nostr_profile.rs @@ -5,9 +5,11 @@ use radroots_replica_db_schema::nostr_profile::{ INostrProfileUpdate, INostrProfileUpdateResolve, NostrProfile, NostrProfileFindManyRel, NostrProfileQueryBindValues, }; +use radroots_replica_db_schema::{ + ReplicaSchemaError, ReplicaSchemaResult, ReplicaSchemaResultList, +}; use radroots_sql_core::error::SqlError; use radroots_sql_core::{SqlExecutor, utils}; -use radroots_types::types::{IError, IResult, IResultList}; use serde_json::Value; const TABLE_NAME: &str = "nostr_profile"; @@ -15,7 +17,7 @@ const TABLE_NAME: &str = "nostr_profile"; pub fn create( exec: &dyn SqlExecutor, opts: &INostrProfileCreate, -) -> Result<INostrProfileCreateResolve, IError<SqlError>> { +) -> Result<INostrProfileCreateResolve, ReplicaSchemaError<SqlError>> { let field_map = utils::to_object_map(opts).expect("serialize object map"); let id = utils::uuidv4(); let now = utils::time_created_on(); @@ -28,36 +30,37 @@ pub fn create( let params_json = utils::to_params_json(bind_values).expect("serialize bind params"); let _ = exec.exec(&sql, ¶ms_json)?; let on = NostrProfileQueryBindValues::Id { id: id.clone() }; - let result = find_one_by_on(exec, &on)?.ok_or(IError::from(SqlError::NotFound(id.clone())))?; - Ok(IResult { result }) + let result = find_one_by_on(exec, &on)? + .ok_or(ReplicaSchemaError::from(SqlError::NotFound(id.clone())))?; + Ok(ReplicaSchemaResult { result }) } pub fn find_one( exec: &dyn SqlExecutor, opts: &INostrProfileFindOne, -) -> Result<INostrProfileFindOneResolve, IError<SqlError>> { +) -> Result<INostrProfileFindOneResolve, ReplicaSchemaError<SqlError>> { let result = match opts { INostrProfileFindOne::On(args) => find_one_by_on(exec, &args.on)?, INostrProfileFindOne::Rel(args) => find_one_by_rel(exec, &args.rel)?, }; - Ok(IResult { result }) + Ok(ReplicaSchemaResult { result }) } pub fn find_many( exec: &dyn SqlExecutor, opts: &INostrProfileFindMany, -) -> Result<INostrProfileFindManyResolve, IError<SqlError>> { +) -> Result<INostrProfileFindManyResolve, ReplicaSchemaError<SqlError>> { let results = match opts { INostrProfileFindMany::Filter { filter } => find_many_filter(exec, filter)?, INostrProfileFindMany::Rel { rel } => find_many_by_rel(exec, rel)?, }; - Ok(IResultList { results }) + Ok(ReplicaSchemaResultList { results }) } fn find_many_filter( exec: &dyn SqlExecutor, filter: &Option<INostrProfileFieldsFilter>, -) -> Result<Vec<NostrProfile>, IError<SqlError>> { +) -> Result<Vec<NostrProfile>, ReplicaSchemaError<SqlError>> { let (sql, bind_values) = utils::build_select_query_with_meta(TABLE_NAME, filter.as_ref()); let params_json = utils::to_params_json(bind_values).expect("serialize bind params"); let json = exec.query_raw(&sql, ¶ms_json)?; @@ -68,7 +71,7 @@ fn find_many_filter( fn find_one_by_on( exec: &dyn SqlExecutor, on: &NostrProfileQueryBindValues, -) -> Result<Option<NostrProfile>, IError<SqlError>> { +) -> Result<Option<NostrProfile>, ReplicaSchemaError<SqlError>> { let (column, value) = on.to_filter_param(); let sql = format!("SELECT * FROM {TABLE_NAME} WHERE {column} = ? LIMIT 1;"); let params_json = utils::to_params_json(vec![value]).expect("serialize bind params"); @@ -93,7 +96,7 @@ fn rel_query(rel: &NostrProfileFindManyRel) -> (&'static str, Vec<Value>) { fn find_one_by_rel( exec: &dyn SqlExecutor, rel: &NostrProfileFindManyRel, -) -> Result<Option<NostrProfile>, IError<SqlError>> { +) -> Result<Option<NostrProfile>, ReplicaSchemaError<SqlError>> { let (sql, bind_values) = rel_query(rel); let params_json = utils::to_params_json(bind_values).expect("serialize bind params"); let sql = format!("{sql} LIMIT 1;"); @@ -105,7 +108,7 @@ fn find_one_by_rel( fn find_many_by_rel( exec: &dyn SqlExecutor, rel: &NostrProfileFindManyRel, -) -> Result<Vec<NostrProfile>, IError<SqlError>> { +) -> Result<Vec<NostrProfile>, ReplicaSchemaError<SqlError>> { let (sql, bind_values) = rel_query(rel); let params_json = utils::to_params_json(bind_values).expect("serialize bind params"); let sql = format!("{sql};"); @@ -114,26 +117,29 @@ fn find_many_by_rel( Ok(rows) } -fn select_by_id(exec: &dyn SqlExecutor, id: &str) -> Result<NostrProfile, IError<SqlError>> { +fn select_by_id( + exec: &dyn SqlExecutor, + id: &str, +) -> Result<NostrProfile, ReplicaSchemaError<SqlError>> { let params_json = utils::to_params_json(vec![Value::from(id.to_owned())]).expect("serialize bind params"); let sql = format!("SELECT * FROM {TABLE_NAME} WHERE id = ?;"); let json = exec.query_raw(&sql, ¶ms_json)?; let mut rows: Vec<NostrProfile> = utils::parse_json(&json)?; rows.pop() - .ok_or(IError::from(SqlError::NotFound(id.to_owned()))) + .ok_or(ReplicaSchemaError::from(SqlError::NotFound(id.to_owned()))) } pub fn update( exec: &dyn SqlExecutor, opts: &INostrProfileUpdate, -) -> Result<INostrProfileUpdateResolve, IError<SqlError>> { +) -> Result<INostrProfileUpdateResolve, ReplicaSchemaError<SqlError>> { let mut updates = utils::to_partial_object_map(&opts.fields).expect("serialize partial object map"); if updates.is_empty() { - return Err(IError::from(SqlError::InvalidArgument(String::from( - "no fields to update", - )))); + return Err(ReplicaSchemaError::from(SqlError::InvalidArgument( + String::from("no fields to update"), + ))); } updates.insert( String::from("updated_at"), @@ -149,7 +155,9 @@ pub fn update( Some(id) => id, None => { let found = find_one_by_on(exec, &opts.on)?; - let model = found.ok_or(IError::from(SqlError::NotFound(opts.on.lookup_key())))?; + let model = found.ok_or(ReplicaSchemaError::from(SqlError::NotFound( + opts.on.lookup_key(), + )))?; model.id } }; @@ -161,25 +169,29 @@ pub fn update( let params_json = utils::to_params_json(bind_values).expect("serialize bind params"); let _ = exec.exec(&sql, ¶ms_json)?; let updated = select_by_id(exec, &id_for_lookup)?; - Ok(IResult { result: updated }) + Ok(ReplicaSchemaResult { result: updated }) } pub fn delete( exec: &dyn SqlExecutor, opts: &INostrProfileDelete, -) -> Result<INostrProfileDeleteResolve, IError<SqlError>> { +) -> Result<INostrProfileDeleteResolve, ReplicaSchemaError<SqlError>> { let id_for_lookup = match opts { INostrProfileDelete::On(args) => match args.on.primary_key() { Some(id) => id, None => { let found = find_one_by_on(exec, &args.on)?; - let model = found.ok_or(IError::from(SqlError::NotFound(args.on.lookup_key())))?; + let model = found.ok_or(ReplicaSchemaError::from(SqlError::NotFound( + args.on.lookup_key(), + )))?; model.id } }, INostrProfileDelete::Rel(args) => { let found = find_one_by_rel(exec, &args.rel)?; - let model = found.ok_or(IError::from(SqlError::NotFound(rel_lookup_key(&args.rel))))?; + let model = found.ok_or(ReplicaSchemaError::from(SqlError::NotFound( + rel_lookup_key(&args.rel), + )))?; model.id } }; @@ -188,9 +200,11 @@ pub fn delete( let sql = format!("DELETE FROM {TABLE_NAME} WHERE id = ?;"); let outcome = exec.exec(&sql, ¶ms_json)?; if outcome.changes == 0 { - return Err(IError::from(SqlError::NotFound(id_for_lookup.clone()))); + return Err(ReplicaSchemaError::from(SqlError::NotFound( + id_for_lookup.clone(), + ))); } - Ok(IResult { + Ok(ReplicaSchemaResult { result: id_for_lookup, }) } diff --git a/crates/replica_db/src/models/nostr_profile_relay.rs b/crates/replica_db/src/models/nostr_profile_relay.rs @@ -1,9 +1,9 @@ use radroots_replica_db_schema::nostr_profile_relay::{ INostrProfileRelayRelation, INostrProfileRelayResolve, }; +use radroots_replica_db_schema::{ReplicaSchemaError, ReplicaSchemaResultPass}; use radroots_sql_core::error::SqlError; use radroots_sql_core::{SqlExecutor, utils}; -use radroots_types::types::{IError, IResultPass}; use serde_json::Value; const TABLE_NAME: &str = "nostr_profile_relay"; @@ -11,7 +11,7 @@ const TABLE_NAME: &str = "nostr_profile_relay"; pub fn set( exec: &dyn SqlExecutor, opts: &INostrProfileRelayRelation, -) -> Result<INostrProfileRelayResolve, IError<SqlError>> { +) -> Result<INostrProfileRelayResolve, ReplicaSchemaError<SqlError>> { let mut query_vals: Vec<Value> = Vec::with_capacity(2); let (nostr_profile_column, nostr_profile_value) = opts.nostr_profile.to_filter_param(); query_vals.push(nostr_profile_value); @@ -23,13 +23,13 @@ pub fn set( ); let params_json = utils::to_params_json(query_vals).expect("serialize bind params"); let _ = exec.exec(&query, ¶ms_json)?; - Ok(IResultPass { pass: true }) + Ok(ReplicaSchemaResultPass { pass: true }) } pub fn unset( exec: &dyn SqlExecutor, opts: &INostrProfileRelayRelation, -) -> Result<INostrProfileRelayResolve, IError<SqlError>> { +) -> Result<INostrProfileRelayResolve, ReplicaSchemaError<SqlError>> { let mut query_vals: Vec<Value> = Vec::with_capacity(2); let (nostr_profile_column, nostr_profile_value) = opts.nostr_profile.to_filter_param(); query_vals.push(nostr_profile_value); @@ -41,5 +41,5 @@ pub fn unset( ); let params_json = utils::to_params_json(query_vals).expect("serialize bind params"); let _ = exec.exec(&query, ¶ms_json)?; - Ok(IResultPass { pass: true }) + Ok(ReplicaSchemaResultPass { pass: true }) } diff --git a/crates/replica_db/src/models/nostr_relay.rs b/crates/replica_db/src/models/nostr_relay.rs @@ -4,9 +4,11 @@ use radroots_replica_db_schema::nostr_relay::{ INostrRelayFindOneResolve, INostrRelayUpdate, INostrRelayUpdateResolve, NostrRelay, NostrRelayFindManyRel, NostrRelayQueryBindValues, }; +use radroots_replica_db_schema::{ + ReplicaSchemaError, ReplicaSchemaResult, ReplicaSchemaResultList, +}; use radroots_sql_core::error::SqlError; use radroots_sql_core::{SqlExecutor, utils}; -use radroots_types::types::{IError, IResult, IResultList}; use serde_json::Value; const TABLE_NAME: &str = "nostr_relay"; @@ -14,7 +16,7 @@ const TABLE_NAME: &str = "nostr_relay"; pub fn create( exec: &dyn SqlExecutor, opts: &INostrRelayCreate, -) -> Result<INostrRelayCreateResolve, IError<SqlError>> { +) -> Result<INostrRelayCreateResolve, ReplicaSchemaError<SqlError>> { let field_map = utils::to_object_map(opts).expect("serialize object map"); let id = utils::uuidv4(); let now = utils::time_created_on(); @@ -27,36 +29,37 @@ pub fn create( let params_json = utils::to_params_json(bind_values).expect("serialize bind params"); let _ = exec.exec(&sql, ¶ms_json)?; let on = NostrRelayQueryBindValues::Id { id: id.clone() }; - let result = find_one_by_on(exec, &on)?.ok_or(IError::from(SqlError::NotFound(id.clone())))?; - Ok(IResult { result }) + let result = find_one_by_on(exec, &on)? + .ok_or(ReplicaSchemaError::from(SqlError::NotFound(id.clone())))?; + Ok(ReplicaSchemaResult { result }) } pub fn find_one( exec: &dyn SqlExecutor, opts: &INostrRelayFindOne, -) -> Result<INostrRelayFindOneResolve, IError<SqlError>> { +) -> Result<INostrRelayFindOneResolve, ReplicaSchemaError<SqlError>> { let result = match opts { INostrRelayFindOne::On(args) => find_one_by_on(exec, &args.on)?, INostrRelayFindOne::Rel(args) => find_one_by_rel(exec, &args.rel)?, }; - Ok(IResult { result }) + Ok(ReplicaSchemaResult { result }) } pub fn find_many( exec: &dyn SqlExecutor, opts: &INostrRelayFindMany, -) -> Result<INostrRelayFindManyResolve, IError<SqlError>> { +) -> Result<INostrRelayFindManyResolve, ReplicaSchemaError<SqlError>> { let results = match opts { INostrRelayFindMany::Filter { filter } => find_many_filter(exec, filter)?, INostrRelayFindMany::Rel { rel } => find_many_by_rel(exec, rel)?, }; - Ok(IResultList { results }) + Ok(ReplicaSchemaResultList { results }) } fn find_many_filter( exec: &dyn SqlExecutor, filter: &Option<INostrRelayFieldsFilter>, -) -> Result<Vec<NostrRelay>, IError<SqlError>> { +) -> Result<Vec<NostrRelay>, ReplicaSchemaError<SqlError>> { let (sql, bind_values) = utils::build_select_query_with_meta(TABLE_NAME, filter.as_ref()); let params_json = utils::to_params_json(bind_values).expect("serialize bind params"); let json = exec.query_raw(&sql, ¶ms_json)?; @@ -67,7 +70,7 @@ fn find_many_filter( fn find_one_by_on( exec: &dyn SqlExecutor, on: &NostrRelayQueryBindValues, -) -> Result<Option<NostrRelay>, IError<SqlError>> { +) -> Result<Option<NostrRelay>, ReplicaSchemaError<SqlError>> { let (column, value) = on.to_filter_param(); let sql = format!("SELECT * FROM {TABLE_NAME} WHERE {column} = ? LIMIT 1;"); let params_json = utils::to_params_json(vec![value]).expect("serialize bind params"); @@ -92,7 +95,7 @@ fn rel_query(rel: &NostrRelayFindManyRel) -> (&'static str, Vec<Value>) { fn find_one_by_rel( exec: &dyn SqlExecutor, rel: &NostrRelayFindManyRel, -) -> Result<Option<NostrRelay>, IError<SqlError>> { +) -> Result<Option<NostrRelay>, ReplicaSchemaError<SqlError>> { let (sql, bind_values) = rel_query(rel); let params_json = utils::to_params_json(bind_values).expect("serialize bind params"); let sql = format!("{sql} LIMIT 1;"); @@ -104,7 +107,7 @@ fn find_one_by_rel( fn find_many_by_rel( exec: &dyn SqlExecutor, rel: &NostrRelayFindManyRel, -) -> Result<Vec<NostrRelay>, IError<SqlError>> { +) -> Result<Vec<NostrRelay>, ReplicaSchemaError<SqlError>> { let (sql, bind_values) = rel_query(rel); let params_json = utils::to_params_json(bind_values).expect("serialize bind params"); let sql = format!("{sql};"); @@ -113,26 +116,29 @@ fn find_many_by_rel( Ok(rows) } -fn select_by_id(exec: &dyn SqlExecutor, id: &str) -> Result<NostrRelay, IError<SqlError>> { +fn select_by_id( + exec: &dyn SqlExecutor, + id: &str, +) -> Result<NostrRelay, ReplicaSchemaError<SqlError>> { let params_json = utils::to_params_json(vec![Value::from(id.to_owned())]).expect("serialize bind params"); let sql = format!("SELECT * FROM {TABLE_NAME} WHERE id = ?;"); let json = exec.query_raw(&sql, ¶ms_json)?; let mut rows: Vec<NostrRelay> = utils::parse_json(&json)?; rows.pop() - .ok_or(IError::from(SqlError::NotFound(id.to_owned()))) + .ok_or(ReplicaSchemaError::from(SqlError::NotFound(id.to_owned()))) } pub fn update( exec: &dyn SqlExecutor, opts: &INostrRelayUpdate, -) -> Result<INostrRelayUpdateResolve, IError<SqlError>> { +) -> Result<INostrRelayUpdateResolve, ReplicaSchemaError<SqlError>> { let mut updates = utils::to_partial_object_map(&opts.fields).expect("serialize partial object map"); if updates.is_empty() { - return Err(IError::from(SqlError::InvalidArgument(String::from( - "no fields to update", - )))); + return Err(ReplicaSchemaError::from(SqlError::InvalidArgument( + String::from("no fields to update"), + ))); } updates.insert( String::from("updated_at"), @@ -148,7 +154,9 @@ pub fn update( Some(id) => id, None => { let found = find_one_by_on(exec, &opts.on)?; - let model = found.ok_or(IError::from(SqlError::NotFound(opts.on.lookup_key())))?; + let model = found.ok_or(ReplicaSchemaError::from(SqlError::NotFound( + opts.on.lookup_key(), + )))?; model.id } }; @@ -160,25 +168,29 @@ pub fn update( let params_json = utils::to_params_json(bind_values).expect("serialize bind params"); let _ = exec.exec(&sql, ¶ms_json)?; let updated = select_by_id(exec, &id_for_lookup)?; - Ok(IResult { result: updated }) + Ok(ReplicaSchemaResult { result: updated }) } pub fn delete( exec: &dyn SqlExecutor, opts: &INostrRelayDelete, -) -> Result<INostrRelayDeleteResolve, IError<SqlError>> { +) -> Result<INostrRelayDeleteResolve, ReplicaSchemaError<SqlError>> { let id_for_lookup = match opts { INostrRelayDelete::On(args) => match args.on.primary_key() { Some(id) => id, None => { let found = find_one_by_on(exec, &args.on)?; - let model = found.ok_or(IError::from(SqlError::NotFound(args.on.lookup_key())))?; + let model = found.ok_or(ReplicaSchemaError::from(SqlError::NotFound( + args.on.lookup_key(), + )))?; model.id } }, INostrRelayDelete::Rel(args) => { let found = find_one_by_rel(exec, &args.rel)?; - let model = found.ok_or(IError::from(SqlError::NotFound(rel_lookup_key(&args.rel))))?; + let model = found.ok_or(ReplicaSchemaError::from(SqlError::NotFound( + rel_lookup_key(&args.rel), + )))?; model.id } }; @@ -187,9 +199,11 @@ pub fn delete( let sql = format!("DELETE FROM {TABLE_NAME} WHERE id = ?;"); let outcome = exec.exec(&sql, ¶ms_json)?; if outcome.changes == 0 { - return Err(IError::from(SqlError::NotFound(id_for_lookup.clone()))); + return Err(ReplicaSchemaError::from(SqlError::NotFound( + id_for_lookup.clone(), + ))); } - Ok(IResult { + Ok(ReplicaSchemaResult { result: id_for_lookup, }) } diff --git a/crates/replica_db/src/models/plot.rs b/crates/replica_db/src/models/plot.rs @@ -3,9 +3,11 @@ use radroots_replica_db_schema::plot::{ IPlotFindMany, IPlotFindManyResolve, IPlotFindOne, IPlotFindOneResolve, IPlotUpdate, IPlotUpdateResolve, Plot, PlotQueryBindValues, }; +use radroots_replica_db_schema::{ + ReplicaSchemaError, ReplicaSchemaResult, ReplicaSchemaResultList, +}; use radroots_sql_core::error::SqlError; use radroots_sql_core::{SqlExecutor, utils}; -use radroots_types::types::{IError, IResult, IResultList}; use serde_json::Value; const TABLE_NAME: &str = "plot"; @@ -13,7 +15,7 @@ const TABLE_NAME: &str = "plot"; pub fn create( exec: &dyn SqlExecutor, opts: &IPlotCreate, -) -> Result<IPlotCreateResolve, IError<SqlError>> { +) -> Result<IPlotCreateResolve, ReplicaSchemaError<SqlError>> { let field_map = utils::to_object_map(opts).expect("serialize object map"); let id = utils::uuidv4(); let now = utils::time_created_on(); @@ -26,32 +28,33 @@ pub fn create( let params_json = utils::to_params_json(bind_values).expect("serialize bind params"); let _ = exec.exec(&sql, ¶ms_json)?; let on = PlotQueryBindValues::Id { id: id.clone() }; - let result = find_one_by_on(exec, &on)?.ok_or(IError::from(SqlError::NotFound(id.clone())))?; - Ok(IResult { result }) + let result = find_one_by_on(exec, &on)? + .ok_or(ReplicaSchemaError::from(SqlError::NotFound(id.clone())))?; + Ok(ReplicaSchemaResult { result }) } pub fn find_one( exec: &dyn SqlExecutor, opts: &IPlotFindOne, -) -> Result<IPlotFindOneResolve, IError<SqlError>> { +) -> Result<IPlotFindOneResolve, ReplicaSchemaError<SqlError>> { let result = match opts { IPlotFindOne::On(args) => find_one_by_on(exec, &args.on)?, }; - Ok(IResult { result }) + Ok(ReplicaSchemaResult { result }) } pub fn find_many( exec: &dyn SqlExecutor, opts: &IPlotFindMany, -) -> Result<IPlotFindManyResolve, IError<SqlError>> { +) -> Result<IPlotFindManyResolve, ReplicaSchemaError<SqlError>> { let results = find_many_filter(exec, &opts.filter)?; - Ok(IResultList { results }) + Ok(ReplicaSchemaResultList { results }) } fn find_many_filter( exec: &dyn SqlExecutor, filter: &Option<IPlotFieldsFilter>, -) -> Result<Vec<Plot>, IError<SqlError>> { +) -> Result<Vec<Plot>, ReplicaSchemaError<SqlError>> { let (sql, bind_values) = utils::build_select_query_with_meta(TABLE_NAME, filter.as_ref()); let params_json = utils::to_params_json(bind_values).expect("serialize bind params"); let json = exec.query_raw(&sql, ¶ms_json)?; @@ -62,7 +65,7 @@ fn find_many_filter( fn find_one_by_on( exec: &dyn SqlExecutor, on: &PlotQueryBindValues, -) -> Result<Option<Plot>, IError<SqlError>> { +) -> Result<Option<Plot>, ReplicaSchemaError<SqlError>> { let (column, value) = on.to_filter_param(); let sql = format!("SELECT * FROM {TABLE_NAME} WHERE {column} = ? LIMIT 1;"); let params_json = utils::to_params_json(vec![value]).expect("serialize bind params"); @@ -71,26 +74,26 @@ fn find_one_by_on( Ok(rows.pop()) } -fn select_by_id(exec: &dyn SqlExecutor, id: &str) -> Result<Plot, IError<SqlError>> { +fn select_by_id(exec: &dyn SqlExecutor, id: &str) -> Result<Plot, ReplicaSchemaError<SqlError>> { let params_json = utils::to_params_json(vec![Value::from(id.to_owned())]).expect("serialize bind params"); let sql = format!("SELECT * FROM {TABLE_NAME} WHERE id = ?;"); let json = exec.query_raw(&sql, ¶ms_json)?; let mut rows: Vec<Plot> = utils::parse_json(&json)?; rows.pop() - .ok_or(IError::from(SqlError::NotFound(id.to_owned()))) + .ok_or(ReplicaSchemaError::from(SqlError::NotFound(id.to_owned()))) } pub fn update( exec: &dyn SqlExecutor, opts: &IPlotUpdate, -) -> Result<IPlotUpdateResolve, IError<SqlError>> { +) -> Result<IPlotUpdateResolve, ReplicaSchemaError<SqlError>> { let mut updates = utils::to_partial_object_map(&opts.fields).expect("serialize partial object map"); if updates.is_empty() { - return Err(IError::from(SqlError::InvalidArgument(String::from( - "no fields to update", - )))); + return Err(ReplicaSchemaError::from(SqlError::InvalidArgument( + String::from("no fields to update"), + ))); } updates.insert( String::from("updated_at"), @@ -106,7 +109,9 @@ pub fn update( Some(id) => id, None => { let found = find_one_by_on(exec, &opts.on)?; - let model = found.ok_or(IError::from(SqlError::NotFound(opts.on.lookup_key())))?; + let model = found.ok_or(ReplicaSchemaError::from(SqlError::NotFound( + opts.on.lookup_key(), + )))?; model.id } }; @@ -118,19 +123,21 @@ pub fn update( let params_json = utils::to_params_json(bind_values).expect("serialize bind params"); let _ = exec.exec(&sql, ¶ms_json)?; let updated = select_by_id(exec, &id_for_lookup)?; - Ok(IResult { result: updated }) + Ok(ReplicaSchemaResult { result: updated }) } pub fn delete( exec: &dyn SqlExecutor, opts: &IPlotDelete, -) -> Result<IPlotDeleteResolve, IError<SqlError>> { +) -> Result<IPlotDeleteResolve, ReplicaSchemaError<SqlError>> { let id_for_lookup = match opts { IPlotDelete::On(args) => match args.on.primary_key() { Some(id) => id, None => { let found = find_one_by_on(exec, &args.on)?; - let model = found.ok_or(IError::from(SqlError::NotFound(args.on.lookup_key())))?; + let model = found.ok_or(ReplicaSchemaError::from(SqlError::NotFound( + args.on.lookup_key(), + )))?; model.id } }, @@ -140,9 +147,11 @@ pub fn delete( let sql = format!("DELETE FROM {TABLE_NAME} WHERE id = ?;"); let outcome = exec.exec(&sql, ¶ms_json)?; if outcome.changes == 0 { - return Err(IError::from(SqlError::NotFound(id_for_lookup.clone()))); + return Err(ReplicaSchemaError::from(SqlError::NotFound( + id_for_lookup.clone(), + ))); } - Ok(IResult { + Ok(ReplicaSchemaResult { result: id_for_lookup, }) } diff --git a/crates/replica_db/src/models/plot_gcs_location.rs b/crates/replica_db/src/models/plot_gcs_location.rs @@ -5,9 +5,11 @@ use radroots_replica_db_schema::plot_gcs_location::{ IPlotGcsLocationUpdate, IPlotGcsLocationUpdateResolve, PlotGcsLocation, PlotGcsLocationQueryBindValues, }; +use radroots_replica_db_schema::{ + ReplicaSchemaError, ReplicaSchemaResult, ReplicaSchemaResultList, +}; use radroots_sql_core::error::SqlError; use radroots_sql_core::{SqlExecutor, utils}; -use radroots_types::types::{IError, IResult, IResultList}; use serde_json::Value; const TABLE_NAME: &str = "plot_gcs_location"; @@ -15,7 +17,7 @@ const TABLE_NAME: &str = "plot_gcs_location"; pub fn create( exec: &dyn SqlExecutor, opts: &IPlotGcsLocationCreate, -) -> Result<IPlotGcsLocationCreateResolve, IError<SqlError>> { +) -> Result<IPlotGcsLocationCreateResolve, ReplicaSchemaError<SqlError>> { let field_map = utils::to_object_map(opts).expect("serialize object map"); let id = utils::uuidv4(); let now = utils::time_created_on(); @@ -28,32 +30,33 @@ pub fn create( let params_json = utils::to_params_json(bind_values).expect("serialize bind params"); let _ = exec.exec(&sql, ¶ms_json)?; let on = PlotGcsLocationQueryBindValues::Id { id: id.clone() }; - let result = find_one_by_on(exec, &on)?.ok_or(IError::from(SqlError::NotFound(id.clone())))?; - Ok(IResult { result }) + let result = find_one_by_on(exec, &on)? + .ok_or(ReplicaSchemaError::from(SqlError::NotFound(id.clone())))?; + Ok(ReplicaSchemaResult { result }) } pub fn find_one( exec: &dyn SqlExecutor, opts: &IPlotGcsLocationFindOne, -) -> Result<IPlotGcsLocationFindOneResolve, IError<SqlError>> { +) -> Result<IPlotGcsLocationFindOneResolve, ReplicaSchemaError<SqlError>> { let result = match opts { IPlotGcsLocationFindOne::On(args) => find_one_by_on(exec, &args.on)?, }; - Ok(IResult { result }) + Ok(ReplicaSchemaResult { result }) } pub fn find_many( exec: &dyn SqlExecutor, opts: &IPlotGcsLocationFindMany, -) -> Result<IPlotGcsLocationFindManyResolve, IError<SqlError>> { +) -> Result<IPlotGcsLocationFindManyResolve, ReplicaSchemaError<SqlError>> { let results = find_many_filter(exec, &opts.filter)?; - Ok(IResultList { results }) + Ok(ReplicaSchemaResultList { results }) } fn find_many_filter( exec: &dyn SqlExecutor, filter: &Option<IPlotGcsLocationFieldsFilter>, -) -> Result<Vec<PlotGcsLocation>, IError<SqlError>> { +) -> Result<Vec<PlotGcsLocation>, ReplicaSchemaError<SqlError>> { let (sql, bind_values) = utils::build_select_query_with_meta(TABLE_NAME, filter.as_ref()); let params_json = utils::to_params_json(bind_values).expect("serialize bind params"); let json = exec.query_raw(&sql, ¶ms_json)?; @@ -64,7 +67,7 @@ fn find_many_filter( fn find_one_by_on( exec: &dyn SqlExecutor, on: &PlotGcsLocationQueryBindValues, -) -> Result<Option<PlotGcsLocation>, IError<SqlError>> { +) -> Result<Option<PlotGcsLocation>, ReplicaSchemaError<SqlError>> { let (column, value) = on.to_filter_param(); let sql = format!("SELECT * FROM {TABLE_NAME} WHERE {column} = ? LIMIT 1;"); let params_json = utils::to_params_json(vec![value]).expect("serialize bind params"); @@ -73,26 +76,29 @@ fn find_one_by_on( Ok(rows.pop()) } -fn select_by_id(exec: &dyn SqlExecutor, id: &str) -> Result<PlotGcsLocation, IError<SqlError>> { +fn select_by_id( + exec: &dyn SqlExecutor, + id: &str, +) -> Result<PlotGcsLocation, ReplicaSchemaError<SqlError>> { let params_json = utils::to_params_json(vec![Value::from(id.to_owned())]).expect("serialize bind params"); let sql = format!("SELECT * FROM {TABLE_NAME} WHERE id = ?;"); let json = exec.query_raw(&sql, ¶ms_json)?; let mut rows: Vec<PlotGcsLocation> = utils::parse_json(&json)?; rows.pop() - .ok_or(IError::from(SqlError::NotFound(id.to_owned()))) + .ok_or(ReplicaSchemaError::from(SqlError::NotFound(id.to_owned()))) } pub fn update( exec: &dyn SqlExecutor, opts: &IPlotGcsLocationUpdate, -) -> Result<IPlotGcsLocationUpdateResolve, IError<SqlError>> { +) -> Result<IPlotGcsLocationUpdateResolve, ReplicaSchemaError<SqlError>> { let mut updates = utils::to_partial_object_map(&opts.fields).expect("serialize partial object map"); if updates.is_empty() { - return Err(IError::from(SqlError::InvalidArgument(String::from( - "no fields to update", - )))); + return Err(ReplicaSchemaError::from(SqlError::InvalidArgument( + String::from("no fields to update"), + ))); } updates.insert( String::from("updated_at"), @@ -108,7 +114,9 @@ pub fn update( Some(id) => id, None => { let found = find_one_by_on(exec, &opts.on)?; - let model = found.ok_or(IError::from(SqlError::NotFound(opts.on.lookup_key())))?; + let model = found.ok_or(ReplicaSchemaError::from(SqlError::NotFound( + opts.on.lookup_key(), + )))?; model.id } }; @@ -120,19 +128,21 @@ pub fn update( let params_json = utils::to_params_json(bind_values).expect("serialize bind params"); let _ = exec.exec(&sql, ¶ms_json)?; let updated = select_by_id(exec, &id_for_lookup)?; - Ok(IResult { result: updated }) + Ok(ReplicaSchemaResult { result: updated }) } pub fn delete( exec: &dyn SqlExecutor, opts: &IPlotGcsLocationDelete, -) -> Result<IPlotGcsLocationDeleteResolve, IError<SqlError>> { +) -> Result<IPlotGcsLocationDeleteResolve, ReplicaSchemaError<SqlError>> { let id_for_lookup = match opts { IPlotGcsLocationDelete::On(args) => match args.on.primary_key() { Some(id) => id, None => { let found = find_one_by_on(exec, &args.on)?; - let model = found.ok_or(IError::from(SqlError::NotFound(args.on.lookup_key())))?; + let model = found.ok_or(ReplicaSchemaError::from(SqlError::NotFound( + args.on.lookup_key(), + )))?; model.id } }, @@ -142,9 +152,11 @@ pub fn delete( let sql = format!("DELETE FROM {TABLE_NAME} WHERE id = ?;"); let outcome = exec.exec(&sql, ¶ms_json)?; if outcome.changes == 0 { - return Err(IError::from(SqlError::NotFound(id_for_lookup.clone()))); + return Err(ReplicaSchemaError::from(SqlError::NotFound( + id_for_lookup.clone(), + ))); } - Ok(IResult { + Ok(ReplicaSchemaResult { result: id_for_lookup, }) } diff --git a/crates/replica_db/src/models/plot_tag.rs b/crates/replica_db/src/models/plot_tag.rs @@ -3,9 +3,11 @@ use radroots_replica_db_schema::plot_tag::{ IPlotTagFieldsFilter, IPlotTagFindMany, IPlotTagFindManyResolve, IPlotTagFindOne, IPlotTagFindOneResolve, IPlotTagUpdate, IPlotTagUpdateResolve, PlotTag, PlotTagQueryBindValues, }; +use radroots_replica_db_schema::{ + ReplicaSchemaError, ReplicaSchemaResult, ReplicaSchemaResultList, +}; use radroots_sql_core::error::SqlError; use radroots_sql_core::{SqlExecutor, utils}; -use radroots_types::types::{IError, IResult, IResultList}; use serde_json::Value; const TABLE_NAME: &str = "plot_tag"; @@ -13,7 +15,7 @@ const TABLE_NAME: &str = "plot_tag"; pub fn create( exec: &dyn SqlExecutor, opts: &IPlotTagCreate, -) -> Result<IPlotTagCreateResolve, IError<SqlError>> { +) -> Result<IPlotTagCreateResolve, ReplicaSchemaError<SqlError>> { let field_map = utils::to_object_map(opts).expect("serialize object map"); let id = utils::uuidv4(); let now = utils::time_created_on(); @@ -26,32 +28,33 @@ pub fn create( let params_json = utils::to_params_json(bind_values).expect("serialize bind params"); let _ = exec.exec(&sql, ¶ms_json)?; let on = PlotTagQueryBindValues::Id { id: id.clone() }; - let result = find_one_by_on(exec, &on)?.ok_or(IError::from(SqlError::NotFound(id.clone())))?; - Ok(IResult { result }) + let result = find_one_by_on(exec, &on)? + .ok_or(ReplicaSchemaError::from(SqlError::NotFound(id.clone())))?; + Ok(ReplicaSchemaResult { result }) } pub fn find_one( exec: &dyn SqlExecutor, opts: &IPlotTagFindOne, -) -> Result<IPlotTagFindOneResolve, IError<SqlError>> { +) -> Result<IPlotTagFindOneResolve, ReplicaSchemaError<SqlError>> { let result = match opts { IPlotTagFindOne::On(args) => find_one_by_on(exec, &args.on)?, }; - Ok(IResult { result }) + Ok(ReplicaSchemaResult { result }) } pub fn find_many( exec: &dyn SqlExecutor, opts: &IPlotTagFindMany, -) -> Result<IPlotTagFindManyResolve, IError<SqlError>> { +) -> Result<IPlotTagFindManyResolve, ReplicaSchemaError<SqlError>> { let results = find_many_filter(exec, &opts.filter)?; - Ok(IResultList { results }) + Ok(ReplicaSchemaResultList { results }) } fn find_many_filter( exec: &dyn SqlExecutor, filter: &Option<IPlotTagFieldsFilter>, -) -> Result<Vec<PlotTag>, IError<SqlError>> { +) -> Result<Vec<PlotTag>, ReplicaSchemaError<SqlError>> { let (sql, bind_values) = utils::build_select_query_with_meta(TABLE_NAME, filter.as_ref()); let params_json = utils::to_params_json(bind_values).expect("serialize bind params"); let json = exec.query_raw(&sql, ¶ms_json)?; @@ -62,7 +65,7 @@ fn find_many_filter( fn find_one_by_on( exec: &dyn SqlExecutor, on: &PlotTagQueryBindValues, -) -> Result<Option<PlotTag>, IError<SqlError>> { +) -> Result<Option<PlotTag>, ReplicaSchemaError<SqlError>> { let (column, value) = on.to_filter_param(); let sql = format!("SELECT * FROM {TABLE_NAME} WHERE {column} = ? LIMIT 1;"); let params_json = utils::to_params_json(vec![value]).expect("serialize bind params"); @@ -71,26 +74,26 @@ fn find_one_by_on( Ok(rows.pop()) } -fn select_by_id(exec: &dyn SqlExecutor, id: &str) -> Result<PlotTag, IError<SqlError>> { +fn select_by_id(exec: &dyn SqlExecutor, id: &str) -> Result<PlotTag, ReplicaSchemaError<SqlError>> { let params_json = utils::to_params_json(vec![Value::from(id.to_owned())]).expect("serialize bind params"); let sql = format!("SELECT * FROM {TABLE_NAME} WHERE id = ?;"); let json = exec.query_raw(&sql, ¶ms_json)?; let mut rows: Vec<PlotTag> = utils::parse_json(&json)?; rows.pop() - .ok_or(IError::from(SqlError::NotFound(id.to_owned()))) + .ok_or(ReplicaSchemaError::from(SqlError::NotFound(id.to_owned()))) } pub fn update( exec: &dyn SqlExecutor, opts: &IPlotTagUpdate, -) -> Result<IPlotTagUpdateResolve, IError<SqlError>> { +) -> Result<IPlotTagUpdateResolve, ReplicaSchemaError<SqlError>> { let mut updates = utils::to_partial_object_map(&opts.fields).expect("serialize partial object map"); if updates.is_empty() { - return Err(IError::from(SqlError::InvalidArgument(String::from( - "no fields to update", - )))); + return Err(ReplicaSchemaError::from(SqlError::InvalidArgument( + String::from("no fields to update"), + ))); } updates.insert( String::from("updated_at"), @@ -106,7 +109,9 @@ pub fn update( Some(id) => id, None => { let found = find_one_by_on(exec, &opts.on)?; - let model = found.ok_or(IError::from(SqlError::NotFound(opts.on.lookup_key())))?; + let model = found.ok_or(ReplicaSchemaError::from(SqlError::NotFound( + opts.on.lookup_key(), + )))?; model.id } }; @@ -118,19 +123,21 @@ pub fn update( let params_json = utils::to_params_json(bind_values).expect("serialize bind params"); let _ = exec.exec(&sql, ¶ms_json)?; let updated = select_by_id(exec, &id_for_lookup)?; - Ok(IResult { result: updated }) + Ok(ReplicaSchemaResult { result: updated }) } pub fn delete( exec: &dyn SqlExecutor, opts: &IPlotTagDelete, -) -> Result<IPlotTagDeleteResolve, IError<SqlError>> { +) -> Result<IPlotTagDeleteResolve, ReplicaSchemaError<SqlError>> { let id_for_lookup = match opts { IPlotTagDelete::On(args) => match args.on.primary_key() { Some(id) => id, None => { let found = find_one_by_on(exec, &args.on)?; - let model = found.ok_or(IError::from(SqlError::NotFound(args.on.lookup_key())))?; + let model = found.ok_or(ReplicaSchemaError::from(SqlError::NotFound( + args.on.lookup_key(), + )))?; model.id } }, @@ -140,9 +147,11 @@ pub fn delete( let sql = format!("DELETE FROM {TABLE_NAME} WHERE id = ?;"); let outcome = exec.exec(&sql, ¶ms_json)?; if outcome.changes == 0 { - return Err(IError::from(SqlError::NotFound(id_for_lookup.clone()))); + return Err(ReplicaSchemaError::from(SqlError::NotFound( + id_for_lookup.clone(), + ))); } - Ok(IResult { + Ok(ReplicaSchemaResult { result: id_for_lookup, }) } diff --git a/crates/replica_db/src/models/trade_product.rs b/crates/replica_db/src/models/trade_product.rs @@ -4,9 +4,11 @@ use radroots_replica_db_schema::trade_product::{ ITradeProductFindManyResolve, ITradeProductFindOne, ITradeProductFindOneResolve, ITradeProductUpdate, ITradeProductUpdateResolve, TradeProduct, TradeProductQueryBindValues, }; +use radroots_replica_db_schema::{ + ReplicaSchemaError, ReplicaSchemaResult, ReplicaSchemaResultList, +}; use radroots_sql_core::error::SqlError; use radroots_sql_core::{SqlExecutor, utils}; -use radroots_types::types::{IError, IResult, IResultList}; use serde_json::Value; const TABLE_NAME: &str = "trade_product"; @@ -14,7 +16,7 @@ const TABLE_NAME: &str = "trade_product"; pub fn create( exec: &dyn SqlExecutor, opts: &ITradeProductCreate, -) -> Result<ITradeProductCreateResolve, IError<SqlError>> { +) -> Result<ITradeProductCreateResolve, ReplicaSchemaError<SqlError>> { let field_map = utils::to_object_map(opts).expect("serialize object map"); let id = utils::uuidv4(); let now = utils::time_created_on(); @@ -27,32 +29,33 @@ pub fn create( let params_json = utils::to_params_json(bind_values).expect("serialize bind params"); let _ = exec.exec(&sql, ¶ms_json)?; let on = TradeProductQueryBindValues::Id { id: id.clone() }; - let result = find_one_by_on(exec, &on)?.ok_or(IError::from(SqlError::NotFound(id.clone())))?; - Ok(IResult { result }) + let result = find_one_by_on(exec, &on)? + .ok_or(ReplicaSchemaError::from(SqlError::NotFound(id.clone())))?; + Ok(ReplicaSchemaResult { result }) } pub fn find_one( exec: &dyn SqlExecutor, opts: &ITradeProductFindOne, -) -> Result<ITradeProductFindOneResolve, IError<SqlError>> { +) -> Result<ITradeProductFindOneResolve, ReplicaSchemaError<SqlError>> { let result = match opts { ITradeProductFindOne::On(args) => find_one_by_on(exec, &args.on)?, }; - Ok(IResult { result }) + Ok(ReplicaSchemaResult { result }) } pub fn find_many( exec: &dyn SqlExecutor, opts: &ITradeProductFindMany, -) -> Result<ITradeProductFindManyResolve, IError<SqlError>> { +) -> Result<ITradeProductFindManyResolve, ReplicaSchemaError<SqlError>> { let results = find_many_filter(exec, &opts.filter)?; - Ok(IResultList { results }) + Ok(ReplicaSchemaResultList { results }) } fn find_many_filter( exec: &dyn SqlExecutor, filter: &Option<ITradeProductFieldsFilter>, -) -> Result<Vec<TradeProduct>, IError<SqlError>> { +) -> Result<Vec<TradeProduct>, ReplicaSchemaError<SqlError>> { let (sql, bind_values) = utils::build_select_query_with_meta(TABLE_NAME, filter.as_ref()); let params_json = utils::to_params_json(bind_values).expect("serialize bind params"); let json = exec.query_raw(&sql, ¶ms_json)?; @@ -63,7 +66,7 @@ fn find_many_filter( fn find_one_by_on( exec: &dyn SqlExecutor, on: &TradeProductQueryBindValues, -) -> Result<Option<TradeProduct>, IError<SqlError>> { +) -> Result<Option<TradeProduct>, ReplicaSchemaError<SqlError>> { let (column, value) = on.to_filter_param(); let sql = format!("SELECT * FROM {TABLE_NAME} WHERE {column} = ? LIMIT 1;"); let params_json = utils::to_params_json(vec![value]).expect("serialize bind params"); @@ -72,26 +75,29 @@ fn find_one_by_on( Ok(rows.pop()) } -fn select_by_id(exec: &dyn SqlExecutor, id: &str) -> Result<TradeProduct, IError<SqlError>> { +fn select_by_id( + exec: &dyn SqlExecutor, + id: &str, +) -> Result<TradeProduct, ReplicaSchemaError<SqlError>> { let params_json = utils::to_params_json(vec![Value::from(id.to_owned())]).expect("serialize bind params"); let sql = format!("SELECT * FROM {TABLE_NAME} WHERE id = ?;"); let json = exec.query_raw(&sql, ¶ms_json)?; let mut rows: Vec<TradeProduct> = utils::parse_json(&json)?; rows.pop() - .ok_or(IError::from(SqlError::NotFound(id.to_owned()))) + .ok_or(ReplicaSchemaError::from(SqlError::NotFound(id.to_owned()))) } pub fn update( exec: &dyn SqlExecutor, opts: &ITradeProductUpdate, -) -> Result<ITradeProductUpdateResolve, IError<SqlError>> { +) -> Result<ITradeProductUpdateResolve, ReplicaSchemaError<SqlError>> { let mut updates = utils::to_partial_object_map(&opts.fields).expect("serialize partial object map"); if updates.is_empty() { - return Err(IError::from(SqlError::InvalidArgument(String::from( - "no fields to update", - )))); + return Err(ReplicaSchemaError::from(SqlError::InvalidArgument( + String::from("no fields to update"), + ))); } updates.insert( String::from("updated_at"), @@ -114,13 +120,13 @@ pub fn update( let params_json = utils::to_params_json(bind_values).expect("serialize bind params"); let _ = exec.exec(&sql, ¶ms_json)?; let updated = select_by_id(exec, &id_for_lookup)?; - Ok(IResult { result: updated }) + Ok(ReplicaSchemaResult { result: updated }) } pub fn delete( exec: &dyn SqlExecutor, opts: &ITradeProductDelete, -) -> Result<ITradeProductDeleteResolve, IError<SqlError>> { +) -> Result<ITradeProductDeleteResolve, ReplicaSchemaError<SqlError>> { let id_for_lookup = match opts { ITradeProductDelete::On(args) => match &args.on { TradeProductQueryBindValues::Id { id } => id.clone(), @@ -131,9 +137,11 @@ pub fn delete( let sql = format!("DELETE FROM {TABLE_NAME} WHERE id = ?;"); let outcome = exec.exec(&sql, ¶ms_json)?; if outcome.changes == 0 { - return Err(IError::from(SqlError::NotFound(id_for_lookup.clone()))); + return Err(ReplicaSchemaError::from(SqlError::NotFound( + id_for_lookup.clone(), + ))); } - Ok(IResult { + Ok(ReplicaSchemaResult { result: id_for_lookup, }) } diff --git a/crates/replica_db/src/models/trade_product_location.rs b/crates/replica_db/src/models/trade_product_location.rs @@ -1,9 +1,9 @@ use radroots_replica_db_schema::trade_product_location::{ ITradeProductLocationRelation, ITradeProductLocationResolve, }; +use radroots_replica_db_schema::{ReplicaSchemaError, ReplicaSchemaResultPass}; use radroots_sql_core::error::SqlError; use radroots_sql_core::{SqlExecutor, utils}; -use radroots_types::types::{IError, IResultPass}; use serde_json::Value; const TABLE_NAME: &str = "trade_product_location"; @@ -11,7 +11,7 @@ const TABLE_NAME: &str = "trade_product_location"; pub fn set( exec: &dyn SqlExecutor, opts: &ITradeProductLocationRelation, -) -> Result<ITradeProductLocationResolve, IError<SqlError>> { +) -> Result<ITradeProductLocationResolve, ReplicaSchemaError<SqlError>> { let mut query_vals: Vec<Value> = Vec::with_capacity(2); let (trade_product_column, trade_product_value) = opts.trade_product.to_filter_param(); query_vals.push(trade_product_value); @@ -23,13 +23,13 @@ pub fn set( ); let params_json = utils::to_params_json(query_vals).expect("serialize bind params"); let _ = exec.exec(&query, ¶ms_json)?; - Ok(IResultPass { pass: true }) + Ok(ReplicaSchemaResultPass { pass: true }) } pub fn unset( exec: &dyn SqlExecutor, opts: &ITradeProductLocationRelation, -) -> Result<ITradeProductLocationResolve, IError<SqlError>> { +) -> Result<ITradeProductLocationResolve, ReplicaSchemaError<SqlError>> { let mut query_vals: Vec<Value> = Vec::with_capacity(2); let (trade_product_column, trade_product_value) = opts.trade_product.to_filter_param(); query_vals.push(trade_product_value); @@ -41,5 +41,5 @@ pub fn unset( ); let params_json = utils::to_params_json(query_vals).expect("serialize bind params"); let _ = exec.exec(&query, ¶ms_json)?; - Ok(IResultPass { pass: true }) + Ok(ReplicaSchemaResultPass { pass: true }) } diff --git a/crates/replica_db/src/models/trade_product_media.rs b/crates/replica_db/src/models/trade_product_media.rs @@ -1,9 +1,9 @@ use radroots_replica_db_schema::trade_product_media::{ ITradeProductMediaRelation, ITradeProductMediaResolve, }; +use radroots_replica_db_schema::{ReplicaSchemaError, ReplicaSchemaResultPass}; use radroots_sql_core::error::SqlError; use radroots_sql_core::{SqlExecutor, utils}; -use radroots_types::types::{IError, IResultPass}; use serde_json::Value; const TABLE_NAME: &str = "trade_product_media"; @@ -11,7 +11,7 @@ const TABLE_NAME: &str = "trade_product_media"; pub fn set( exec: &dyn SqlExecutor, opts: &ITradeProductMediaRelation, -) -> Result<ITradeProductMediaResolve, IError<SqlError>> { +) -> Result<ITradeProductMediaResolve, ReplicaSchemaError<SqlError>> { let mut query_vals: Vec<Value> = Vec::with_capacity(2); let (trade_product_column, trade_product_value) = opts.trade_product.to_filter_param(); query_vals.push(trade_product_value); @@ -23,13 +23,13 @@ pub fn set( ); let params_json = utils::to_params_json(query_vals).expect("serialize bind params"); let _ = exec.exec(&query, ¶ms_json)?; - Ok(IResultPass { pass: true }) + Ok(ReplicaSchemaResultPass { pass: true }) } pub fn unset( exec: &dyn SqlExecutor, opts: &ITradeProductMediaRelation, -) -> Result<ITradeProductMediaResolve, IError<SqlError>> { +) -> Result<ITradeProductMediaResolve, ReplicaSchemaError<SqlError>> { let mut query_vals: Vec<Value> = Vec::with_capacity(2); let (trade_product_column, trade_product_value) = opts.trade_product.to_filter_param(); query_vals.push(trade_product_value); @@ -41,5 +41,5 @@ pub fn unset( ); let params_json = utils::to_params_json(query_vals).expect("serialize bind params"); let _ = exec.exec(&query, ¶ms_json)?; - Ok(IResultPass { pass: true }) + Ok(ReplicaSchemaResultPass { pass: true }) } diff --git a/crates/replica_db/tests/error_paths.rs b/crates/replica_db/tests/error_paths.rs @@ -1,4 +1,5 @@ use radroots_replica_db::ReplicaSql; +use radroots_replica_db_schema::ReplicaSchemaError; use radroots_replica_db_schema::farm::{ IFarmCreate, IFarmDelete, IFarmFindMany, IFarmFindOne, IFarmUpdate, }; @@ -58,7 +59,6 @@ use radroots_replica_db_schema::trade_product::{ use radroots_replica_db_schema::trade_product_location::ITradeProductLocationRelation; use radroots_replica_db_schema::trade_product_media::ITradeProductMediaRelation; use radroots_sql_core::{SqlError, SqlExecutor, SqliteExecutor}; -use radroots_types::types::IError; use serde::de::DeserializeOwned; use serde_json::json; @@ -82,7 +82,7 @@ fn drop_table(db: &ReplicaSql<SqliteExecutor>, table_name: &str) { db.executor().exec(&sql, "[]").expect("drop table"); } -fn assert_invalid_query<T>(result: Result<T, IError<SqlError>>) { +fn assert_invalid_query<T>(result: Result<T, ReplicaSchemaError<SqlError>>) { let err = match result { Ok(_) => panic!("invalid query expected"), Err(err) => err, @@ -90,7 +90,7 @@ fn assert_invalid_query<T>(result: Result<T, IError<SqlError>>) { assert!(matches!(err.err, SqlError::InvalidQuery(_))); } -fn assert_not_found<T>(result: Result<T, IError<SqlError>>) { +fn assert_not_found<T>(result: Result<T, ReplicaSchemaError<SqlError>>) { let err = match result { Ok(_) => panic!("not found expected"), Err(err) => err, diff --git a/crates/replica_db/tests/full_mode.rs b/crates/replica_db/tests/full_mode.rs @@ -1,4 +1,5 @@ use radroots_replica_db::{ReplicaSql, export_manifest}; +use radroots_replica_db_schema::ReplicaSchemaError; use radroots_replica_db_schema::farm::{ IFarmCreate, IFarmDelete, IFarmFindMany, IFarmFindOne, IFarmUpdate, }; @@ -59,7 +60,6 @@ use radroots_replica_db_schema::trade_product::{ use radroots_replica_db_schema::trade_product_location::ITradeProductLocationRelation; use radroots_replica_db_schema::trade_product_media::ITradeProductMediaRelation; use radroots_sql_core::{SqlError, SqliteExecutor}; -use radroots_types::types::IError; use serde::de::DeserializeOwned; use serde_json::json; @@ -71,7 +71,7 @@ fn hex64(ch: char) -> String { std::iter::repeat_n(ch, 64).collect() } -fn assert_invalid_argument<T>(result: Result<T, IError<SqlError>>) { +fn assert_invalid_argument<T>(result: Result<T, ReplicaSchemaError<SqlError>>) { let err = match result { Ok(_) => panic!("invalid argument expected"), Err(err) => err, @@ -79,7 +79,7 @@ fn assert_invalid_argument<T>(result: Result<T, IError<SqlError>>) { assert!(matches!(err.err, SqlError::InvalidArgument(_))); } -fn assert_not_found<T>(result: Result<T, IError<SqlError>>) { +fn assert_not_found<T>(result: Result<T, ReplicaSchemaError<SqlError>>) { let err = match result { Ok(_) => panic!("not found expected"), Err(err) => err, diff --git a/crates/replica_db/tests/region_scripted_paths.rs b/crates/replica_db/tests/region_scripted_paths.rs @@ -2,6 +2,7 @@ use std::collections::VecDeque; use std::sync::Mutex; use radroots_replica_db::{ExecOutcome, ReplicaSql, SqlError, SqlExecutor}; +use radroots_replica_db_schema::ReplicaSchemaError; use radroots_replica_db_schema::farm::{ IFarmCreate, IFarmDelete, IFarmFindMany, IFarmFindOne, IFarmUpdate, }; @@ -59,7 +60,6 @@ use radroots_replica_db_schema::plot_tag::{ use radroots_replica_db_schema::trade_product::{ ITradeProductCreate, ITradeProductFindMany, ITradeProductFindOne, ITradeProductUpdate, }; -use radroots_types::types::IError; use serde::de::DeserializeOwned; use serde_json::json; @@ -190,7 +190,10 @@ fn db_with_scripts( ReplicaSql::new(ScriptedExecutor::new(exec_results, query_results)) } -fn assert_ierror_code<T>(result: Result<T, IError<SqlError>>, code: &str) { +fn assert_replica_schema_error_code<T>( + result: Result<T, ReplicaSchemaError<SqlError>>, + code: &str, +) { let err = match result { Ok(_) => panic!("expected ierror"), Err(err) => err, @@ -212,33 +215,45 @@ macro_rules! assert_secondary_model_paths { let create_opts: $create_ty = parse_json($create_json); let db = db_with_scripts(vec![ok_exec()], vec![err_query()]); - assert_ierror_code(db.$create_call(&create_opts), "ERR_INVALID_QUERY"); + assert_replica_schema_error_code(db.$create_call(&create_opts), "ERR_INVALID_QUERY"); let db = db_with_scripts(vec![ok_exec()], vec![ok_rows()]); - assert_ierror_code(db.$create_call(&create_opts), "ERR_NOT_FOUND"); + assert_replica_schema_error_code(db.$create_call(&create_opts), "ERR_NOT_FOUND"); let find_many_opts: $find_many_ty = parse_json($find_many_json); let db = db_with_scripts(vec![], vec![bad_json()]); - assert_ierror_code(db.$find_many_call(&find_many_opts), "ERR_SERIALIZATION"); + assert_replica_schema_error_code( + db.$find_many_call(&find_many_opts), + "ERR_SERIALIZATION", + ); let find_one_opts: $find_one_ty = parse_json($find_one_json); let db = db_with_scripts(vec![], vec![bad_json()]); - assert_ierror_code(db.$find_one_call(&find_one_opts), "ERR_SERIALIZATION"); + assert_replica_schema_error_code( + db.$find_one_call(&find_one_opts), + "ERR_SERIALIZATION", + ); let update_id_opts: $update_ty = parse_json($update_id_json); let db = db_with_scripts(vec![ok_exec()], vec![err_query()]); - assert_ierror_code(db.$update_call(&update_id_opts), "ERR_INVALID_QUERY"); + assert_replica_schema_error_code(db.$update_call(&update_id_opts), "ERR_INVALID_QUERY"); let db = db_with_scripts(vec![ok_exec()], vec![bad_json()]); - assert_ierror_code(db.$update_call(&update_id_opts), "ERR_SERIALIZATION"); + assert_replica_schema_error_code(db.$update_call(&update_id_opts), "ERR_SERIALIZATION"); let update_lookup_opts: $update_ty = parse_json($update_lookup_json); let db = db_with_scripts(vec![], vec![err_query()]); - assert_ierror_code(db.$update_call(&update_lookup_opts), "ERR_INVALID_QUERY"); + assert_replica_schema_error_code( + db.$update_call(&update_lookup_opts), + "ERR_INVALID_QUERY", + ); let delete_lookup_opts: $delete_ty = parse_json($delete_lookup_json); let db = db_with_scripts(vec![], vec![err_query()]); - assert_ierror_code(db.$delete_call(&delete_lookup_opts), "ERR_INVALID_QUERY"); + assert_replica_schema_error_code( + db.$delete_call(&delete_lookup_opts), + "ERR_INVALID_QUERY", + ); } }; } @@ -257,52 +272,73 @@ macro_rules! assert_rel_model_paths { let create_opts: $create_ty = parse_json($create_json); let db = db_with_scripts(vec![ok_exec()], vec![err_query()]); - assert_ierror_code(db.$create_call(&create_opts), "ERR_INVALID_QUERY"); + assert_replica_schema_error_code(db.$create_call(&create_opts), "ERR_INVALID_QUERY"); let db = db_with_scripts(vec![ok_exec()], vec![ok_rows()]); - assert_ierror_code(db.$create_call(&create_opts), "ERR_NOT_FOUND"); + assert_replica_schema_error_code(db.$create_call(&create_opts), "ERR_NOT_FOUND"); let find_many_filter_opts: $find_many_ty = parse_json($find_many_filter_json); let db = db_with_scripts(vec![], vec![bad_json()]); - assert_ierror_code( + assert_replica_schema_error_code( db.$find_many_call(&find_many_filter_opts), "ERR_SERIALIZATION", ); let find_many_rel_opts: $find_many_ty = $find_many_rel_expr; let db = db_with_scripts(vec![], vec![bad_json()]); - assert_ierror_code(db.$find_many_call(&find_many_rel_opts), "ERR_SERIALIZATION"); + assert_replica_schema_error_code( + db.$find_many_call(&find_many_rel_opts), + "ERR_SERIALIZATION", + ); let find_many_rel_opts: $find_many_ty = $find_many_rel_expr; let db = db_with_scripts(vec![], vec![err_query()]); - assert_ierror_code(db.$find_many_call(&find_many_rel_opts), "ERR_INVALID_QUERY"); + assert_replica_schema_error_code( + db.$find_many_call(&find_many_rel_opts), + "ERR_INVALID_QUERY", + ); let find_one_on_opts: $find_one_ty = parse_json($find_one_on_json); let db = db_with_scripts(vec![], vec![bad_json()]); - assert_ierror_code(db.$find_one_call(&find_one_on_opts), "ERR_SERIALIZATION"); + assert_replica_schema_error_code( + db.$find_one_call(&find_one_on_opts), + "ERR_SERIALIZATION", + ); let find_one_rel_opts: $find_one_ty = $find_one_rel_expr; let db = db_with_scripts(vec![], vec![bad_json()]); - assert_ierror_code(db.$find_one_call(&find_one_rel_opts), "ERR_SERIALIZATION"); + assert_replica_schema_error_code( + db.$find_one_call(&find_one_rel_opts), + "ERR_SERIALIZATION", + ); let update_id_opts: $update_ty = parse_json($update_id_json); let db = db_with_scripts(vec![ok_exec()], vec![err_query()]); - assert_ierror_code(db.$update_call(&update_id_opts), "ERR_INVALID_QUERY"); + assert_replica_schema_error_code(db.$update_call(&update_id_opts), "ERR_INVALID_QUERY"); let db = db_with_scripts(vec![ok_exec()], vec![bad_json()]); - assert_ierror_code(db.$update_call(&update_id_opts), "ERR_SERIALIZATION"); + assert_replica_schema_error_code(db.$update_call(&update_id_opts), "ERR_SERIALIZATION"); let update_lookup_opts: $update_ty = parse_json($update_lookup_json); let db = db_with_scripts(vec![], vec![err_query()]); - assert_ierror_code(db.$update_call(&update_lookup_opts), "ERR_INVALID_QUERY"); + assert_replica_schema_error_code( + db.$update_call(&update_lookup_opts), + "ERR_INVALID_QUERY", + ); let delete_lookup_opts: $delete_ty = parse_json($delete_lookup_json); let db = db_with_scripts(vec![], vec![err_query()]); - assert_ierror_code(db.$delete_call(&delete_lookup_opts), "ERR_INVALID_QUERY"); + assert_replica_schema_error_code( + db.$delete_call(&delete_lookup_opts), + "ERR_INVALID_QUERY", + ); let delete_rel_opts: $delete_ty = $delete_rel_expr; let db = db_with_scripts(vec![], vec![err_query()]); - assert_ierror_code(db.$delete_call(&delete_rel_opts), "ERR_INVALID_QUERY"); + assert_replica_schema_error_code( + db.$delete_call(&delete_rel_opts), + "ERR_INVALID_QUERY", + ); } }; } @@ -320,25 +356,31 @@ macro_rules! assert_trade_product_paths { let create_opts: $create_ty = parse_json($create_json); let db = db_with_scripts(vec![ok_exec()], vec![err_query()]); - assert_ierror_code(db.$create_call(&create_opts), "ERR_INVALID_QUERY"); + assert_replica_schema_error_code(db.$create_call(&create_opts), "ERR_INVALID_QUERY"); let db = db_with_scripts(vec![ok_exec()], vec![ok_rows()]); - assert_ierror_code(db.$create_call(&create_opts), "ERR_NOT_FOUND"); + assert_replica_schema_error_code(db.$create_call(&create_opts), "ERR_NOT_FOUND"); let find_many_opts: $find_many_ty = parse_json($find_many_json); let db = db_with_scripts(vec![], vec![bad_json()]); - assert_ierror_code(db.$find_many_call(&find_many_opts), "ERR_SERIALIZATION"); + assert_replica_schema_error_code( + db.$find_many_call(&find_many_opts), + "ERR_SERIALIZATION", + ); let find_one_opts: $find_one_ty = parse_json($find_one_json); let db = db_with_scripts(vec![], vec![bad_json()]); - assert_ierror_code(db.$find_one_call(&find_one_opts), "ERR_SERIALIZATION"); + assert_replica_schema_error_code( + db.$find_one_call(&find_one_opts), + "ERR_SERIALIZATION", + ); let update_opts: $update_ty = parse_json($update_json); let db = db_with_scripts(vec![ok_exec()], vec![err_query()]); - assert_ierror_code(db.$update_call(&update_opts), "ERR_INVALID_QUERY"); + assert_replica_schema_error_code(db.$update_call(&update_opts), "ERR_INVALID_QUERY"); let db = db_with_scripts(vec![ok_exec()], vec![bad_json()]); - assert_ierror_code(db.$update_call(&update_opts), "ERR_SERIALIZATION"); + assert_replica_schema_error_code(db.$update_call(&update_opts), "ERR_SERIALIZATION"); } }; } diff --git a/crates/replica_db_schema/Cargo.toml b/crates/replica_db_schema/Cargo.toml @@ -23,4 +23,3 @@ dto-bindgen = ["dep:dto_bindgen_core"] dto_bindgen_core = { workspace = true, optional = true } serde = { workspace = true, features = ["derive"] } serde_json = { workspace = true } -radroots_types = { workspace = true } diff --git a/crates/replica_db_schema/src/dto.rs b/crates/replica_db_schema/src/dto.rs @@ -1,7 +1,7 @@ use dto_bindgen_core::{ - BackendId, DefaultKind, EnumDef, EnumRepr, FieldDef, FieldPresence, IdentName, Registry, - RustTypeId, SerializePresence, SourceSpan, StructDef, TargetFieldNames, TargetOverride, - TypeDef, TypeRef, VariantDef, VariantShape, WireFieldNames, + BackendId, DefaultKind, EnumDef, EnumRepr, FieldDef, FieldPresence, GenericParam, IdentName, + Primitive, Registry, RustTypeId, SerializePresence, SourceSpan, StructDef, TargetFieldNames, + TargetOverride, TypeDef, TypeRef, VariantDef, VariantShape, WireFieldNames, }; #[derive(Clone, Copy, Debug, Eq, PartialEq)] @@ -74,6 +74,7 @@ impl FieldSpec { pub fn dto_registry() -> Registry { let mut registry = Registry::new(); + register_result_contracts(&mut registry); for spec in TYPE_SPECS { let name = spec.name(); let type_id = registry.register_type( @@ -86,7 +87,11 @@ pub fn dto_registry() -> Registry { } pub fn type_inventory() -> Vec<&'static str> { - TYPE_SPECS.iter().map(TypeSpec::name).collect() + RESULT_CONTRACT_NAMES + .iter() + .copied() + .chain(TYPE_SPECS.iter().map(TypeSpec::name)) + .collect() } impl TypeSpec { @@ -113,6 +118,52 @@ fn object_def(name: &str, fields: &[FieldSpec]) -> StructDef { def } +fn register_result_contracts(registry: &mut Registry) { + for (name, field_name, field_ty) in [ + ( + "ReplicaSchemaError", + "err", + TypeRef::GenericParam("T".to_owned()), + ), + ( + "ReplicaSchemaResult", + "result", + TypeRef::GenericParam("T".to_owned()), + ), + ( + "ReplicaSchemaResultList", + "results", + TypeRef::vec(TypeRef::GenericParam("T".to_owned())), + ), + ] { + let mut def = StructDef::new(name, name, source_span()) + .with_field(typed_field_def(field_name, field_ty)); + def.generics.push(GenericParam::new("T")); + let type_id = registry.register_type( + RustTypeId::new(env!("CARGO_PKG_NAME"), env!("CARGO_PKG_NAME"), name), + TypeDef::Struct(def), + ); + registry.mark_root(type_id); + } + + let type_id = registry.register_type( + RustTypeId::new( + env!("CARGO_PKG_NAME"), + env!("CARGO_PKG_NAME"), + "ReplicaSchemaResultPass", + ), + TypeDef::Struct( + StructDef::new( + "ReplicaSchemaResultPass", + "ReplicaSchemaResultPass", + source_span(), + ) + .with_field(typed_field_def("pass", TypeRef::Primitive(Primitive::Bool))), + ), + ); + registry.mark_root(type_id); +} + fn union_def(name: &str, variants: &[VariantSpec]) -> EnumDef { let mut def = EnumDef::new(name, name, EnumRepr::Untagged, source_span()); for (index, variant) in variants.iter().enumerate() { @@ -144,14 +195,18 @@ fn alias_def(name: &str, target: &str) -> EnumDef { } fn field_def(field: &FieldSpec) -> FieldDef { + typed_field_def(field.name, ts_ref(field.target)) + .with_presence(field_presence(field.optional, field.nullable)) +} + +fn typed_field_def(name: &str, ty: TypeRef) -> FieldDef { FieldDef::new( - IdentName::new(field.name), - WireFieldNames::same(field.name), - TargetFieldNames::new(field.name, field.name), - ts_ref(field.target), + IdentName::new(name), + WireFieldNames::same(name), + TargetFieldNames::new(name, name), + ty, source_span(), ) - .with_presence(field_presence(field.optional, field.nullable)) } fn field_presence(optional: bool, nullable: bool) -> FieldPresence { @@ -176,6 +231,13 @@ fn source_span() -> SourceSpan { SourceSpan::new(file!(), line!(), column!()) } +const RESULT_CONTRACT_NAMES: &[&str] = &[ + "ReplicaSchemaError", + "ReplicaSchemaResult", + "ReplicaSchemaResultList", + "ReplicaSchemaResultPass", +]; + const TYPE_SPECS: &[TypeSpec] = &[ TypeSpec::Object { name: "Farm", @@ -349,7 +411,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "IFarmCreateResolve", - target: "IResult<Farm>", + target: "ReplicaSchemaResult<Farm>", }, TypeSpec::Alias { name: "IFarmDelete", @@ -357,7 +419,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "IFarmDeleteResolve", - target: "IResult<string>", + target: "ReplicaSchemaResult<string>", }, TypeSpec::Object { name: "IFarmFields", @@ -420,7 +482,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "IFarmFindManyResolve", - target: "IResultList<Farm>", + target: "ReplicaSchemaResultList<Farm>", }, TypeSpec::Union { name: "IFarmFindOne", @@ -432,7 +494,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "IFarmFindOneResolve", - target: "IResult<Farm | null>", + target: "ReplicaSchemaResult<Farm | null>", }, TypeSpec::Alias { name: "IFarmGcsLocationCreate", @@ -440,7 +502,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "IFarmGcsLocationCreateResolve", - target: "IResult<FarmGcsLocation>", + target: "ReplicaSchemaResult<FarmGcsLocation>", }, TypeSpec::Alias { name: "IFarmGcsLocationDelete", @@ -448,7 +510,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "IFarmGcsLocationDeleteResolve", - target: "IResult<string>", + target: "ReplicaSchemaResult<string>", }, TypeSpec::Object { name: "IFarmGcsLocationFields", @@ -490,7 +552,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "IFarmGcsLocationFindManyResolve", - target: "IResultList<FarmGcsLocation>", + target: "ReplicaSchemaResultList<FarmGcsLocation>", }, TypeSpec::Union { name: "IFarmGcsLocationFindOne", @@ -502,7 +564,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "IFarmGcsLocationFindOneResolve", - target: "IResult<FarmGcsLocation | null>", + target: "ReplicaSchemaResult<FarmGcsLocation | null>", }, TypeSpec::Alias { name: "IFarmGcsLocationUpdate", @@ -517,7 +579,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "IFarmGcsLocationUpdateResolve", - target: "IResult<FarmGcsLocation>", + target: "ReplicaSchemaResult<FarmGcsLocation>", }, TypeSpec::Alias { name: "IFarmMemberClaimCreate", @@ -525,7 +587,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "IFarmMemberClaimCreateResolve", - target: "IResult<FarmMemberClaim>", + target: "ReplicaSchemaResult<FarmMemberClaim>", }, TypeSpec::Alias { name: "IFarmMemberClaimDelete", @@ -533,7 +595,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "IFarmMemberClaimDeleteResolve", - target: "IResult<string>", + target: "ReplicaSchemaResult<string>", }, TypeSpec::Object { name: "IFarmMemberClaimFields", @@ -572,7 +634,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "IFarmMemberClaimFindManyResolve", - target: "IResultList<FarmMemberClaim>", + target: "ReplicaSchemaResultList<FarmMemberClaim>", }, TypeSpec::Union { name: "IFarmMemberClaimFindOne", @@ -584,7 +646,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "IFarmMemberClaimFindOneResolve", - target: "IResult<FarmMemberClaim | null>", + target: "ReplicaSchemaResult<FarmMemberClaim | null>", }, TypeSpec::Alias { name: "IFarmMemberClaimUpdate", @@ -599,7 +661,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "IFarmMemberClaimUpdateResolve", - target: "IResult<FarmMemberClaim>", + target: "ReplicaSchemaResult<FarmMemberClaim>", }, TypeSpec::Alias { name: "IFarmMemberCreate", @@ -607,7 +669,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "IFarmMemberCreateResolve", - target: "IResult<FarmMember>", + target: "ReplicaSchemaResult<FarmMember>", }, TypeSpec::Alias { name: "IFarmMemberDelete", @@ -615,7 +677,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "IFarmMemberDeleteResolve", - target: "IResult<string>", + target: "ReplicaSchemaResult<string>", }, TypeSpec::Object { name: "IFarmMemberFields", @@ -654,7 +716,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "IFarmMemberFindManyResolve", - target: "IResultList<FarmMember>", + target: "ReplicaSchemaResultList<FarmMember>", }, TypeSpec::Union { name: "IFarmMemberFindOne", @@ -666,7 +728,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "IFarmMemberFindOneResolve", - target: "IResult<FarmMember | null>", + target: "ReplicaSchemaResult<FarmMember | null>", }, TypeSpec::Alias { name: "IFarmMemberUpdate", @@ -681,7 +743,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "IFarmMemberUpdateResolve", - target: "IResult<FarmMember>", + target: "ReplicaSchemaResult<FarmMember>", }, TypeSpec::Alias { name: "IFarmTagCreate", @@ -689,7 +751,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "IFarmTagCreateResolve", - target: "IResult<FarmTag>", + target: "ReplicaSchemaResult<FarmTag>", }, TypeSpec::Alias { name: "IFarmTagDelete", @@ -697,7 +759,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "IFarmTagDeleteResolve", - target: "IResult<string>", + target: "ReplicaSchemaResult<string>", }, TypeSpec::Object { name: "IFarmTagFields", @@ -733,7 +795,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "IFarmTagFindManyResolve", - target: "IResultList<FarmTag>", + target: "ReplicaSchemaResultList<FarmTag>", }, TypeSpec::Union { name: "IFarmTagFindOne", @@ -745,7 +807,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "IFarmTagFindOneResolve", - target: "IResult<FarmTag | null>", + target: "ReplicaSchemaResult<FarmTag | null>", }, TypeSpec::Alias { name: "IFarmTagUpdate", @@ -760,7 +822,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "IFarmTagUpdateResolve", - target: "IResult<FarmTag>", + target: "ReplicaSchemaResult<FarmTag>", }, TypeSpec::Alias { name: "IFarmUpdate", @@ -775,7 +837,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "IFarmUpdateResolve", - target: "IResult<Farm>", + target: "ReplicaSchemaResult<Farm>", }, TypeSpec::Alias { name: "IGcsLocationCreate", @@ -783,7 +845,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "IGcsLocationCreateResolve", - target: "IResult<GcsLocation>", + target: "ReplicaSchemaResult<GcsLocation>", }, TypeSpec::Alias { name: "IGcsLocationDelete", @@ -791,7 +853,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "IGcsLocationDeleteResolve", - target: "IResult<string>", + target: "ReplicaSchemaResult<string>", }, TypeSpec::Object { name: "IGcsLocationFields", @@ -880,7 +942,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "IGcsLocationFindManyResolve", - target: "IResultList<GcsLocation>", + target: "ReplicaSchemaResultList<GcsLocation>", }, TypeSpec::Union { name: "IGcsLocationFindOne", @@ -899,7 +961,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "IGcsLocationFindOneResolve", - target: "IResult<GcsLocation | null>", + target: "ReplicaSchemaResult<GcsLocation | null>", }, TypeSpec::Alias { name: "IGcsLocationUpdate", @@ -914,7 +976,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "IGcsLocationUpdateResolve", - target: "IResult<GcsLocation>", + target: "ReplicaSchemaResult<GcsLocation>", }, TypeSpec::Alias { name: "ILogErrorCreate", @@ -922,7 +984,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "ILogErrorCreateResolve", - target: "IResult<LogError>", + target: "ReplicaSchemaResult<LogError>", }, TypeSpec::Alias { name: "ILogErrorDelete", @@ -930,7 +992,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "ILogErrorDeleteResolve", - target: "IResult<string>", + target: "ReplicaSchemaResult<string>", }, TypeSpec::Object { name: "ILogErrorFields", @@ -984,7 +1046,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "ILogErrorFindManyResolve", - target: "IResultList<LogError>", + target: "ReplicaSchemaResultList<LogError>", }, TypeSpec::Union { name: "ILogErrorFindOne", @@ -996,7 +1058,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "ILogErrorFindOneResolve", - target: "IResult<LogError | null>", + target: "ReplicaSchemaResult<LogError | null>", }, TypeSpec::Alias { name: "ILogErrorUpdate", @@ -1011,7 +1073,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "ILogErrorUpdateResolve", - target: "IResult<LogError>", + target: "ReplicaSchemaResult<LogError>", }, TypeSpec::Alias { name: "IMediaImageCreate", @@ -1019,7 +1081,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "IMediaImageCreateResolve", - target: "IResult<MediaImage>", + target: "ReplicaSchemaResult<MediaImage>", }, TypeSpec::Alias { name: "IMediaImageDelete", @@ -1027,7 +1089,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "IMediaImageDeleteResolve", - target: "IResult<string>", + target: "ReplicaSchemaResult<string>", }, TypeSpec::Object { name: "IMediaImageFields", @@ -1074,7 +1136,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "IMediaImageFindManyResolve", - target: "IResultList<MediaImage>", + target: "ReplicaSchemaResultList<MediaImage>", }, TypeSpec::Union { name: "IMediaImageFindOne", @@ -1093,7 +1155,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "IMediaImageFindOneResolve", - target: "IResult<MediaImage | null>", + target: "ReplicaSchemaResult<MediaImage | null>", }, TypeSpec::Alias { name: "IMediaImageUpdate", @@ -1108,7 +1170,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "IMediaImageUpdateResolve", - target: "IResult<MediaImage>", + target: "ReplicaSchemaResult<MediaImage>", }, TypeSpec::Alias { name: "INostrEventHeadCreate", @@ -1116,7 +1178,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "INostrEventHeadCreateResolve", - target: "IResult<NostrEventHead>", + target: "ReplicaSchemaResult<NostrEventHead>", }, TypeSpec::Alias { name: "INostrEventHeadDelete", @@ -1124,7 +1186,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "INostrEventHeadDeleteResolve", - target: "IResult<string>", + target: "ReplicaSchemaResult<string>", }, TypeSpec::Object { name: "INostrEventHeadFields", @@ -1175,7 +1237,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "INostrEventHeadFindManyResolve", - target: "IResultList<NostrEventHead>", + target: "ReplicaSchemaResultList<NostrEventHead>", }, TypeSpec::Union { name: "INostrEventHeadFindOne", @@ -1187,7 +1249,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "INostrEventHeadFindOneResolve", - target: "IResult<NostrEventHead | null>", + target: "ReplicaSchemaResult<NostrEventHead | null>", }, TypeSpec::Alias { name: "INostrEventHeadUpdate", @@ -1202,7 +1264,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "INostrEventHeadUpdateResolve", - target: "IResult<NostrEventHead>", + target: "ReplicaSchemaResult<NostrEventHead>", }, TypeSpec::Alias { name: "INostrProfileCreate", @@ -1210,7 +1272,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "INostrProfileCreateResolve", - target: "IResult<NostrProfile>", + target: "ReplicaSchemaResult<NostrProfile>", }, TypeSpec::Alias { name: "INostrProfileDelete", @@ -1218,7 +1280,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "INostrProfileDeleteResolve", - target: "IResult<string>", + target: "ReplicaSchemaResult<string>", }, TypeSpec::Object { name: "INostrProfileFields", @@ -1280,7 +1342,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "INostrProfileFindManyResolve", - target: "IResultList<NostrProfile>", + target: "ReplicaSchemaResultList<NostrProfile>", }, TypeSpec::Union { name: "INostrProfileFindOne", @@ -1299,7 +1361,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "INostrProfileFindOneResolve", - target: "IResult<NostrProfile | null>", + target: "ReplicaSchemaResult<NostrProfile | null>", }, TypeSpec::Object { name: "INostrProfileRelayRelation", @@ -1310,7 +1372,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "INostrProfileRelayResolve", - target: "IResultPass", + target: "ReplicaSchemaResultPass", }, TypeSpec::Alias { name: "INostrProfileUpdate", @@ -1325,7 +1387,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "INostrProfileUpdateResolve", - target: "IResult<NostrProfile>", + target: "ReplicaSchemaResult<NostrProfile>", }, TypeSpec::Alias { name: "INostrRelayCreate", @@ -1333,7 +1395,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "INostrRelayCreateResolve", - target: "IResult<NostrRelay>", + target: "ReplicaSchemaResult<NostrRelay>", }, TypeSpec::Alias { name: "INostrRelayDelete", @@ -1341,7 +1403,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "INostrRelayDeleteResolve", - target: "IResult<string>", + target: "ReplicaSchemaResult<string>", }, TypeSpec::Object { name: "INostrRelayFields", @@ -1400,7 +1462,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "INostrRelayFindManyResolve", - target: "IResultList<NostrRelay>", + target: "ReplicaSchemaResultList<NostrRelay>", }, TypeSpec::Union { name: "INostrRelayFindOne", @@ -1419,7 +1481,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "INostrRelayFindOneResolve", - target: "IResult<NostrRelay | null>", + target: "ReplicaSchemaResult<NostrRelay | null>", }, TypeSpec::Alias { name: "INostrRelayUpdate", @@ -1434,7 +1496,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "INostrRelayUpdateResolve", - target: "IResult<NostrRelay>", + target: "ReplicaSchemaResult<NostrRelay>", }, TypeSpec::Alias { name: "IPlotCreate", @@ -1442,7 +1504,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "IPlotCreateResolve", - target: "IResult<Plot>", + target: "ReplicaSchemaResult<Plot>", }, TypeSpec::Alias { name: "IPlotDelete", @@ -1450,7 +1512,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "IPlotDeleteResolve", - target: "IResult<string>", + target: "ReplicaSchemaResult<string>", }, TypeSpec::Object { name: "IPlotFields", @@ -1504,7 +1566,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "IPlotFindManyResolve", - target: "IResultList<Plot>", + target: "ReplicaSchemaResultList<Plot>", }, TypeSpec::Union { name: "IPlotFindOne", @@ -1516,7 +1578,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "IPlotFindOneResolve", - target: "IResult<Plot | null>", + target: "ReplicaSchemaResult<Plot | null>", }, TypeSpec::Alias { name: "IPlotGcsLocationCreate", @@ -1524,7 +1586,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "IPlotGcsLocationCreateResolve", - target: "IResult<PlotGcsLocation>", + target: "ReplicaSchemaResult<PlotGcsLocation>", }, TypeSpec::Alias { name: "IPlotGcsLocationDelete", @@ -1532,7 +1594,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "IPlotGcsLocationDeleteResolve", - target: "IResult<string>", + target: "ReplicaSchemaResult<string>", }, TypeSpec::Object { name: "IPlotGcsLocationFields", @@ -1574,7 +1636,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "IPlotGcsLocationFindManyResolve", - target: "IResultList<PlotGcsLocation>", + target: "ReplicaSchemaResultList<PlotGcsLocation>", }, TypeSpec::Union { name: "IPlotGcsLocationFindOne", @@ -1586,7 +1648,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "IPlotGcsLocationFindOneResolve", - target: "IResult<PlotGcsLocation | null>", + target: "ReplicaSchemaResult<PlotGcsLocation | null>", }, TypeSpec::Alias { name: "IPlotGcsLocationUpdate", @@ -1601,7 +1663,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "IPlotGcsLocationUpdateResolve", - target: "IResult<PlotGcsLocation>", + target: "ReplicaSchemaResult<PlotGcsLocation>", }, TypeSpec::Alias { name: "IPlotTagCreate", @@ -1609,7 +1671,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "IPlotTagCreateResolve", - target: "IResult<PlotTag>", + target: "ReplicaSchemaResult<PlotTag>", }, TypeSpec::Alias { name: "IPlotTagDelete", @@ -1617,7 +1679,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "IPlotTagDeleteResolve", - target: "IResult<string>", + target: "ReplicaSchemaResult<string>", }, TypeSpec::Object { name: "IPlotTagFields", @@ -1653,7 +1715,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "IPlotTagFindManyResolve", - target: "IResultList<PlotTag>", + target: "ReplicaSchemaResultList<PlotTag>", }, TypeSpec::Union { name: "IPlotTagFindOne", @@ -1665,7 +1727,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "IPlotTagFindOneResolve", - target: "IResult<PlotTag | null>", + target: "ReplicaSchemaResult<PlotTag | null>", }, TypeSpec::Alias { name: "IPlotTagUpdate", @@ -1680,7 +1742,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "IPlotTagUpdateResolve", - target: "IResult<PlotTag>", + target: "ReplicaSchemaResult<PlotTag>", }, TypeSpec::Alias { name: "IPlotUpdate", @@ -1695,7 +1757,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "IPlotUpdateResolve", - target: "IResult<Plot>", + target: "ReplicaSchemaResult<Plot>", }, TypeSpec::Alias { name: "ITradeProductCreate", @@ -1703,7 +1765,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "ITradeProductCreateResolve", - target: "IResult<TradeProduct>", + target: "ReplicaSchemaResult<TradeProduct>", }, TypeSpec::Alias { name: "ITradeProductDelete", @@ -1711,7 +1773,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "ITradeProductDeleteResolve", - target: "IResult<string>", + target: "ReplicaSchemaResult<string>", }, TypeSpec::Object { name: "ITradeProductFields", @@ -1810,7 +1872,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "ITradeProductFindManyResolve", - target: "IResultList<TradeProduct>", + target: "ReplicaSchemaResultList<TradeProduct>", }, TypeSpec::Union { name: "ITradeProductFindOne", @@ -1822,7 +1884,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "ITradeProductFindOneResolve", - target: "IResult<TradeProduct | null>", + target: "ReplicaSchemaResult<TradeProduct | null>", }, TypeSpec::Object { name: "ITradeProductLocationRelation", @@ -1833,7 +1895,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "ITradeProductLocationResolve", - target: "IResultPass", + target: "ReplicaSchemaResultPass", }, TypeSpec::Object { name: "ITradeProductMediaRelation", @@ -1844,7 +1906,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "ITradeProductMediaResolve", - target: "IResultPass", + target: "ReplicaSchemaResultPass", }, TypeSpec::Alias { name: "ITradeProductUpdate", @@ -1859,7 +1921,7 @@ const TYPE_SPECS: &[TypeSpec] = &[ }, TypeSpec::Alias { name: "ITradeProductUpdateResolve", - target: "IResult<TradeProduct>", + target: "ReplicaSchemaResult<TradeProduct>", }, TypeSpec::Object { name: "LogError", @@ -2138,7 +2200,7 @@ mod tests { spec, TypeSpec::Alias { name: "IFarmFindOneResolve", - target: "IResult<Farm | null>" + target: "ReplicaSchemaResult<Farm | null>" } ))); } diff --git a/crates/replica_db_schema/src/models/farm.rs b/crates/replica_db_schema/src/models/farm.rs @@ -1,4 +1,4 @@ -use radroots_types::types::{IResult, IResultList}; +use crate::models::{ReplicaSchemaResult, ReplicaSchemaResultList}; use serde::{Deserialize, Serialize}; use serde_json::Value; @@ -103,7 +103,7 @@ impl FarmQueryBindValues { pub struct IFarmCreateTs; pub type IFarmCreate = IFarmFields; pub struct IFarmCreateResolveTs; -pub type IFarmCreateResolve = IResult<Farm>; +pub type IFarmCreateResolve = ReplicaSchemaResult<Farm>; #[derive(Deserialize, Serialize)] pub struct IFarmFindOneArgs { pub on: FarmQueryBindValues, @@ -116,18 +116,18 @@ pub enum IFarmFindOne { } pub struct IFarmFindOneResolveTs; -pub type IFarmFindOneResolve = IResult<Option<Farm>>; +pub type IFarmFindOneResolve = ReplicaSchemaResult<Option<Farm>>; #[derive(Deserialize, Serialize)] pub struct IFarmFindManyArgs { pub filter: Option<IFarmFieldsFilter>, } pub type IFarmFindMany = IFarmFindManyArgs; pub struct IFarmFindManyResolveTs; -pub type IFarmFindManyResolve = IResultList<Farm>; +pub type IFarmFindManyResolve = ReplicaSchemaResultList<Farm>; pub struct IFarmDeleteTs; pub type IFarmDelete = IFarmFindOne; pub struct IFarmDeleteResolveTs; -pub type IFarmDeleteResolve = IResult<String>; +pub type IFarmDeleteResolve = ReplicaSchemaResult<String>; #[derive(Deserialize, Serialize)] pub struct IFarmUpdateArgs { pub on: FarmQueryBindValues, @@ -135,4 +135,4 @@ pub struct IFarmUpdateArgs { } pub type IFarmUpdate = IFarmUpdateArgs; pub struct IFarmUpdateResolveTs; -pub type IFarmUpdateResolve = IResult<Farm>; +pub type IFarmUpdateResolve = ReplicaSchemaResult<Farm>; diff --git a/crates/replica_db_schema/src/models/farm_gcs_location.rs b/crates/replica_db_schema/src/models/farm_gcs_location.rs @@ -1,4 +1,4 @@ -use radroots_types::types::{IResult, IResultList}; +use crate::models::{ReplicaSchemaResult, ReplicaSchemaResultList}; use serde::{Deserialize, Serialize}; use serde_json::Value; @@ -73,7 +73,7 @@ impl FarmGcsLocationQueryBindValues { pub struct IFarmGcsLocationCreateTs; pub type IFarmGcsLocationCreate = IFarmGcsLocationFields; pub struct IFarmGcsLocationCreateResolveTs; -pub type IFarmGcsLocationCreateResolve = IResult<FarmGcsLocation>; +pub type IFarmGcsLocationCreateResolve = ReplicaSchemaResult<FarmGcsLocation>; #[derive(Deserialize, Serialize)] pub struct IFarmGcsLocationFindOneArgs { pub on: FarmGcsLocationQueryBindValues, @@ -86,18 +86,18 @@ pub enum IFarmGcsLocationFindOne { } pub struct IFarmGcsLocationFindOneResolveTs; -pub type IFarmGcsLocationFindOneResolve = IResult<Option<FarmGcsLocation>>; +pub type IFarmGcsLocationFindOneResolve = ReplicaSchemaResult<Option<FarmGcsLocation>>; #[derive(Deserialize, Serialize)] pub struct IFarmGcsLocationFindManyArgs { pub filter: Option<IFarmGcsLocationFieldsFilter>, } pub type IFarmGcsLocationFindMany = IFarmGcsLocationFindManyArgs; pub struct IFarmGcsLocationFindManyResolveTs; -pub type IFarmGcsLocationFindManyResolve = IResultList<FarmGcsLocation>; +pub type IFarmGcsLocationFindManyResolve = ReplicaSchemaResultList<FarmGcsLocation>; pub struct IFarmGcsLocationDeleteTs; pub type IFarmGcsLocationDelete = IFarmGcsLocationFindOne; pub struct IFarmGcsLocationDeleteResolveTs; -pub type IFarmGcsLocationDeleteResolve = IResult<String>; +pub type IFarmGcsLocationDeleteResolve = ReplicaSchemaResult<String>; #[derive(Deserialize, Serialize)] pub struct IFarmGcsLocationUpdateArgs { pub on: FarmGcsLocationQueryBindValues, @@ -105,4 +105,4 @@ pub struct IFarmGcsLocationUpdateArgs { } pub type IFarmGcsLocationUpdate = IFarmGcsLocationUpdateArgs; pub struct IFarmGcsLocationUpdateResolveTs; -pub type IFarmGcsLocationUpdateResolve = IResult<FarmGcsLocation>; +pub type IFarmGcsLocationUpdateResolve = ReplicaSchemaResult<FarmGcsLocation>; diff --git a/crates/replica_db_schema/src/models/farm_member.rs b/crates/replica_db_schema/src/models/farm_member.rs @@ -1,4 +1,4 @@ -use radroots_types::types::{IResult, IResultList}; +use crate::models::{ReplicaSchemaResult, ReplicaSchemaResultList}; use serde::{Deserialize, Serialize}; use serde_json::Value; @@ -73,7 +73,7 @@ impl FarmMemberQueryBindValues { pub struct IFarmMemberCreateTs; pub type IFarmMemberCreate = IFarmMemberFields; pub struct IFarmMemberCreateResolveTs; -pub type IFarmMemberCreateResolve = IResult<FarmMember>; +pub type IFarmMemberCreateResolve = ReplicaSchemaResult<FarmMember>; #[derive(Deserialize, Serialize)] pub struct IFarmMemberFindOneArgs { pub on: FarmMemberQueryBindValues, @@ -86,18 +86,18 @@ pub enum IFarmMemberFindOne { } pub struct IFarmMemberFindOneResolveTs; -pub type IFarmMemberFindOneResolve = IResult<Option<FarmMember>>; +pub type IFarmMemberFindOneResolve = ReplicaSchemaResult<Option<FarmMember>>; #[derive(Deserialize, Serialize)] pub struct IFarmMemberFindManyArgs { pub filter: Option<IFarmMemberFieldsFilter>, } pub type IFarmMemberFindMany = IFarmMemberFindManyArgs; pub struct IFarmMemberFindManyResolveTs; -pub type IFarmMemberFindManyResolve = IResultList<FarmMember>; +pub type IFarmMemberFindManyResolve = ReplicaSchemaResultList<FarmMember>; pub struct IFarmMemberDeleteTs; pub type IFarmMemberDelete = IFarmMemberFindOne; pub struct IFarmMemberDeleteResolveTs; -pub type IFarmMemberDeleteResolve = IResult<String>; +pub type IFarmMemberDeleteResolve = ReplicaSchemaResult<String>; #[derive(Deserialize, Serialize)] pub struct IFarmMemberUpdateArgs { pub on: FarmMemberQueryBindValues, @@ -105,4 +105,4 @@ pub struct IFarmMemberUpdateArgs { } pub type IFarmMemberUpdate = IFarmMemberUpdateArgs; pub struct IFarmMemberUpdateResolveTs; -pub type IFarmMemberUpdateResolve = IResult<FarmMember>; +pub type IFarmMemberUpdateResolve = ReplicaSchemaResult<FarmMember>; diff --git a/crates/replica_db_schema/src/models/farm_member_claim.rs b/crates/replica_db_schema/src/models/farm_member_claim.rs @@ -1,4 +1,4 @@ -use radroots_types::types::{IResult, IResultList}; +use crate::models::{ReplicaSchemaResult, ReplicaSchemaResultList}; use serde::{Deserialize, Serialize}; use serde_json::Value; @@ -69,7 +69,7 @@ impl FarmMemberClaimQueryBindValues { pub struct IFarmMemberClaimCreateTs; pub type IFarmMemberClaimCreate = IFarmMemberClaimFields; pub struct IFarmMemberClaimCreateResolveTs; -pub type IFarmMemberClaimCreateResolve = IResult<FarmMemberClaim>; +pub type IFarmMemberClaimCreateResolve = ReplicaSchemaResult<FarmMemberClaim>; #[derive(Deserialize, Serialize)] pub struct IFarmMemberClaimFindOneArgs { pub on: FarmMemberClaimQueryBindValues, @@ -82,18 +82,18 @@ pub enum IFarmMemberClaimFindOne { } pub struct IFarmMemberClaimFindOneResolveTs; -pub type IFarmMemberClaimFindOneResolve = IResult<Option<FarmMemberClaim>>; +pub type IFarmMemberClaimFindOneResolve = ReplicaSchemaResult<Option<FarmMemberClaim>>; #[derive(Deserialize, Serialize)] pub struct IFarmMemberClaimFindManyArgs { pub filter: Option<IFarmMemberClaimFieldsFilter>, } pub type IFarmMemberClaimFindMany = IFarmMemberClaimFindManyArgs; pub struct IFarmMemberClaimFindManyResolveTs; -pub type IFarmMemberClaimFindManyResolve = IResultList<FarmMemberClaim>; +pub type IFarmMemberClaimFindManyResolve = ReplicaSchemaResultList<FarmMemberClaim>; pub struct IFarmMemberClaimDeleteTs; pub type IFarmMemberClaimDelete = IFarmMemberClaimFindOne; pub struct IFarmMemberClaimDeleteResolveTs; -pub type IFarmMemberClaimDeleteResolve = IResult<String>; +pub type IFarmMemberClaimDeleteResolve = ReplicaSchemaResult<String>; #[derive(Deserialize, Serialize)] pub struct IFarmMemberClaimUpdateArgs { pub on: FarmMemberClaimQueryBindValues, @@ -101,4 +101,4 @@ pub struct IFarmMemberClaimUpdateArgs { } pub type IFarmMemberClaimUpdate = IFarmMemberClaimUpdateArgs; pub struct IFarmMemberClaimUpdateResolveTs; -pub type IFarmMemberClaimUpdateResolve = IResult<FarmMemberClaim>; +pub type IFarmMemberClaimUpdateResolve = ReplicaSchemaResult<FarmMemberClaim>; diff --git a/crates/replica_db_schema/src/models/farm_tag.rs b/crates/replica_db_schema/src/models/farm_tag.rs @@ -1,4 +1,4 @@ -use radroots_types::types::{IResult, IResultList}; +use crate::models::{ReplicaSchemaResult, ReplicaSchemaResultList}; use serde::{Deserialize, Serialize}; use serde_json::Value; @@ -67,7 +67,7 @@ impl FarmTagQueryBindValues { pub struct IFarmTagCreateTs; pub type IFarmTagCreate = IFarmTagFields; pub struct IFarmTagCreateResolveTs; -pub type IFarmTagCreateResolve = IResult<FarmTag>; +pub type IFarmTagCreateResolve = ReplicaSchemaResult<FarmTag>; #[derive(Deserialize, Serialize)] pub struct IFarmTagFindOneArgs { pub on: FarmTagQueryBindValues, @@ -80,18 +80,18 @@ pub enum IFarmTagFindOne { } pub struct IFarmTagFindOneResolveTs; -pub type IFarmTagFindOneResolve = IResult<Option<FarmTag>>; +pub type IFarmTagFindOneResolve = ReplicaSchemaResult<Option<FarmTag>>; #[derive(Deserialize, Serialize)] pub struct IFarmTagFindManyArgs { pub filter: Option<IFarmTagFieldsFilter>, } pub type IFarmTagFindMany = IFarmTagFindManyArgs; pub struct IFarmTagFindManyResolveTs; -pub type IFarmTagFindManyResolve = IResultList<FarmTag>; +pub type IFarmTagFindManyResolve = ReplicaSchemaResultList<FarmTag>; pub struct IFarmTagDeleteTs; pub type IFarmTagDelete = IFarmTagFindOne; pub struct IFarmTagDeleteResolveTs; -pub type IFarmTagDeleteResolve = IResult<String>; +pub type IFarmTagDeleteResolve = ReplicaSchemaResult<String>; #[derive(Deserialize, Serialize)] pub struct IFarmTagUpdateArgs { pub on: FarmTagQueryBindValues, @@ -99,4 +99,4 @@ pub struct IFarmTagUpdateArgs { } pub type IFarmTagUpdate = IFarmTagUpdateArgs; pub struct IFarmTagUpdateResolveTs; -pub type IFarmTagUpdateResolve = IResult<FarmTag>; +pub type IFarmTagUpdateResolve = ReplicaSchemaResult<FarmTag>; diff --git a/crates/replica_db_schema/src/models/gcs_location.rs b/crates/replica_db_schema/src/models/gcs_location.rs @@ -1,4 +1,4 @@ -use radroots_types::types::{IResult, IResultList}; +use crate::models::{ReplicaSchemaResult, ReplicaSchemaResultList}; use serde::{Deserialize, Serialize}; use serde_json::Value; @@ -170,7 +170,7 @@ pub enum GcsLocationFindManyRel { pub struct IGcsLocationCreateTs; pub type IGcsLocationCreate = IGcsLocationFields; pub struct IGcsLocationCreateResolveTs; -pub type IGcsLocationCreateResolve = IResult<GcsLocation>; +pub type IGcsLocationCreateResolve = ReplicaSchemaResult<GcsLocation>; #[derive(Deserialize, Serialize)] pub struct IGcsLocationFindOneArgs { pub on: GcsLocationQueryBindValues, @@ -189,7 +189,7 @@ pub enum IGcsLocationFindOne { } pub struct IGcsLocationFindOneResolveTs; -pub type IGcsLocationFindOneResolve = IResult<Option<GcsLocation>>; +pub type IGcsLocationFindOneResolve = ReplicaSchemaResult<Option<GcsLocation>>; #[derive(Deserialize, Serialize)] #[serde(untagged)] pub enum IGcsLocationFindMany { @@ -201,11 +201,11 @@ pub enum IGcsLocationFindMany { }, } pub struct IGcsLocationFindManyResolveTs; -pub type IGcsLocationFindManyResolve = IResultList<GcsLocation>; +pub type IGcsLocationFindManyResolve = ReplicaSchemaResultList<GcsLocation>; pub struct IGcsLocationDeleteTs; pub type IGcsLocationDelete = IGcsLocationFindOne; pub struct IGcsLocationDeleteResolveTs; -pub type IGcsLocationDeleteResolve = IResult<String>; +pub type IGcsLocationDeleteResolve = ReplicaSchemaResult<String>; #[derive(Deserialize, Serialize)] pub struct IGcsLocationUpdateArgs { pub on: GcsLocationQueryBindValues, @@ -213,4 +213,4 @@ pub struct IGcsLocationUpdateArgs { } pub type IGcsLocationUpdate = IGcsLocationUpdateArgs; pub struct IGcsLocationUpdateResolveTs; -pub type IGcsLocationUpdateResolve = IResult<GcsLocation>; +pub type IGcsLocationUpdateResolve = ReplicaSchemaResult<GcsLocation>; diff --git a/crates/replica_db_schema/src/models/log_error.rs b/crates/replica_db_schema/src/models/log_error.rs @@ -1,4 +1,4 @@ -use radroots_types::types::{IResult, IResultList}; +use crate::models::{ReplicaSchemaResult, ReplicaSchemaResultList}; use serde::{Deserialize, Serialize}; use serde_json::Value; #[derive(Serialize, Deserialize)] @@ -84,7 +84,7 @@ impl LogErrorQueryBindValues { pub struct ILogErrorCreateTs; pub type ILogErrorCreate = ILogErrorFields; pub struct ILogErrorCreateResolveTs; -pub type ILogErrorCreateResolve = IResult<LogError>; +pub type ILogErrorCreateResolve = ReplicaSchemaResult<LogError>; #[derive(Deserialize, Serialize)] pub struct ILogErrorFindOneArgs { pub on: LogErrorQueryBindValues, @@ -97,18 +97,18 @@ pub enum ILogErrorFindOne { } pub struct ILogErrorFindOneResolveTs; -pub type ILogErrorFindOneResolve = IResult<Option<LogError>>; +pub type ILogErrorFindOneResolve = ReplicaSchemaResult<Option<LogError>>; #[derive(Deserialize, Serialize)] pub struct ILogErrorFindManyArgs { pub filter: Option<ILogErrorFieldsFilter>, } pub type ILogErrorFindMany = ILogErrorFindManyArgs; pub struct ILogErrorFindManyResolveTs; -pub type ILogErrorFindManyResolve = IResultList<LogError>; +pub type ILogErrorFindManyResolve = ReplicaSchemaResultList<LogError>; pub struct ILogErrorDeleteTs; pub type ILogErrorDelete = ILogErrorFindOne; pub struct ILogErrorDeleteResolveTs; -pub type ILogErrorDeleteResolve = IResult<String>; +pub type ILogErrorDeleteResolve = ReplicaSchemaResult<String>; #[derive(Deserialize, Serialize)] pub struct ILogErrorUpdateArgs { pub on: LogErrorQueryBindValues, @@ -116,4 +116,4 @@ pub struct ILogErrorUpdateArgs { } pub type ILogErrorUpdate = ILogErrorUpdateArgs; pub struct ILogErrorUpdateResolveTs; -pub type ILogErrorUpdateResolve = IResult<LogError>; +pub type ILogErrorUpdateResolve = ReplicaSchemaResult<LogError>; diff --git a/crates/replica_db_schema/src/models/media_image.rs b/crates/replica_db_schema/src/models/media_image.rs @@ -1,4 +1,4 @@ -use radroots_types::types::{IResult, IResultList}; +use crate::models::{ReplicaSchemaResult, ReplicaSchemaResultList}; use serde::{Deserialize, Serialize}; use serde_json::Value; #[derive(Serialize, Deserialize)] @@ -87,7 +87,7 @@ pub enum MediaImageFindManyRel { pub struct IMediaImageCreateTs; pub type IMediaImageCreate = IMediaImageFields; pub struct IMediaImageCreateResolveTs; -pub type IMediaImageCreateResolve = IResult<MediaImage>; +pub type IMediaImageCreateResolve = ReplicaSchemaResult<MediaImage>; #[derive(Deserialize, Serialize)] pub struct IMediaImageFindOneArgs { pub on: MediaImageQueryBindValues, @@ -106,7 +106,7 @@ pub enum IMediaImageFindOne { } pub struct IMediaImageFindOneResolveTs; -pub type IMediaImageFindOneResolve = IResult<Option<MediaImage>>; +pub type IMediaImageFindOneResolve = ReplicaSchemaResult<Option<MediaImage>>; #[derive(Deserialize, Serialize)] #[serde(untagged)] pub enum IMediaImageFindMany { @@ -118,11 +118,11 @@ pub enum IMediaImageFindMany { }, } pub struct IMediaImageFindManyResolveTs; -pub type IMediaImageFindManyResolve = IResultList<MediaImage>; +pub type IMediaImageFindManyResolve = ReplicaSchemaResultList<MediaImage>; pub struct IMediaImageDeleteTs; pub type IMediaImageDelete = IMediaImageFindOne; pub struct IMediaImageDeleteResolveTs; -pub type IMediaImageDeleteResolve = IResult<String>; +pub type IMediaImageDeleteResolve = ReplicaSchemaResult<String>; #[derive(Deserialize, Serialize)] pub struct IMediaImageUpdateArgs { pub on: MediaImageQueryBindValues, @@ -130,4 +130,4 @@ pub struct IMediaImageUpdateArgs { } pub type IMediaImageUpdate = IMediaImageUpdateArgs; pub struct IMediaImageUpdateResolveTs; -pub type IMediaImageUpdateResolve = IResult<MediaImage>; +pub type IMediaImageUpdateResolve = ReplicaSchemaResult<MediaImage>; diff --git a/crates/replica_db_schema/src/models/mod.rs b/crates/replica_db_schema/src/models/mod.rs @@ -13,6 +13,11 @@ pub mod nostr_relay; pub mod plot; pub mod plot_gcs_location; pub mod plot_tag; +pub mod result; pub mod trade_product; pub mod trade_product_location; pub mod trade_product_media; + +pub use result::{ + ReplicaSchemaError, ReplicaSchemaResult, ReplicaSchemaResultList, ReplicaSchemaResultPass, +}; diff --git a/crates/replica_db_schema/src/models/nostr_event_head.rs b/crates/replica_db_schema/src/models/nostr_event_head.rs @@ -1,4 +1,4 @@ -use radroots_types::types::{IResult, IResultList}; +use crate::models::{ReplicaSchemaResult, ReplicaSchemaResultList}; use serde::{Deserialize, Serialize}; use serde_json::Value; @@ -84,7 +84,7 @@ impl NostrEventHeadQueryBindValues { pub struct INostrEventHeadCreateTs; pub type INostrEventHeadCreate = INostrEventHeadFields; pub struct INostrEventHeadCreateResolveTs; -pub type INostrEventHeadCreateResolve = IResult<NostrEventHead>; +pub type INostrEventHeadCreateResolve = ReplicaSchemaResult<NostrEventHead>; #[derive(Deserialize, Serialize)] pub struct INostrEventHeadFindOneArgs { pub on: NostrEventHeadQueryBindValues, @@ -97,18 +97,18 @@ pub enum INostrEventHeadFindOne { } pub struct INostrEventHeadFindOneResolveTs; -pub type INostrEventHeadFindOneResolve = IResult<Option<NostrEventHead>>; +pub type INostrEventHeadFindOneResolve = ReplicaSchemaResult<Option<NostrEventHead>>; #[derive(Deserialize, Serialize)] pub struct INostrEventHeadFindManyArgs { pub filter: Option<INostrEventHeadFieldsFilter>, } pub type INostrEventHeadFindMany = INostrEventHeadFindManyArgs; pub struct INostrEventHeadFindManyResolveTs; -pub type INostrEventHeadFindManyResolve = IResultList<NostrEventHead>; +pub type INostrEventHeadFindManyResolve = ReplicaSchemaResultList<NostrEventHead>; pub struct INostrEventHeadDeleteTs; pub type INostrEventHeadDelete = INostrEventHeadFindOne; pub struct INostrEventHeadDeleteResolveTs; -pub type INostrEventHeadDeleteResolve = IResult<String>; +pub type INostrEventHeadDeleteResolve = ReplicaSchemaResult<String>; #[derive(Deserialize, Serialize)] pub struct INostrEventHeadUpdateArgs { pub on: NostrEventHeadQueryBindValues, @@ -116,4 +116,4 @@ pub struct INostrEventHeadUpdateArgs { } pub type INostrEventHeadUpdate = INostrEventHeadUpdateArgs; pub struct INostrEventHeadUpdateResolveTs; -pub type INostrEventHeadUpdateResolve = IResult<NostrEventHead>; +pub type INostrEventHeadUpdateResolve = ReplicaSchemaResult<NostrEventHead>; diff --git a/crates/replica_db_schema/src/models/nostr_profile.rs b/crates/replica_db_schema/src/models/nostr_profile.rs @@ -1,4 +1,4 @@ -use radroots_types::types::{IResult, IResultList}; +use crate::models::{ReplicaSchemaResult, ReplicaSchemaResultList}; use serde::{Deserialize, Serialize}; use serde_json::Value; #[derive(Serialize, Deserialize)] @@ -107,7 +107,7 @@ pub enum NostrProfileFindManyRel { pub struct INostrProfileCreateTs; pub type INostrProfileCreate = INostrProfileFields; pub struct INostrProfileCreateResolveTs; -pub type INostrProfileCreateResolve = IResult<NostrProfile>; +pub type INostrProfileCreateResolve = ReplicaSchemaResult<NostrProfile>; #[derive(Deserialize, Serialize)] pub struct INostrProfileFindOneArgs { pub on: NostrProfileQueryBindValues, @@ -126,7 +126,7 @@ pub enum INostrProfileFindOne { } pub struct INostrProfileFindOneResolveTs; -pub type INostrProfileFindOneResolve = IResult<Option<NostrProfile>>; +pub type INostrProfileFindOneResolve = ReplicaSchemaResult<Option<NostrProfile>>; #[derive(Deserialize, Serialize)] #[serde(untagged)] pub enum INostrProfileFindMany { @@ -138,11 +138,11 @@ pub enum INostrProfileFindMany { }, } pub struct INostrProfileFindManyResolveTs; -pub type INostrProfileFindManyResolve = IResultList<NostrProfile>; +pub type INostrProfileFindManyResolve = ReplicaSchemaResultList<NostrProfile>; pub struct INostrProfileDeleteTs; pub type INostrProfileDelete = INostrProfileFindOne; pub struct INostrProfileDeleteResolveTs; -pub type INostrProfileDeleteResolve = IResult<String>; +pub type INostrProfileDeleteResolve = ReplicaSchemaResult<String>; #[derive(Deserialize, Serialize)] pub struct INostrProfileUpdateArgs { pub on: NostrProfileQueryBindValues, @@ -150,4 +150,4 @@ pub struct INostrProfileUpdateArgs { } pub type INostrProfileUpdate = INostrProfileUpdateArgs; pub struct INostrProfileUpdateResolveTs; -pub type INostrProfileUpdateResolve = IResult<NostrProfile>; +pub type INostrProfileUpdateResolve = ReplicaSchemaResult<NostrProfile>; diff --git a/crates/replica_db_schema/src/models/nostr_profile_relay.rs b/crates/replica_db_schema/src/models/nostr_profile_relay.rs @@ -1,6 +1,6 @@ +use crate::models::ReplicaSchemaResultPass; use crate::nostr_profile::NostrProfileQueryBindValues; use crate::nostr_relay::NostrRelayQueryBindValues; -use radroots_types::types::IResultPass; use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] @@ -10,4 +10,4 @@ pub struct INostrProfileRelayRelation { } pub struct INostrProfileRelayResolveTs; -pub type INostrProfileRelayResolve = IResultPass; +pub type INostrProfileRelayResolve = ReplicaSchemaResultPass; diff --git a/crates/replica_db_schema/src/models/nostr_relay.rs b/crates/replica_db_schema/src/models/nostr_relay.rs @@ -1,4 +1,4 @@ -use radroots_types::types::{IResult, IResultList}; +use crate::models::{ReplicaSchemaResult, ReplicaSchemaResultList}; use serde::{Deserialize, Serialize}; use serde_json::Value; #[derive(Serialize, Deserialize)] @@ -103,7 +103,7 @@ pub enum NostrRelayFindManyRel { pub struct INostrRelayCreateTs; pub type INostrRelayCreate = INostrRelayFields; pub struct INostrRelayCreateResolveTs; -pub type INostrRelayCreateResolve = IResult<NostrRelay>; +pub type INostrRelayCreateResolve = ReplicaSchemaResult<NostrRelay>; #[derive(Deserialize, Serialize)] pub struct INostrRelayFindOneArgs { pub on: NostrRelayQueryBindValues, @@ -122,7 +122,7 @@ pub enum INostrRelayFindOne { } pub struct INostrRelayFindOneResolveTs; -pub type INostrRelayFindOneResolve = IResult<Option<NostrRelay>>; +pub type INostrRelayFindOneResolve = ReplicaSchemaResult<Option<NostrRelay>>; #[derive(Deserialize, Serialize)] #[serde(untagged)] pub enum INostrRelayFindMany { @@ -134,11 +134,11 @@ pub enum INostrRelayFindMany { }, } pub struct INostrRelayFindManyResolveTs; -pub type INostrRelayFindManyResolve = IResultList<NostrRelay>; +pub type INostrRelayFindManyResolve = ReplicaSchemaResultList<NostrRelay>; pub struct INostrRelayDeleteTs; pub type INostrRelayDelete = INostrRelayFindOne; pub struct INostrRelayDeleteResolveTs; -pub type INostrRelayDeleteResolve = IResult<String>; +pub type INostrRelayDeleteResolve = ReplicaSchemaResult<String>; #[derive(Deserialize, Serialize)] pub struct INostrRelayUpdateArgs { pub on: NostrRelayQueryBindValues, @@ -146,4 +146,4 @@ pub struct INostrRelayUpdateArgs { } pub type INostrRelayUpdate = INostrRelayUpdateArgs; pub struct INostrRelayUpdateResolveTs; -pub type INostrRelayUpdateResolve = IResult<NostrRelay>; +pub type INostrRelayUpdateResolve = ReplicaSchemaResult<NostrRelay>; diff --git a/crates/replica_db_schema/src/models/plot.rs b/crates/replica_db_schema/src/models/plot.rs @@ -1,4 +1,4 @@ -use radroots_types::types::{IResult, IResultList}; +use crate::models::{ReplicaSchemaResult, ReplicaSchemaResultList}; use serde::{Deserialize, Serialize}; use serde_json::Value; @@ -91,7 +91,7 @@ impl PlotQueryBindValues { pub struct IPlotCreateTs; pub type IPlotCreate = IPlotFields; pub struct IPlotCreateResolveTs; -pub type IPlotCreateResolve = IResult<Plot>; +pub type IPlotCreateResolve = ReplicaSchemaResult<Plot>; #[derive(Deserialize, Serialize)] pub struct IPlotFindOneArgs { pub on: PlotQueryBindValues, @@ -104,18 +104,18 @@ pub enum IPlotFindOne { } pub struct IPlotFindOneResolveTs; -pub type IPlotFindOneResolve = IResult<Option<Plot>>; +pub type IPlotFindOneResolve = ReplicaSchemaResult<Option<Plot>>; #[derive(Deserialize, Serialize)] pub struct IPlotFindManyArgs { pub filter: Option<IPlotFieldsFilter>, } pub type IPlotFindMany = IPlotFindManyArgs; pub struct IPlotFindManyResolveTs; -pub type IPlotFindManyResolve = IResultList<Plot>; +pub type IPlotFindManyResolve = ReplicaSchemaResultList<Plot>; pub struct IPlotDeleteTs; pub type IPlotDelete = IPlotFindOne; pub struct IPlotDeleteResolveTs; -pub type IPlotDeleteResolve = IResult<String>; +pub type IPlotDeleteResolve = ReplicaSchemaResult<String>; #[derive(Deserialize, Serialize)] pub struct IPlotUpdateArgs { pub on: PlotQueryBindValues, @@ -123,4 +123,4 @@ pub struct IPlotUpdateArgs { } pub type IPlotUpdate = IPlotUpdateArgs; pub struct IPlotUpdateResolveTs; -pub type IPlotUpdateResolve = IResult<Plot>; +pub type IPlotUpdateResolve = ReplicaSchemaResult<Plot>; diff --git a/crates/replica_db_schema/src/models/plot_gcs_location.rs b/crates/replica_db_schema/src/models/plot_gcs_location.rs @@ -1,4 +1,4 @@ -use radroots_types::types::{IResult, IResultList}; +use crate::models::{ReplicaSchemaResult, ReplicaSchemaResultList}; use serde::{Deserialize, Serialize}; use serde_json::Value; @@ -73,7 +73,7 @@ impl PlotGcsLocationQueryBindValues { pub struct IPlotGcsLocationCreateTs; pub type IPlotGcsLocationCreate = IPlotGcsLocationFields; pub struct IPlotGcsLocationCreateResolveTs; -pub type IPlotGcsLocationCreateResolve = IResult<PlotGcsLocation>; +pub type IPlotGcsLocationCreateResolve = ReplicaSchemaResult<PlotGcsLocation>; #[derive(Deserialize, Serialize)] pub struct IPlotGcsLocationFindOneArgs { pub on: PlotGcsLocationQueryBindValues, @@ -86,18 +86,18 @@ pub enum IPlotGcsLocationFindOne { } pub struct IPlotGcsLocationFindOneResolveTs; -pub type IPlotGcsLocationFindOneResolve = IResult<Option<PlotGcsLocation>>; +pub type IPlotGcsLocationFindOneResolve = ReplicaSchemaResult<Option<PlotGcsLocation>>; #[derive(Deserialize, Serialize)] pub struct IPlotGcsLocationFindManyArgs { pub filter: Option<IPlotGcsLocationFieldsFilter>, } pub type IPlotGcsLocationFindMany = IPlotGcsLocationFindManyArgs; pub struct IPlotGcsLocationFindManyResolveTs; -pub type IPlotGcsLocationFindManyResolve = IResultList<PlotGcsLocation>; +pub type IPlotGcsLocationFindManyResolve = ReplicaSchemaResultList<PlotGcsLocation>; pub struct IPlotGcsLocationDeleteTs; pub type IPlotGcsLocationDelete = IPlotGcsLocationFindOne; pub struct IPlotGcsLocationDeleteResolveTs; -pub type IPlotGcsLocationDeleteResolve = IResult<String>; +pub type IPlotGcsLocationDeleteResolve = ReplicaSchemaResult<String>; #[derive(Deserialize, Serialize)] pub struct IPlotGcsLocationUpdateArgs { pub on: PlotGcsLocationQueryBindValues, @@ -105,4 +105,4 @@ pub struct IPlotGcsLocationUpdateArgs { } pub type IPlotGcsLocationUpdate = IPlotGcsLocationUpdateArgs; pub struct IPlotGcsLocationUpdateResolveTs; -pub type IPlotGcsLocationUpdateResolve = IResult<PlotGcsLocation>; +pub type IPlotGcsLocationUpdateResolve = ReplicaSchemaResult<PlotGcsLocation>; diff --git a/crates/replica_db_schema/src/models/plot_tag.rs b/crates/replica_db_schema/src/models/plot_tag.rs @@ -1,4 +1,4 @@ -use radroots_types::types::{IResult, IResultList}; +use crate::models::{ReplicaSchemaResult, ReplicaSchemaResultList}; use serde::{Deserialize, Serialize}; use serde_json::Value; @@ -67,7 +67,7 @@ impl PlotTagQueryBindValues { pub struct IPlotTagCreateTs; pub type IPlotTagCreate = IPlotTagFields; pub struct IPlotTagCreateResolveTs; -pub type IPlotTagCreateResolve = IResult<PlotTag>; +pub type IPlotTagCreateResolve = ReplicaSchemaResult<PlotTag>; #[derive(Deserialize, Serialize)] pub struct IPlotTagFindOneArgs { pub on: PlotTagQueryBindValues, @@ -80,18 +80,18 @@ pub enum IPlotTagFindOne { } pub struct IPlotTagFindOneResolveTs; -pub type IPlotTagFindOneResolve = IResult<Option<PlotTag>>; +pub type IPlotTagFindOneResolve = ReplicaSchemaResult<Option<PlotTag>>; #[derive(Deserialize, Serialize)] pub struct IPlotTagFindManyArgs { pub filter: Option<IPlotTagFieldsFilter>, } pub type IPlotTagFindMany = IPlotTagFindManyArgs; pub struct IPlotTagFindManyResolveTs; -pub type IPlotTagFindManyResolve = IResultList<PlotTag>; +pub type IPlotTagFindManyResolve = ReplicaSchemaResultList<PlotTag>; pub struct IPlotTagDeleteTs; pub type IPlotTagDelete = IPlotTagFindOne; pub struct IPlotTagDeleteResolveTs; -pub type IPlotTagDeleteResolve = IResult<String>; +pub type IPlotTagDeleteResolve = ReplicaSchemaResult<String>; #[derive(Deserialize, Serialize)] pub struct IPlotTagUpdateArgs { pub on: PlotTagQueryBindValues, @@ -99,4 +99,4 @@ pub struct IPlotTagUpdateArgs { } pub type IPlotTagUpdate = IPlotTagUpdateArgs; pub struct IPlotTagUpdateResolveTs; -pub type IPlotTagUpdateResolve = IResult<PlotTag>; +pub type IPlotTagUpdateResolve = ReplicaSchemaResult<PlotTag>; diff --git a/crates/replica_db_schema/src/models/result.rs b/crates/replica_db_schema/src/models/result.rs @@ -0,0 +1,59 @@ +use serde::{Deserialize, Serialize}; + +#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)] +pub struct ReplicaSchemaError<T> { + pub err: T, +} + +#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)] +pub struct ReplicaSchemaResult<T> { + pub result: T, +} + +#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)] +pub struct ReplicaSchemaResultList<T> { + pub results: Vec<T>, +} + +#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)] +pub struct ReplicaSchemaResultPass { + pub pass: bool, +} + +impl<T> From<T> for ReplicaSchemaError<T> { + fn from(err: T) -> Self { + Self { err } + } +} + +impl<T> ReplicaSchemaError<T> { + pub fn new(err: T) -> Self { + Self { err } + } +} + +impl<T> ReplicaSchemaResult<T> { + pub fn new(result: T) -> Self { + Self { result } + } +} + +impl<T> ReplicaSchemaResultList<T> { + pub fn new(results: Vec<T>) -> Self { + Self { results } + } + + pub fn is_empty(&self) -> bool { + self.results.is_empty() + } +} + +impl ReplicaSchemaResultPass { + pub fn new(pass: bool) -> Self { + Self { pass } + } + + pub fn status_label(&self) -> &'static str { + if self.pass { "pass" } else { "fail" } + } +} diff --git a/crates/replica_db_schema/src/models/trade_product.rs b/crates/replica_db_schema/src/models/trade_product.rs @@ -1,4 +1,4 @@ -use radroots_types::types::{IResult, IResultList}; +use crate::models::{ReplicaSchemaResult, ReplicaSchemaResultList}; use serde::{Deserialize, Serialize}; use serde_json::Value; #[derive(Serialize, Deserialize)] @@ -138,7 +138,7 @@ impl TradeProductQueryBindValues { pub struct ITradeProductCreateTs; pub type ITradeProductCreate = ITradeProductFields; pub struct ITradeProductCreateResolveTs; -pub type ITradeProductCreateResolve = IResult<TradeProduct>; +pub type ITradeProductCreateResolve = ReplicaSchemaResult<TradeProduct>; #[derive(Deserialize, Serialize)] pub struct ITradeProductFindOneArgs { pub on: TradeProductQueryBindValues, @@ -151,18 +151,18 @@ pub enum ITradeProductFindOne { } pub struct ITradeProductFindOneResolveTs; -pub type ITradeProductFindOneResolve = IResult<Option<TradeProduct>>; +pub type ITradeProductFindOneResolve = ReplicaSchemaResult<Option<TradeProduct>>; #[derive(Deserialize, Serialize)] pub struct ITradeProductFindManyArgs { pub filter: Option<ITradeProductFieldsFilter>, } pub type ITradeProductFindMany = ITradeProductFindManyArgs; pub struct ITradeProductFindManyResolveTs; -pub type ITradeProductFindManyResolve = IResultList<TradeProduct>; +pub type ITradeProductFindManyResolve = ReplicaSchemaResultList<TradeProduct>; pub struct ITradeProductDeleteTs; pub type ITradeProductDelete = ITradeProductFindOne; pub struct ITradeProductDeleteResolveTs; -pub type ITradeProductDeleteResolve = IResult<String>; +pub type ITradeProductDeleteResolve = ReplicaSchemaResult<String>; #[derive(Deserialize, Serialize)] pub struct ITradeProductUpdateArgs { pub on: TradeProductQueryBindValues, @@ -170,4 +170,4 @@ pub struct ITradeProductUpdateArgs { } pub type ITradeProductUpdate = ITradeProductUpdateArgs; pub struct ITradeProductUpdateResolveTs; -pub type ITradeProductUpdateResolve = IResult<TradeProduct>; +pub type ITradeProductUpdateResolve = ReplicaSchemaResult<TradeProduct>; diff --git a/crates/replica_db_schema/src/models/trade_product_location.rs b/crates/replica_db_schema/src/models/trade_product_location.rs @@ -1,6 +1,6 @@ use crate::gcs_location::GcsLocationQueryBindValues; +use crate::models::ReplicaSchemaResultPass; use crate::trade_product::TradeProductQueryBindValues; -use radroots_types::types::IResultPass; use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] @@ -10,4 +10,4 @@ pub struct ITradeProductLocationRelation { } pub struct ITradeProductLocationResolveTs; -pub type ITradeProductLocationResolve = IResultPass; +pub type ITradeProductLocationResolve = ReplicaSchemaResultPass; diff --git a/crates/replica_db_schema/src/models/trade_product_media.rs b/crates/replica_db_schema/src/models/trade_product_media.rs @@ -1,6 +1,6 @@ use crate::media_image::MediaImageQueryBindValues; +use crate::models::ReplicaSchemaResultPass; use crate::trade_product::TradeProductQueryBindValues; -use radroots_types::types::IResultPass; use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] @@ -10,4 +10,4 @@ pub struct ITradeProductMediaRelation { } pub struct ITradeProductMediaResolveTs; -pub type ITradeProductMediaResolve = IResultPass; +pub type ITradeProductMediaResolve = ReplicaSchemaResultPass; diff --git a/crates/replica_sync/Cargo.toml b/crates/replica_sync/Cargo.toml @@ -36,7 +36,6 @@ radroots_event_codec = { workspace = true, default-features = false, features = radroots_sql_core = { workspace = true } radroots_replica_db_schema = { workspace = true } radroots_replica_db = { workspace = true } -radroots_types = { workspace = true } hex = { workspace = true } serde = { workspace = true, default-features = false, features = [ "alloc", diff --git a/crates/replica_sync/src/error.rs b/crates/replica_sync/src/error.rs @@ -4,12 +4,12 @@ use alloc::string::{String, ToString}; use core::fmt; use radroots_event_codec::error::{EventEncodeError, EventParseError}; +use radroots_replica_db_schema::ReplicaSchemaError; use radroots_sql_core::error::SqlError; -use radroots_types::types::IError; #[derive(Debug)] pub enum RadrootsReplicaEventsError { - Sql(IError<SqlError>), + Sql(ReplicaSchemaError<SqlError>), Encode(EventEncodeError), Parse(EventParseError), InvalidSelector(String), @@ -31,8 +31,8 @@ impl fmt::Display for RadrootsReplicaEventsError { #[cfg(feature = "std")] impl std::error::Error for RadrootsReplicaEventsError {} -impl From<IError<SqlError>> for RadrootsReplicaEventsError { - fn from(err: IError<SqlError>) -> Self { +impl From<ReplicaSchemaError<SqlError>> for RadrootsReplicaEventsError { + fn from(err: ReplicaSchemaError<SqlError>) -> Self { Self::Sql(err) } } @@ -53,12 +53,12 @@ impl From<EventParseError> for RadrootsReplicaEventsError { mod tests { use super::RadrootsReplicaEventsError; use radroots_event_codec::error::{EventEncodeError, EventParseError}; + use radroots_replica_db_schema::ReplicaSchemaError; use radroots_sql_core::error::SqlError; - use radroots_types::types::IError; #[test] fn display_formats_all_error_variants() { - let sql_err = RadrootsReplicaEventsError::Sql(IError::from(SqlError::Internal)); + let sql_err = RadrootsReplicaEventsError::Sql(ReplicaSchemaError::from(SqlError::Internal)); assert!(sql_err.to_string().contains("replica_sync.sql")); let encode_err = RadrootsReplicaEventsError::Encode(EventEncodeError::InvalidField("name")); @@ -77,7 +77,8 @@ mod tests { #[test] fn from_impls_map_into_expected_variants() { - let sql_from: RadrootsReplicaEventsError = IError::from(SqlError::Internal).into(); + let sql_from: RadrootsReplicaEventsError = + ReplicaSchemaError::from(SqlError::Internal).into(); assert!(sql_from.to_string().contains("replica_sync.sql")); let encode_from: RadrootsReplicaEventsError = EventEncodeError::Json.into(); diff --git a/crates/replica_sync/src/ingest.rs b/crates/replica_sync/src/ingest.rs @@ -36,6 +36,7 @@ use radroots_replica_db::{ farm, farm_member, farm_member_claim, farm_tag, gcs_location, nostr_event_head, nostr_profile, plot, plot_gcs_location, plot_tag, trade_product, }; +use radroots_replica_db_schema::ReplicaSchemaError; use radroots_replica_db_schema::farm::{ FarmQueryBindValues, IFarmFields, IFarmFieldsFilter, IFarmFieldsPartial, IFarmFindMany, IFarmUpdate, @@ -165,17 +166,17 @@ pub fn radroots_replica_ingest_event_with_factory( factory: &dyn RadrootsReplicaIdFactory, ) -> Result<RadrootsReplicaIngestOutcome, RadrootsReplicaEventsError> { if let Err(err) = exec.begin() { - return Err(RadrootsReplicaEventsError::from( - radroots_types::types::IError::from(err), - )); + return Err(RadrootsReplicaEventsError::from(ReplicaSchemaError::from( + err, + ))); } match ingest_event_inner(exec, event, factory) { Ok(outcome) => { if let Err(err) = exec.commit() { - return Err(RadrootsReplicaEventsError::from( - radroots_types::types::IError::from(err), - )); + return Err(RadrootsReplicaEventsError::from(ReplicaSchemaError::from( + err, + ))); } Ok(outcome) } @@ -1391,7 +1392,7 @@ fn upsert_member_claims( } fn handle_delete_result<T>( - result: Result<T, radroots_types::types::IError<SqlError>>, + result: Result<T, ReplicaSchemaError<SqlError>>, ) -> Result<(), RadrootsReplicaEventsError> { match result { Ok(_) => Ok(()), diff --git a/crates/replica_sync/src/tests.rs b/crates/replica_sync/src/tests.rs @@ -8,6 +8,7 @@ use radroots_replica_db::{ farm, farm_gcs_location, farm_member, farm_member_claim, farm_tag, gcs_location, migrations, nostr_profile, plot, plot_gcs_location, plot_tag, }; +use radroots_replica_db_schema::ReplicaSchemaError; use radroots_replica_db_schema::farm::IFarmFields; use radroots_replica_db_schema::farm_gcs_location::IFarmGcsLocationFields; use radroots_replica_db_schema::farm_member::IFarmMemberFields; @@ -20,11 +21,10 @@ use radroots_replica_db_schema::plot_gcs_location::IPlotGcsLocationFields; use radroots_replica_db_schema::plot_tag::IPlotTagFields; use radroots_sql_core::SqliteExecutor; use radroots_sql_core::error::SqlError; -use radroots_types::types::IError; use std::panic; #[cfg_attr(coverage_nightly, coverage(off))] -fn unwrap_sql<T>(result: Result<T, IError<SqlError>>, label: &str) -> T { +fn unwrap_sql<T>(result: Result<T, ReplicaSchemaError<SqlError>>, label: &str) -> T { result .map_err(|err| format!("{label}: {}", err.err)) .unwrap() @@ -238,7 +238,7 @@ fn sync_all_emits_expected_order() { #[test] fn unwrap_sql_panics_on_error() { let result = panic::catch_unwind(|| { - let err = IError::from(SqlError::InvalidArgument("bad".to_string())); + let err = ReplicaSchemaError::from(SqlError::InvalidArgument("bad".to_string())); unwrap_sql::<()>(Err(err), "unwrap"); }); assert!(result.is_err()); diff --git a/crates/replica_sync/tests/ingest_roundtrip.rs b/crates/replica_sync/tests/ingest_roundtrip.rs @@ -20,6 +20,7 @@ use radroots_replica_db::{ farm, farm_gcs_location, farm_member, farm_member_claim, farm_tag, gcs_location, migrations, nostr_profile, plot, plot_gcs_location, plot_tag, }; +use radroots_replica_db_schema::ReplicaSchemaError; use radroots_replica_db_schema::farm::{IFarmFields, IFarmFieldsFilter, IFarmFindMany}; use radroots_replica_db_schema::farm_gcs_location::IFarmGcsLocationFields; use radroots_replica_db_schema::farm_member::{ @@ -47,10 +48,9 @@ use radroots_replica_sync::{ use radroots_sql_core::SqliteExecutor; use radroots_sql_core::error::SqlError; use radroots_sql_core::{ExecOutcome, SqlExecutor}; -use radroots_types::types::IError; use std::panic; -fn unwrap_sql<T>(result: Result<T, IError<SqlError>>, label: &str) -> T { +fn unwrap_sql<T>(result: Result<T, ReplicaSchemaError<SqlError>>, label: &str) -> T { match result { Ok(value) => value, Err(err) => panic!("{label}: {}", err.err), @@ -177,7 +177,7 @@ impl SqlExecutor for QueryFailExecutor<'_> { #[test] fn unwrap_sql_panics_on_error() { let result = panic::catch_unwind(|| { - let err = IError::from(SqlError::InvalidArgument("bad".to_string())); + let err = ReplicaSchemaError::from(SqlError::InvalidArgument("bad".to_string())); unwrap_sql::<()>(Err(err), "unwrap"); }); assert!(result.is_err()); @@ -2169,7 +2169,7 @@ fn sync_emit_reports_encode_error_for_invalid_farm_record() { #[test] fn error_conversion_paths_are_exercised() { - let sql: RadrootsReplicaEventsError = IError::from(SqlError::Internal).into(); + let sql: RadrootsReplicaEventsError = ReplicaSchemaError::from(SqlError::Internal).into(); assert!(sql.to_string().contains("replica_sync.sql")); let encode: RadrootsReplicaEventsError = EventEncodeError::Json.into(); diff --git a/crates/types/Cargo.toml b/crates/types/Cargo.toml @@ -1,19 +0,0 @@ -[package] -name = "radroots_types" -publish = false -version = "0.1.0-alpha.2" -edition.workspace = true -authors = ["Tyson Lupul <tyson@radroots.org>"] -rust-version.workspace = true -license.workspace = true -description = "Shared type primitives for Radroots" -repository.workspace = true -homepage.workspace = true -readme = "README" - -[features] -default = [] - -[dependencies] -serde = { workspace = true, features = ["derive"] } -serde_json = { workspace = true } diff --git a/crates/types/README b/crates/types/README @@ -1,20 +0,0 @@ -# radroots_types - -This is the README for `radroots_types`, which provides shared result and error -wrappers for the `radroots` core libraries. - -## Overview - - * `IError`, `IResult`, `IResultList`, and `IResultPass` wrapper types; - * small constructor helpers and status-label logic for pass and fail outcomes; - * optional `serde` support for API boundary serialization; - * a compact support crate with no domain-specific business logic. - -## Copyright - -Except as otherwise noted, all files in the `radroots_types` distribution are - - Copyright (c) 2025 Tyson Lupul - -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see LICENSE included in the `radroots_types` distribution. diff --git a/crates/types/src/lib.rs b/crates/types/src/lib.rs @@ -1 +0,0 @@ -pub mod types; diff --git a/crates/types/src/types.rs b/crates/types/src/types.rs @@ -1,59 +0,0 @@ -use serde::Serialize; - -#[derive(Clone, Debug, PartialEq, Eq, Serialize)] -pub struct IError<T> { - pub err: T, -} - -#[derive(Clone, Debug, PartialEq, Eq, Serialize)] -pub struct IResult<T> { - pub result: T, -} - -#[derive(Clone, Debug, PartialEq, Eq, Serialize)] -pub struct IResultList<T> { - pub results: Vec<T>, -} - -#[derive(Clone, Debug, PartialEq, Eq, Serialize)] -pub struct IResultPass { - pub pass: bool, -} - -impl<T> From<T> for IError<T> { - fn from(err: T) -> Self { - Self { err } - } -} - -impl<T> IError<T> { - pub fn new(err: T) -> Self { - Self { err } - } -} - -impl<T> IResult<T> { - pub fn new(result: T) -> Self { - Self { result } - } -} - -impl<T> IResultList<T> { - pub fn new(results: Vec<T>) -> Self { - Self { results } - } - - pub fn is_empty(&self) -> bool { - self.results.is_empty() - } -} - -impl IResultPass { - pub fn new(pass: bool) -> Self { - Self { pass } - } - - pub fn status_label(&self) -> &'static str { - if self.pass { "pass" } else { "fail" } - } -} diff --git a/crates/types/tests/types.rs b/crates/types/tests/types.rs @@ -1,49 +0,0 @@ -use radroots_types::types::{IError, IResult, IResultList, IResultPass}; - -#[test] -fn error_wrapper_from_and_new_paths_are_exercised() { - let from_impl: IError<&str> = IError::from("boom"); - assert_eq!(from_impl.err, "boom"); - - let via_new = IError::new("bad"); - assert_eq!(via_new.err, "bad"); -} - -#[test] -fn result_wrapper_new_path_is_exercised() { - let out = IResult::new(42u32); - assert_eq!(out.result, 42); -} - -#[test] -fn result_list_helpers_cover_empty_and_non_empty_branches() { - let empty = IResultList::<u32>::new(Vec::new()); - assert!(empty.is_empty()); - - let non_empty = IResultList::new(vec![1u32, 2u32]); - assert!(!non_empty.is_empty()); - assert_eq!(non_empty.results, vec![1u32, 2u32]); -} - -#[test] -fn result_pass_status_label_covers_both_branches() { - let pass = IResultPass::new(true); - let fail = IResultPass::new(false); - assert_eq!(pass.status_label(), "pass"); - assert_eq!(fail.status_label(), "fail"); -} - -#[test] -fn serde_shapes_for_types_are_stable() { - let err = serde_json::to_value(IError::new("boom")).unwrap(); - assert_eq!(err, serde_json::json!({ "err": "boom" })); - - let out = serde_json::to_value(IResult::new(7u32)).unwrap(); - assert_eq!(out, serde_json::json!({ "result": 7 })); - - let list = serde_json::to_value(IResultList::new(vec!["a", "b"])).unwrap(); - assert_eq!(list, serde_json::json!({ "results": ["a", "b"] })); - - let pass = serde_json::to_value(IResultPass::new(true)).unwrap(); - assert_eq!(pass, serde_json::json!({ "pass": true })); -} diff --git a/tools/xtask/src/coverage.rs b/tools/xtask/src/coverage.rs @@ -3550,7 +3550,7 @@ features = ["rt"] assert_eq!(app_profile.features, vec!["rt".to_string()]); assert_eq!(app_profile.test_threads, Some(2)); - let other_profile = read_coverage_profile(&root, "radroots_types").expect("other profile"); + let other_profile = read_coverage_profile(&root, "radroots_core").expect("other profile"); assert!(!other_profile.no_default_features); assert_eq!(other_profile.features, vec!["std".to_string()]); assert_eq!(other_profile.test_threads, Some(2));