diff options
author | Bryan Newbold <bnewbold@robocracy.org> | 2022-11-06 23:20:09 -0800 |
---|---|---|
committer | Bryan Newbold <bnewbold@robocracy.org> | 2022-11-06 23:20:09 -0800 |
commit | bd225c6532dcc0d4fa7cb4d21444105d6d23771d (patch) | |
tree | 266630a20b469a3277e596eac6f5afad6430ac0a /adenosine-pds/src/lib.rs | |
parent | 388d4c004146865161e2661fb63c705e7f097f3a (diff) | |
download | adenosine-bd225c6532dcc0d4fa7cb4d21444105d6d23771d.tar.gz adenosine-bd225c6532dcc0d4fa7cb4d21444105d6d23771d.zip |
pds: refactor to use higher-level repo mutation code path
Diffstat (limited to 'adenosine-pds/src/lib.rs')
-rw-r--r-- | adenosine-pds/src/lib.rs | 57 |
1 files changed, 10 insertions, 47 deletions
diff --git a/adenosine-pds/src/lib.rs b/adenosine-pds/src/lib.rs index d0ef02a..dc34d09 100644 --- a/adenosine-pds/src/lib.rs +++ b/adenosine-pds/src/lib.rs @@ -1,5 +1,4 @@ use adenosine_cli::identifiers::{Did, Nsid, Tid, TidLord}; -use anyhow::Context; use anyhow::{anyhow, Result}; use libipld::Cid; use libipld::Ipld; @@ -371,8 +370,6 @@ fn xrpc_post_handler( let did = Did::from_str(&xrpc_required_param(request, "did")?)?; let mut srv = srv.lock().unwrap(); let _auth_did = &xrpc_check_auth_header(&mut srv, request, Some(&did))?; - let commit_cid = &srv.repo.lookup_commit(&did)?.unwrap(); - let last_commit = srv.repo.get_commit(commit_cid)?; let mut mutations: Vec<Mutation> = Default::default(); for w in batch.writes.iter() { let m = match w.op_type.as_str() { @@ -398,13 +395,8 @@ fn xrpc_post_handler( }; mutations.push(m); } - let new_mst_cid = srv.repo.update_mst(&last_commit.mst_cid, &mutations)?; - let new_root_cid = srv.repo.write_root( - last_commit.meta_cid, - Some(last_commit.commit_cid), - new_mst_cid, - )?; - srv.repo.write_commit(&did, new_root_cid, "dummy-sig")?; + let keypair = srv.pds_keypair.clone(); + srv.repo.mutate_repo(&did, &mutations, &keypair)?; // TODO: next handle updates to database Ok(json!({})) } @@ -415,27 +407,13 @@ fn xrpc_post_handler( let record: Value = rouille::input::json_input(request)?; let mut srv = srv.lock().unwrap(); let _auth_did = &xrpc_check_auth_header(&mut srv, request, Some(&did))?; - debug!("reading commit"); - let commit_cid = &srv.repo.lookup_commit(&did)?.unwrap(); - let last_commit = srv.repo.get_commit(commit_cid)?; let mutations: Vec<Mutation> = vec![Mutation::Create( collection, srv.tid_gen.next_tid(), json_value_into_ipld(record), )]; - debug!("mutating tree"); - let new_mst_cid = srv - .repo - .update_mst(&last_commit.mst_cid, &mutations) - .context("updating MST in repo")?; - debug!("writing new root"); - let new_root_cid = srv.repo.write_root( - last_commit.meta_cid, - Some(last_commit.commit_cid), - new_mst_cid, - )?; - debug!("writing new commit"); - srv.repo.write_commit(&did, new_root_cid, "dummy-sig")?; + let keypair = srv.pds_keypair.clone(); + srv.repo.mutate_repo(&did, &mutations, &keypair)?; // TODO: next handle updates to database Ok(json!({})) } @@ -447,23 +425,14 @@ fn xrpc_post_handler( let record: Value = rouille::input::json_input(request)?; let mut srv = srv.lock().unwrap(); let _auth_did = &xrpc_check_auth_header(&mut srv, request, Some(&did))?; - let commit_cid = &srv.repo.lookup_commit(&did)?.unwrap(); - let last_commit = srv.repo.get_commit(commit_cid)?; + let mutations: Vec<Mutation> = vec![Mutation::Update( collection, tid, json_value_into_ipld(record), )]; - let new_mst_cid = srv - .repo - .update_mst(&last_commit.mst_cid, &mutations) - .context("updating MST in repo")?; - let new_root_cid = srv.repo.write_root( - last_commit.meta_cid, - Some(last_commit.commit_cid), - new_mst_cid, - )?; - srv.repo.write_commit(&did, new_root_cid, "dummy-sig")?; + let keypair = srv.pds_keypair.clone(); + srv.repo.mutate_repo(&did, &mutations, &keypair)?; // TODO: next handle updates to database Ok(json!({})) } @@ -473,16 +442,10 @@ fn xrpc_post_handler( let tid = Tid::from_str(&xrpc_required_param(request, "rkey")?)?; let mut srv = srv.lock().unwrap(); let _auth_did = &xrpc_check_auth_header(&mut srv, request, Some(&did))?; - let commit_cid = &srv.repo.lookup_commit(&did)?.unwrap(); - let last_commit = srv.repo.get_commit(commit_cid)?; + let mutations: Vec<Mutation> = vec![Mutation::Delete(collection, tid)]; - let new_mst_cid = srv.repo.update_mst(&last_commit.mst_cid, &mutations)?; - let new_root_cid = srv.repo.write_root( - last_commit.meta_cid, - Some(last_commit.commit_cid), - new_mst_cid, - )?; - srv.repo.write_commit(&did, new_root_cid, "dummy-sig")?; + let keypair = srv.pds_keypair.clone(); + srv.repo.mutate_repo(&did, &mutations, &keypair)?; // TODO: next handle updates to database Ok(json!({})) } |