aboutsummaryrefslogtreecommitdiffstats
path: root/adenosine-pds/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'adenosine-pds/src/lib.rs')
-rw-r--r--adenosine-pds/src/lib.rs57
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!({}))
}