1
0

fix gpt memory dl

This commit is contained in:
2026-03-02 15:53:13 +09:00
parent 9f8c8d9f90
commit 639d619688

View File

@@ -51,33 +51,62 @@ pub async fn get_memory(download: bool) -> Result<()> {
let pds = session.pds.as_deref().unwrap_or("bsky.social"); let pds = session.pds.as_deref().unwrap_or("bsky.social");
let client = XrpcClient::new_bot(pds); let client = XrpcClient::new_bot(pds);
let result: ListRecordsResponse = client if download {
.query_auth( // Download all memory records
&com_atproto_repo::LIST_RECORDS, let mut cursor: Option<String> = None;
&[ let mut count = 0;
loop {
let mut params: Vec<(&str, &str)> = vec![
("repo", &session.did), ("repo", &session.did),
("collection", COLLECTION_MEMORY), ("collection", COLLECTION_MEMORY),
("limit", "1"), ("limit", "100"),
("reverse", "true"), ];
], let cursor_val;
&session.access_jwt, if let Some(ref c) = cursor {
) cursor_val = c.clone();
.await?; params.push(("cursor", &cursor_val));
}
let record = result let result: ListRecordsResponse = client
.records .query_auth(
.first() &com_atproto_repo::LIST_RECORDS,
.context("No memory records found")?; &params,
&session.access_jwt,
)
.await?;
println!("{}", serde_json::to_string_pretty(&record.value)?); let batch = result.records.len();
for record in &result.records {
let rkey = record.uri.split('/').next_back().unwrap_or("unknown");
save_record(&session.did, COLLECTION_MEMORY, rkey, record)?;
count += 1;
}
if download { match result.cursor {
let rkey = record Some(c) if batch > 0 => cursor = Some(c),
.uri _ => break,
.split('/') }
.next_back() }
.unwrap_or("unknown");
save_record(&session.did, COLLECTION_MEMORY, rkey, record)?; println!("Downloaded {} memory records", count);
} else {
// Show latest only
let result: ListRecordsResponse = client
.query_auth(
&com_atproto_repo::LIST_RECORDS,
&[
("repo", &session.did),
("collection", COLLECTION_MEMORY),
("limit", "1"),
("reverse", "true"),
],
&session.access_jwt,
)
.await?;
let record = result.records.first().context("No memory records found")?;
println!("{}", serde_json::to_string_pretty(&record.value)?);
} }
Ok(()) Ok(())