mirror of
https://github.com/mountain-loop/yaak.git
synced 2026-04-30 20:54:14 +02:00
Add ability to exclude environments from data export
This commit is contained in:
@@ -1002,8 +1002,11 @@ async fn cmd_export_data(
|
||||
window: WebviewWindow,
|
||||
export_path: &str,
|
||||
workspace_ids: Vec<&str>,
|
||||
include_environments: bool,
|
||||
) -> Result<(), String> {
|
||||
let export_data = get_workspace_export_resources(window.app_handle(), workspace_ids).await;
|
||||
let export_data = get_workspace_export_resources(&window, workspace_ids, include_environments)
|
||||
.await
|
||||
.map_err(|e| e.to_string())?;
|
||||
let f = File::options()
|
||||
.create(true)
|
||||
.truncate(true)
|
||||
|
||||
@@ -2175,7 +2175,8 @@ pub async fn batch_upsert<R: Runtime>(
|
||||
pub async fn get_workspace_export_resources<R: Runtime>(
|
||||
mgr: &impl Manager<R>,
|
||||
workspace_ids: Vec<&str>,
|
||||
) -> WorkspaceExport {
|
||||
include_environments: bool,
|
||||
) -> Result<WorkspaceExport> {
|
||||
let mut data = WorkspaceExport {
|
||||
yaak_version: mgr.package_info().version.clone().to_string(),
|
||||
yaak_schema: 2,
|
||||
@@ -2190,24 +2191,19 @@ pub async fn get_workspace_export_resources<R: Runtime>(
|
||||
};
|
||||
|
||||
for workspace_id in workspace_ids {
|
||||
data.resources
|
||||
.workspaces
|
||||
.push(get_workspace(mgr, workspace_id).await.expect("Failed to get workspace"));
|
||||
data.resources.environments.append(
|
||||
&mut list_environments(mgr, workspace_id).await.expect("Failed to get environments"),
|
||||
);
|
||||
data.resources
|
||||
.folders
|
||||
.append(&mut list_folders(mgr, workspace_id).await.expect("Failed to get folders"));
|
||||
data.resources.http_requests.append(
|
||||
&mut list_http_requests(mgr, workspace_id).await.expect("Failed to get http requests"),
|
||||
);
|
||||
data.resources.grpc_requests.append(
|
||||
&mut list_grpc_requests(mgr, workspace_id).await.expect("Failed to get grpc requests"),
|
||||
);
|
||||
data.resources.workspaces.push(get_workspace(mgr, workspace_id).await?);
|
||||
data.resources.environments.append(&mut list_environments(mgr, workspace_id).await?);
|
||||
data.resources.folders.append(&mut list_folders(mgr, workspace_id).await?);
|
||||
data.resources.http_requests.append(&mut list_http_requests(mgr, workspace_id).await?);
|
||||
data.resources.grpc_requests.append(&mut list_grpc_requests(mgr, workspace_id).await?);
|
||||
}
|
||||
|
||||
data
|
||||
// Nuke environments if we don't want them
|
||||
if !include_environments {
|
||||
data.resources.environments.clear();
|
||||
}
|
||||
|
||||
Ok(data)
|
||||
}
|
||||
|
||||
// Generate the created_at or updated_at timestamps for an upsert operation, depending on the ID
|
||||
|
||||
@@ -13,9 +13,6 @@ pub enum Error {
|
||||
#[error("Unknown model: {0}")]
|
||||
UnknownModel(String),
|
||||
|
||||
#[error("Workspace not configured for sync: {0}")]
|
||||
WorkspaceSyncNotConfigured(String),
|
||||
|
||||
#[error("I/o error: {0}")]
|
||||
IoError(#[from] io::Error),
|
||||
|
||||
@@ -24,7 +21,7 @@ pub enum Error {
|
||||
|
||||
#[error("Invalid sync file: {0}")]
|
||||
InvalidSyncFile(String),
|
||||
|
||||
|
||||
#[error("Watch error: {0}")]
|
||||
NotifyError(#[from] notify::Error),
|
||||
}
|
||||
|
||||
@@ -111,7 +111,7 @@ pub(crate) async fn get_db_candidates<R: Runtime>(
|
||||
sync_dir: &Path,
|
||||
) -> Result<Vec<DbCandidate>> {
|
||||
let models: HashMap<_, _> =
|
||||
workspace_models(mgr, workspace_id).await.into_iter().map(|m| (m.id(), m)).collect();
|
||||
workspace_models(mgr, workspace_id).await?.into_iter().map(|m| (m.id(), m)).collect();
|
||||
let sync_states: HashMap<_, _> = list_sync_states_for_workspace(mgr, workspace_id, sync_dir)
|
||||
.await?
|
||||
.into_iter()
|
||||
@@ -270,12 +270,15 @@ pub(crate) fn compute_sync_ops(
|
||||
.collect()
|
||||
}
|
||||
|
||||
async fn workspace_models<R: Runtime>(mgr: &impl Manager<R>, workspace_id: &str) -> Vec<SyncModel> {
|
||||
let resources = get_workspace_export_resources(mgr, vec![workspace_id]).await.resources;
|
||||
async fn workspace_models<R: Runtime>(
|
||||
mgr: &impl Manager<R>,
|
||||
workspace_id: &str,
|
||||
) -> Result<Vec<SyncModel>> {
|
||||
let resources = get_workspace_export_resources(mgr, vec![workspace_id], true).await?.resources;
|
||||
let workspace = resources.workspaces.iter().find(|w| w.id == workspace_id);
|
||||
|
||||
let workspace = match workspace {
|
||||
None => return Vec::new(),
|
||||
None => return Ok(Vec::new()),
|
||||
Some(w) => w,
|
||||
};
|
||||
|
||||
@@ -294,7 +297,7 @@ async fn workspace_models<R: Runtime>(mgr: &impl Manager<R>, workspace_id: &str)
|
||||
sync_models.push(SyncModel::GrpcRequest(m));
|
||||
}
|
||||
|
||||
sync_models
|
||||
Ok(sync_models)
|
||||
}
|
||||
|
||||
pub(crate) async fn apply_sync_ops<R: Runtime>(
|
||||
|
||||
Reference in New Issue
Block a user