Update CLI import pipeline

This commit is contained in:
Gregory Schier
2026-08-16 22:50:24 -07:00
parent 395959f84c
commit bc27e5eee7
2 changed files with 23 additions and 16 deletions
@@ -5,8 +5,7 @@ use std::fs;
use std::io::ErrorKind; use std::io::ErrorKind;
use yaak::export::{self, ExportDataParams}; use yaak::export::{self, ExportDataParams};
use yaak::import; use yaak::import;
use yaak_core::WorkspaceContext; use yaak_models::util::{BatchUpsertResult, ImportDestination};
use yaak_models::util::BatchUpsertResult;
use yaak_plugins::events::{ImportResources, PluginContext}; use yaak_plugins::events::{ImportResources, PluginContext};
type CommandResult<T = ()> = std::result::Result<T, String>; type CommandResult<T = ()> = std::result::Result<T, String>;
@@ -51,6 +50,7 @@ async fn import(ctx: &CliContext, args: ImportArgs) -> CommandResult<BatchUpsert
.import_data(&plugin_context, &file_contents) .import_data(&plugin_context, &file_contents)
.await .await
.map_err(|e| format!("Failed to import data: {e}"))?; .map_err(|e| format!("Failed to import data: {e}"))?;
let importer = import_result.importer;
let resources = import_result.resources; let resources = import_result.resources;
let workspace_id = args.workspace_id; let workspace_id = args.workspace_id;
if workspace_id.is_none() && resources_need_current_workspace(&resources) { if workspace_id.is_none() && resources_need_current_workspace(&resources) {
@@ -59,13 +59,13 @@ async fn import(ctx: &CliContext, args: ImportArgs) -> CommandResult<BatchUpsert
.to_string(), .to_string(),
); );
} }
let workspace_context = WorkspaceContext { let destination = match workspace_id {
workspace_id, Some(workspace_id) => ImportDestination::CurrentWorkspace { workspace_id, folder_id: None },
environment_id: None, None => ImportDestination::NewWorkspace,
cookie_jar_id: None,
request_id: None,
}; };
let imported = import::import_resources(ctx.query_manager(), workspace_context, resources) let plan = import::plan_import_resources(ctx.query_manager(), importer, destination, resources)
.map_err(|e| format!("Failed to plan import: {e}"))?;
let imported = import::commit_import_plan(ctx.query_manager(), plan)
.map_err(|e| format!("Failed to import data: {e}"))?; .map_err(|e| format!("Failed to import data: {e}"))?;
Ok(imported) Ok(imported)
} }
@@ -81,14 +81,21 @@ fn import_reads_yaak_workspace_file() {
let query_manager = query_manager(data_dir); let query_manager = query_manager(data_dir);
let db = query_manager.connect(); let db = query_manager.connect();
assert_eq!( let workspaces = db.list_workspaces().expect("list imported workspaces");
db.get_workspace("wrk_import").expect("workspace imported").name, let workspace = workspaces
"Imported Workspace" .iter()
); .find(|workspace| workspace.name == "Imported Workspace")
assert_eq!( .expect("workspace imported");
db.get_http_request("req_import").expect("request imported").url, assert_ne!(workspace.id, "wrk_import");
"https://example.com"
); let requests = db.list_http_requests(&workspace.id).expect("list imported requests");
let request = requests
.iter()
.find(|request| request.name == "Imported Request")
.expect("request imported");
assert_ne!(request.id, "req_import");
assert_eq!(request.workspace_id, workspace.id);
assert_eq!(request.url, "https://example.com");
} }
fn write_postman_environment_fixture(path: &std::path::Path) { fn write_postman_environment_fixture(path: &std::path::Path) {