feat(core): import_lastpass — group, favorite, notes

Map LastPass grouping/fav/extra columns to relicario item metadata.
Grouping becomes item.group, fav="1" sets item.favorite, extra becomes item.notes.
Multi-line extra via CSV quoting round-trips correctly.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
adlee-was-taken
2026-04-29 22:57:37 -04:00
parent 9ee876cc4b
commit 16888d5a3a
2 changed files with 59 additions and 3 deletions

View File

@@ -94,8 +94,8 @@ fn map_row(record: &csv::StringRecord, row: usize) -> std::result::Result<Item,
let _totp = record.get(3).unwrap_or(""); // populated in Task 4
let extra = record.get(4).unwrap_or("");
let name = record.get(5).unwrap_or("").trim();
let _group = record.get(6).unwrap_or("").trim(); // populated in Task 3
let _fav = record.get(7).unwrap_or("").trim(); // populated in Task 3
let group = record.get(6).unwrap_or("").trim();
let fav = record.get(7).unwrap_or("").trim();
if name.is_empty() {
return Err(ImportWarning {
@@ -124,6 +124,8 @@ fn map_row(record: &csv::StringRecord, row: usize) -> std::result::Result<Item,
totp: None,
}),
);
item.notes = if extra.is_empty() { None } else { Some(extra.to_string()) };
item.group = if group.is_empty() { None } else { Some(group.to_string()) };
item.favorite = fav == "1";
item.notes = if extra.is_empty() { None } else { Some(extra.to_string()) };
Ok(item)
}