commit 33175331f39cf0cc182adcde58034e5706f1234b
parent f869a487945988252823c0bedacd4232e7b98584
Author: triesap <137732411+triesap@users.noreply.github.com>
Date: Tue, 4 Mar 2025 15:56:23 +0000
Edit `model` crate, add database update handlers and interfaces.
Diffstat:
6 files changed, 108 insertions(+), 18 deletions(-)
diff --git a/crates/model/src/tables/location_gcs.rs b/crates/model/src/tables/location_gcs.rs
@@ -223,15 +223,30 @@ pub async fn lib_model_location_gcs_read_list(
Ok(IResultList { results })
}
-pub type ILocationGcsUpdate = LocationGcsQueryBindValues;
+#[derive(serde::Serialize, serde::Deserialize)]
+pub struct ILocationGcsQueryUpdate {
+ pub query: String,
+ pub bind_values: Vec<serde_json::Value>,
+}
+
+pub type ILocationGcsUpdate = ILocationGcsQueryUpdate;
pub type ILocationGcsUpdateResolve = ();
pub async fn lib_model_location_gcs_update(
- _db: &sqlx::Pool<sqlx::Sqlite>,
- _opts: ILocationGcsUpdate,
+ db: &sqlx::Pool<sqlx::Sqlite>,
+ opts: ILocationGcsUpdate,
) -> Result<ILocationGcsUpdateResolve, ModelError> {
+ let mut query_builder = sqlx::query(&opts.query);
+ for value in opts.bind_values.iter() {
+ query_builder = query_builder.bind(parse_query_value(value)?);
+ }
+ query_builder
+ .execute(db)
+ .await
+ .map_err(|e| ModelError::InvalidQuery(e.to_string()))?;
Ok(())
}
+
pub type ILocationGcsDelete = LocationGcsQueryBindValues;
pub type ILocationGcsDeleteResolve = IResultPass;
diff --git a/crates/model/src/tables/log_error.rs b/crates/model/src/tables/log_error.rs
@@ -195,15 +195,30 @@ pub async fn lib_model_log_error_read_list(
Ok(IResultList { results })
}
-pub type ILogErrorUpdate = LogErrorQueryBindValues;
+#[derive(serde::Serialize, serde::Deserialize)]
+pub struct ILogErrorQueryUpdate {
+ pub query: String,
+ pub bind_values: Vec<serde_json::Value>,
+}
+
+pub type ILogErrorUpdate = ILogErrorQueryUpdate;
pub type ILogErrorUpdateResolve = ();
pub async fn lib_model_log_error_update(
- _db: &sqlx::Pool<sqlx::Sqlite>,
- _opts: ILogErrorUpdate,
+ db: &sqlx::Pool<sqlx::Sqlite>,
+ opts: ILogErrorUpdate,
) -> Result<ILogErrorUpdateResolve, ModelError> {
+ let mut query_builder = sqlx::query(&opts.query);
+ for value in opts.bind_values.iter() {
+ query_builder = query_builder.bind(parse_query_value(value)?);
+ }
+ query_builder
+ .execute(db)
+ .await
+ .map_err(|e| ModelError::InvalidQuery(e.to_string()))?;
Ok(())
}
+
pub type ILogErrorDelete = LogErrorQueryBindValues;
pub type ILogErrorDeleteResolve = IResultPass;
diff --git a/crates/model/src/tables/media_image.rs b/crates/model/src/tables/media_image.rs
@@ -187,15 +187,30 @@ pub async fn lib_model_media_image_read_list(
Ok(IResultList { results })
}
-pub type IMediaImageUpdate = MediaImageQueryBindValues;
+#[derive(serde::Serialize, serde::Deserialize)]
+pub struct IMediaImageQueryUpdate {
+ pub query: String,
+ pub bind_values: Vec<serde_json::Value>,
+}
+
+pub type IMediaImageUpdate = IMediaImageQueryUpdate;
pub type IMediaImageUpdateResolve = ();
pub async fn lib_model_media_image_update(
- _db: &sqlx::Pool<sqlx::Sqlite>,
- _opts: IMediaImageUpdate,
+ db: &sqlx::Pool<sqlx::Sqlite>,
+ opts: IMediaImageUpdate,
) -> Result<IMediaImageUpdateResolve, ModelError> {
+ let mut query_builder = sqlx::query(&opts.query);
+ for value in opts.bind_values.iter() {
+ query_builder = query_builder.bind(parse_query_value(value)?);
+ }
+ query_builder
+ .execute(db)
+ .await
+ .map_err(|e| ModelError::InvalidQuery(e.to_string()))?;
Ok(())
}
+
pub type IMediaImageDelete = MediaImageQueryBindValues;
pub type IMediaImageDeleteResolve = IResultPass;
diff --git a/crates/model/src/tables/nostr_profile.rs b/crates/model/src/tables/nostr_profile.rs
@@ -203,15 +203,30 @@ pub async fn lib_model_nostr_profile_read_list(
Ok(IResultList { results })
}
-pub type INostrProfileUpdate = NostrProfileQueryBindValues;
+#[derive(serde::Serialize, serde::Deserialize)]
+pub struct INostrProfileQueryUpdate {
+ pub query: String,
+ pub bind_values: Vec<serde_json::Value>,
+}
+
+pub type INostrProfileUpdate = INostrProfileQueryUpdate;
pub type INostrProfileUpdateResolve = ();
pub async fn lib_model_nostr_profile_update(
- _db: &sqlx::Pool<sqlx::Sqlite>,
- _opts: INostrProfileUpdate,
+ db: &sqlx::Pool<sqlx::Sqlite>,
+ opts: INostrProfileUpdate,
) -> Result<INostrProfileUpdateResolve, ModelError> {
+ let mut query_builder = sqlx::query(&opts.query);
+ for value in opts.bind_values.iter() {
+ query_builder = query_builder.bind(parse_query_value(value)?);
+ }
+ query_builder
+ .execute(db)
+ .await
+ .map_err(|e| ModelError::InvalidQuery(e.to_string()))?;
Ok(())
}
+
pub type INostrProfileDelete = NostrProfileQueryBindValues;
pub type INostrProfileDeleteResolve = IResultPass;
diff --git a/crates/model/src/tables/nostr_relay.rs b/crates/model/src/tables/nostr_relay.rs
@@ -203,15 +203,30 @@ pub async fn lib_model_nostr_relay_read_list(
Ok(IResultList { results })
}
-pub type INostrRelayUpdate = NostrRelayQueryBindValues;
+#[derive(serde::Serialize, serde::Deserialize)]
+pub struct INostrRelayQueryUpdate {
+ pub query: String,
+ pub bind_values: Vec<serde_json::Value>,
+}
+
+pub type INostrRelayUpdate = INostrRelayQueryUpdate;
pub type INostrRelayUpdateResolve = ();
pub async fn lib_model_nostr_relay_update(
- _db: &sqlx::Pool<sqlx::Sqlite>,
- _opts: INostrRelayUpdate,
+ db: &sqlx::Pool<sqlx::Sqlite>,
+ opts: INostrRelayUpdate,
) -> Result<INostrRelayUpdateResolve, ModelError> {
+ let mut query_builder = sqlx::query(&opts.query);
+ for value in opts.bind_values.iter() {
+ query_builder = query_builder.bind(parse_query_value(value)?);
+ }
+ query_builder
+ .execute(db)
+ .await
+ .map_err(|e| ModelError::InvalidQuery(e.to_string()))?;
Ok(())
}
+
pub type INostrRelayDelete = NostrRelayQueryBindValues;
pub type INostrRelayDeleteResolve = IResultPass;
diff --git a/crates/model/src/tables/trade_product.rs b/crates/model/src/tables/trade_product.rs
@@ -229,15 +229,30 @@ pub async fn lib_model_trade_product_read_list(
Ok(IResultList { results })
}
-pub type ITradeProductUpdate = TradeProductQueryBindValues;
+#[derive(serde::Serialize, serde::Deserialize)]
+pub struct ITradeProductQueryUpdate {
+ pub query: String,
+ pub bind_values: Vec<serde_json::Value>,
+}
+
+pub type ITradeProductUpdate = ITradeProductQueryUpdate;
pub type ITradeProductUpdateResolve = ();
pub async fn lib_model_trade_product_update(
- _db: &sqlx::Pool<sqlx::Sqlite>,
- _opts: ITradeProductUpdate,
+ db: &sqlx::Pool<sqlx::Sqlite>,
+ opts: ITradeProductUpdate,
) -> Result<ITradeProductUpdateResolve, ModelError> {
+ let mut query_builder = sqlx::query(&opts.query);
+ for value in opts.bind_values.iter() {
+ query_builder = query_builder.bind(parse_query_value(value)?);
+ }
+ query_builder
+ .execute(db)
+ .await
+ .map_err(|e| ModelError::InvalidQuery(e.to_string()))?;
Ok(())
}
+
pub type ITradeProductDelete = TradeProductQueryBindValues;
pub type ITradeProductDeleteResolve = IResultPass;