settings.rs

 1use anyhow::Result;
 2use serde_json::Value;
 3
 4pub fn migrate_experimental_sweep_mercury(value: &mut Value) -> Result<()> {
 5    let Some(obj) = value.as_object_mut() else {
 6        return Ok(());
 7    };
 8
 9    if let Some(edit_predictions) = obj.get_mut("edit_predictions") {
10        if let Some(edit_predictions_obj) = edit_predictions.as_object_mut() {
11            migrate_provider_field(edit_predictions_obj, "provider");
12        }
13    }
14
15    if let Some(features) = obj.get_mut("features") {
16        if let Some(features_obj) = features.as_object_mut() {
17            migrate_provider_field(features_obj, "edit_prediction_provider");
18        }
19    }
20
21    Ok(())
22}
23
24fn migrate_provider_field(obj: &mut serde_json::Map<String, Value>, field_name: &str) {
25    let Some(provider) = obj.get(field_name) else {
26        return;
27    };
28
29    let Some(provider_obj) = provider.as_object() else {
30        return;
31    };
32
33    let Some(experimental_name) = provider_obj.get("experimental") else {
34        return;
35    };
36
37    let Some(name) = experimental_name.as_str() else {
38        return;
39    };
40
41    if name == "sweep" || name == "mercury" {
42        obj.insert(field_name.to_string(), Value::String(name.to_string()));
43    }
44}