diff --git a/radicle-cob/src/object/collaboration/list.rs b/radicle-cob/src/object/collaboration/list.rs index af04e050..dd84f3cf 100644 --- a/radicle-cob/src/object/collaboration/list.rs +++ b/radicle-cob/src/object/collaboration/list.rs @@ -13,7 +13,7 @@ use super::error; /// [`crate::Change`]s at content-addressable locations. Please see /// [`Store`] for further information. /// -/// The `typename` is the type of objects to listed. +/// The `typename` is the type of objects to be listed. pub fn list( storage: &S, typename: &TypeName, diff --git a/radicle/src/cob.rs b/radicle/src/cob.rs index 5bd96bc1..aa7479e3 100644 --- a/radicle/src/cob.rs +++ b/radicle/src/cob.rs @@ -6,6 +6,7 @@ pub mod store; pub mod thread; pub use change::{Actor, ActorId, Change, ChangeId}; +pub use cob::{create, get, list, update}; pub use cob::{ identity, object::collaboration::error, CollaborativeObject, Contents, Create, Entry, History, ObjectId, TypeName, Update, @@ -13,87 +14,3 @@ pub use cob::{ pub use common::*; use radicle_cob as cob; -use radicle_git_ext::Oid; - -use crate::{identity::project::Identity, storage::git::Repository}; - -/// Create a new [`CollaborativeObject`]. -/// -/// The `repository` is the project this collaborative object is being -/// stored under. -/// -/// The `signer` is used to cryptographically sign the changes made -/// for this update. -/// -/// The `project` is used to store its content-address in the history -/// of changes for the collaborative object. -/// -/// The `args` are the metadata for this [`CollaborativeObject`] -/// udpate. See [`Update`] for further information. -pub fn create( - repository: &Repository, - signer: &G, - project: &Identity, - args: Create, -) -> Result -where - G: crypto::Signer, -{ - let namespace = *signer.public_key(); - cob::create(repository, signer, project, &namespace, args) -} - -/// Get a [`CollaborativeObject`], if it exists. -/// -/// The `repository` is the project this collaborative object is being -/// stored under. -/// -/// The `typename` is the type of object to be found, while the -/// `object_id` is the identifier for the particular object under that -/// type. -pub fn get( - repository: &Repository, - typename: &TypeName, - object_id: &ObjectId, -) -> Result, error::Retrieve> { - cob::get(repository, typename, object_id) -} - -/// List a set of [`CollaborativeObject`]. -/// -/// The `repository` is the project this collaborative object is being -/// stored under. -/// -/// The `typename` is the type of objects to listed. -pub fn list( - repository: &Repository, - typename: &TypeName, -) -> Result, error::Retrieve> { - cob::list(repository, typename) -} - -/// Update an existing [`CollaborativeObject`]. -/// -/// The `repository` is the project this collaborative object is being -/// stored under. -/// -/// The `signer` is used to cryptographically sign the changes made -/// for this update. -/// -/// The `project` is used to store its content-address in the history -/// of changes for the collaborative object. -/// -/// The `args` are the metadata for this [`CollaborativeObject`] -/// udpate. See [`Update`] for further information. -pub fn update( - repository: &Repository, - signer: &G, - project: &Identity, - args: Update, -) -> Result -where - G: crypto::Signer, -{ - let namespace = *signer.public_key(); - cob::update(repository, signer, project, &namespace, args) -} diff --git a/radicle/src/cob/store.rs b/radicle/src/cob/store.rs index a8804f88..22792d46 100644 --- a/radicle/src/cob/store.rs +++ b/radicle/src/cob/store.rs @@ -102,6 +102,7 @@ where self.raw, signer, &self.project, + signer.public_key(), Update { object_id, history_type: HISTORY_TYPE.to_owned(), @@ -125,6 +126,7 @@ where self.raw, signer, &self.project, + signer.public_key(), Create { history_type: HISTORY_TYPE.to_owned(), typename: T::type_name().clone(),