|
@@ -177,6 +177,20 @@ pub async fn expand_url(
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+/// Used for updating disabled query params.
|
|
|
|
|
+#[tauri::command]
|
|
|
|
|
+pub async fn update_query_param_values(
|
|
|
|
|
+ state: tauri::State<'_, AppState>,
|
|
|
|
|
+ id: i64,
|
|
|
|
|
+ key: String,
|
|
|
|
|
+ value: String,
|
|
|
|
|
+) -> Result<(), String> {
|
|
|
|
|
+ db::update_query_param_values(&state.db, id, &key, &value)
|
|
|
|
|
+ .await
|
|
|
|
|
+ .map_err(|e| e.to_string())?;
|
|
|
|
|
+ Ok(())
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
#[tauri::command]
|
|
#[tauri::command]
|
|
|
pub async fn update_query_param_enabled(
|
|
pub async fn update_query_param_enabled(
|
|
|
state: tauri::State<'_, AppState>,
|
|
state: tauri::State<'_, AppState>,
|
|
@@ -190,37 +204,41 @@ pub async fn update_query_param_enabled(
|
|
|
.await
|
|
.await
|
|
|
.map_err(|e| e.to_string())?;
|
|
.map_err(|e| e.to_string())?;
|
|
|
|
|
|
|
|
- log::debug!("Updating {qp:?}");
|
|
|
|
|
-
|
|
|
|
|
if let Some(position) = qp.position {
|
|
if let Some(position) = qp.position {
|
|
|
- dbg!(position, &url);
|
|
|
|
|
-
|
|
|
|
|
- url.remove_query_param(position as usize);
|
|
|
|
|
|
|
+ let Some((removed, offset)) = url.remove_query_param(position as usize) else {
|
|
|
|
|
+ return Err(format!("no query param at position {position}"));
|
|
|
|
|
+ };
|
|
|
|
|
|
|
|
- db::update_request_url(&state.db, req_id, &url.to_string(), None, None)
|
|
|
|
|
|
|
+ let qp = db::update_query_param_enabled(&state.db, qp_id, None)
|
|
|
.await
|
|
.await
|
|
|
.map_err(|e| e.to_string())?;
|
|
.map_err(|e| e.to_string())?;
|
|
|
|
|
|
|
|
- let qp = db::update_query_param_enabled(&state.db, qp_id, None)
|
|
|
|
|
|
|
+ // Update after deactivation because otherwise it will get deleted
|
|
|
|
|
+ db::update_query_param_position(
|
|
|
|
|
+ &state.db,
|
|
|
|
|
+ req_id,
|
|
|
|
|
+ offset as i64,
|
|
|
|
|
+ removed.position as i64,
|
|
|
|
|
+ )
|
|
|
|
|
+ .await
|
|
|
|
|
+ .map_err(|e| e.to_string())?;
|
|
|
|
|
+
|
|
|
|
|
+ db::update_request_url(&state.db, req_id, &url.to_string(), None, None)
|
|
|
.await
|
|
.await
|
|
|
.map_err(|e| e.to_string())?;
|
|
.map_err(|e| e.to_string())?;
|
|
|
|
|
|
|
|
- log::debug!("Updated {qp:?}");
|
|
|
|
|
-
|
|
|
|
|
Ok((qp, url.to_string()))
|
|
Ok((qp, url.to_string()))
|
|
|
} else {
|
|
} else {
|
|
|
let position = url.add_qp_clear_trail(&qp.key, &qp.value);
|
|
let position = url.add_qp_clear_trail(&qp.key, &qp.value);
|
|
|
|
|
|
|
|
- db::update_request_url(&state.db, req_id, &url.to_string(), None, None)
|
|
|
|
|
|
|
+ let qp = db::update_query_param_enabled(&state.db, qp_id, Some(position as i64))
|
|
|
.await
|
|
.await
|
|
|
.map_err(|e| e.to_string())?;
|
|
.map_err(|e| e.to_string())?;
|
|
|
|
|
|
|
|
- let qp = db::update_query_param_enabled(&state.db, qp_id, Some(position as i64))
|
|
|
|
|
|
|
+ db::update_request_url(&state.db, req_id, &url.to_string(), None, None)
|
|
|
.await
|
|
.await
|
|
|
.map_err(|e| e.to_string())?;
|
|
.map_err(|e| e.to_string())?;
|
|
|
|
|
|
|
|
- log::debug!("Updated {qp:?}");
|
|
|
|
|
-
|
|
|
|
|
Ok((qp, url.to_string()))
|
|
Ok((qp, url.to_string()))
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -254,7 +272,6 @@ pub async fn update_url(
|
|
|
UrlUpdate::URL(url) => match RequestUrl::parse(&url) {
|
|
UrlUpdate::URL(url) => match RequestUrl::parse(&url) {
|
|
|
Ok(mut url) => {
|
|
Ok(mut url) => {
|
|
|
let mut path_update: Vec<RequestPathUpdate> = vec![];
|
|
let mut path_update: Vec<RequestPathUpdate> = vec![];
|
|
|
- let mut query_update: Vec<RequestQueryUpdate> = vec![];
|
|
|
|
|
|
|
|
|
|
for seg in url.path.iter_mut() {
|
|
for seg in url.path.iter_mut() {
|
|
|
let Segment::Dynamic(seg, position) = seg else {
|
|
let Segment::Dynamic(seg, position) = seg else {
|
|
@@ -270,13 +287,11 @@ pub async fn update_url(
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- for qp in url.query_params.iter() {
|
|
|
|
|
- query_update.push(RequestQueryUpdate {
|
|
|
|
|
- position: qp.position as i64,
|
|
|
|
|
- key: qp.key,
|
|
|
|
|
- value: qp.value,
|
|
|
|
|
- });
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ let query_update = url
|
|
|
|
|
+ .query_params
|
|
|
|
|
+ .iter()
|
|
|
|
|
+ .map(RequestQueryUpdate::from)
|
|
|
|
|
+ .collect();
|
|
|
|
|
|
|
|
db::update_request_url(
|
|
db::update_request_url(
|
|
|
&state.db,
|
|
&state.db,
|
|
@@ -335,11 +350,7 @@ pub async fn update_url(
|
|
|
let query_update = url
|
|
let query_update = url
|
|
|
.query_params
|
|
.query_params
|
|
|
.iter()
|
|
.iter()
|
|
|
- .map(|qp| RequestQueryUpdate {
|
|
|
|
|
- position: qp.position as i64,
|
|
|
|
|
- key: qp.key,
|
|
|
|
|
- value: qp.value,
|
|
|
|
|
- })
|
|
|
|
|
|
|
+ .map(RequestQueryUpdate::from)
|
|
|
.collect();
|
|
.collect();
|
|
|
|
|
|
|
|
db::update_request_url(
|
|
db::update_request_url(
|
|
@@ -380,11 +391,7 @@ pub async fn update_url(
|
|
|
let query_update = url
|
|
let query_update = url
|
|
|
.query_params
|
|
.query_params
|
|
|
.iter()
|
|
.iter()
|
|
|
- .map(|qp| RequestQueryUpdate {
|
|
|
|
|
- position: qp.position as i64,
|
|
|
|
|
- key: qp.key,
|
|
|
|
|
- value: qp.value,
|
|
|
|
|
- })
|
|
|
|
|
|
|
+ .map(RequestQueryUpdate::from)
|
|
|
.collect();
|
|
.collect();
|
|
|
|
|
|
|
|
db::update_request_url(
|
|
db::update_request_url(
|