lib

Core libraries for Radroots
git clone https://radroots.dev/git/lib.git
Log | Files | Refs | README | LICENSE

trade_product_media.rs (2051B)


      1 use radroots_replica_db_schema::trade_product_media::{
      2     ITradeProductMediaRelation, ITradeProductMediaResolve,
      3 };
      4 use radroots_sql_core::error::SqlError;
      5 use radroots_sql_core::{SqlExecutor, utils};
      6 use radroots_types::types::{IError, IResultPass};
      7 use serde_json::Value;
      8 
      9 const TABLE_NAME: &str = "trade_product_media";
     10 
     11 pub fn set(
     12     exec: &dyn SqlExecutor,
     13     opts: &ITradeProductMediaRelation,
     14 ) -> Result<ITradeProductMediaResolve, IError<SqlError>> {
     15     let mut query_vals: Vec<Value> = Vec::with_capacity(2);
     16     let (trade_product_column, trade_product_value) = opts.trade_product.to_filter_param();
     17     query_vals.push(trade_product_value);
     18     let (media_image_column, media_image_value) = opts.media_image.to_filter_param();
     19     query_vals.push(media_image_value);
     20     let query = format!(
     21         "INSERT INTO {} (tb_tp, tb_mu) VALUES ((SELECT id FROM trade_product WHERE {} = ?), (SELECT id FROM media_image WHERE {} = ?));",
     22         TABLE_NAME, trade_product_column, media_image_column
     23     );
     24     let params_json = utils::to_params_json(query_vals).expect("serialize bind params");
     25     let _ = exec.exec(&query, &params_json)?;
     26     Ok(IResultPass { pass: true })
     27 }
     28 
     29 pub fn unset(
     30     exec: &dyn SqlExecutor,
     31     opts: &ITradeProductMediaRelation,
     32 ) -> Result<ITradeProductMediaResolve, IError<SqlError>> {
     33     let mut query_vals: Vec<Value> = Vec::with_capacity(2);
     34     let (trade_product_column, trade_product_value) = opts.trade_product.to_filter_param();
     35     query_vals.push(trade_product_value);
     36     let (media_image_column, media_image_value) = opts.media_image.to_filter_param();
     37     query_vals.push(media_image_value);
     38     let query = format!(
     39         "DELETE FROM {} WHERE tb_tp = (SELECT id FROM trade_product WHERE {} = ?) AND tb_mu = (SELECT id FROM media_image WHERE {} = ?);",
     40         TABLE_NAME, trade_product_column, media_image_column
     41     );
     42     let params_json = utils::to_params_json(query_vals).expect("serialize bind params");
     43     let _ = exec.exec(&query, &params_json)?;
     44     Ok(IResultPass { pass: true })
     45 }