web


git clone https://radroots.dev/git/web.git
Log | Files | Refs | Submodules | README | LICENSE

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:
Mcrates/model/src/tables/location_gcs.rs | 21++++++++++++++++++---
Mcrates/model/src/tables/log_error.rs | 21++++++++++++++++++---
Mcrates/model/src/tables/media_image.rs | 21++++++++++++++++++---
Mcrates/model/src/tables/nostr_profile.rs | 21++++++++++++++++++---
Mcrates/model/src/tables/nostr_relay.rs | 21++++++++++++++++++---
Mcrates/model/src/tables/trade_product.rs | 21++++++++++++++++++---
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;