lib

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

nostr_profile_relay.rs (2051B)


      1 use radroots_replica_db_schema::nostr_profile_relay::{
      2     INostrProfileRelayRelation, INostrProfileRelayResolve,
      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 = "nostr_profile_relay";
     10 
     11 pub fn set(
     12     exec: &dyn SqlExecutor,
     13     opts: &INostrProfileRelayRelation,
     14 ) -> Result<INostrProfileRelayResolve, IError<SqlError>> {
     15     let mut query_vals: Vec<Value> = Vec::with_capacity(2);
     16     let (nostr_profile_column, nostr_profile_value) = opts.nostr_profile.to_filter_param();
     17     query_vals.push(nostr_profile_value);
     18     let (nostr_relay_column, nostr_relay_value) = opts.nostr_relay.to_filter_param();
     19     query_vals.push(nostr_relay_value);
     20     let query = format!(
     21         "INSERT INTO {} (tb_pr, tb_rl) VALUES ((SELECT id FROM nostr_profile WHERE {} = ?), (SELECT id FROM nostr_relay WHERE {} = ?));",
     22         TABLE_NAME, nostr_profile_column, nostr_relay_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: &INostrProfileRelayRelation,
     32 ) -> Result<INostrProfileRelayResolve, IError<SqlError>> {
     33     let mut query_vals: Vec<Value> = Vec::with_capacity(2);
     34     let (nostr_profile_column, nostr_profile_value) = opts.nostr_profile.to_filter_param();
     35     query_vals.push(nostr_profile_value);
     36     let (nostr_relay_column, nostr_relay_value) = opts.nostr_relay.to_filter_param();
     37     query_vals.push(nostr_relay_value);
     38     let query = format!(
     39         "DELETE FROM {} WHERE tb_pr = (SELECT id FROM nostr_profile WHERE {} = ?) AND tb_rl = (SELECT id FROM nostr_relay WHERE {} = ?);",
     40         TABLE_NAME, nostr_profile_column, nostr_relay_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 }