pub enum Transaction {
Show 23 variants
GitPush {
repo_key: String,
ref_name: String,
old_oid: ObjectId,
new_oid: ObjectId,
objects: Vec<ObjectId>,
signer: SerializablePublicKey,
signature: SerializableSignature,
},
CreateRepository {
owner: String,
name: String,
description: String,
default_branch: String,
visibility: String,
creator: SerializablePublicKey,
signature: SerializableSignature,
},
DeleteRepository {
repo_key: String,
deleter: SerializablePublicKey,
signature: SerializableSignature,
},
CreatePullRequest {
repo_key: String,
title: String,
description: String,
author: String,
source_branch: String,
target_branch: String,
source_commit: ObjectId,
target_commit: ObjectId,
signer: SerializablePublicKey,
signature: SerializableSignature,
},
UpdatePullRequest {
repo_key: String,
pr_number: u32,
update: PullRequestUpdate,
signer: SerializablePublicKey,
signature: SerializableSignature,
},
MergePullRequest {
repo_key: String,
pr_number: u32,
merge_commit: ObjectId,
merged_by: String,
signer: SerializablePublicKey,
signature: SerializableSignature,
},
CreateIssue {
repo_key: String,
title: String,
description: String,
author: String,
signer: SerializablePublicKey,
signature: SerializableSignature,
},
UpdateIssue {
repo_key: String,
issue_number: u32,
update: IssueUpdate,
signer: SerializablePublicKey,
signature: SerializableSignature,
},
CreateComment {
target: CommentTargetSpec,
author: String,
body: String,
signer: SerializablePublicKey,
signature: SerializableSignature,
},
CreateReview {
repo_key: String,
pr_number: u32,
author: String,
state: String,
body: Option<String>,
commit_id: String,
signer: SerializablePublicKey,
signature: SerializableSignature,
},
CreateOrganization {
name: String,
display_name: String,
creator: SerializablePublicKey,
signature: SerializableSignature,
},
UpdateOrganization {
org_name: String,
update: OrgUpdate,
signer: SerializablePublicKey,
signature: SerializableSignature,
},
AddOrgMember {
org_name: String,
member: SerializablePublicKey,
role: String,
signer: SerializablePublicKey,
signature: SerializableSignature,
},
RemoveOrgMember {
org_name: String,
member: SerializablePublicKey,
signer: SerializablePublicKey,
signature: SerializableSignature,
},
CreateTeam {
org_name: String,
team: TeamSpec,
signer: SerializablePublicKey,
signature: SerializableSignature,
},
DeleteTeam {
org_name: String,
team_name: String,
signer: SerializablePublicKey,
signature: SerializableSignature,
},
AddTeamMember {
org_name: String,
team_name: String,
member: SerializablePublicKey,
signer: SerializablePublicKey,
signature: SerializableSignature,
},
RemoveTeamMember {
org_name: String,
team_name: String,
member: SerializablePublicKey,
signer: SerializablePublicKey,
signature: SerializableSignature,
},
AddTeamRepo {
org_name: String,
team_name: String,
repo_key: String,
signer: SerializablePublicKey,
signature: SerializableSignature,
},
SetCollaborator {
repo_key: String,
collaborator: String,
permission: String,
signer: SerializablePublicKey,
signature: SerializableSignature,
},
RemoveCollaborator {
repo_key: String,
collaborator: String,
signer: SerializablePublicKey,
signature: SerializableSignature,
},
SetBranchProtection {
repo_key: String,
branch: String,
protection: BranchProtectionSpec,
signer: SerializablePublicKey,
signature: SerializableSignature,
},
RemoveBranchProtection {
repo_key: String,
branch: String,
signer: SerializablePublicKey,
signature: SerializableSignature,
},
}Expand description
Transactions that require consensus ordering.
Every state-changing operation in Guts is represented as a transaction. Transactions are ordered by the consensus layer and applied atomically.
Variants§
GitPush
Push operation updating references.
Fields
signer: SerializablePublicKeySigner’s public key.
signature: SerializableSignatureSignature over transaction data.
CreateRepository
Create a new repository.
Fields
creator: SerializablePublicKeyCreator’s public key.
signature: SerializableSignatureSignature over transaction data.
DeleteRepository
Delete a repository.
Fields
deleter: SerializablePublicKeyDeleter’s public key.
signature: SerializableSignatureSignature over transaction data.
CreatePullRequest
Create a new pull request.
Fields
Author username.
signer: SerializablePublicKeySigner’s public key.
signature: SerializableSignatureSignature.
UpdatePullRequest
Update an existing pull request.
Fields
update: PullRequestUpdateUpdate details.
signer: SerializablePublicKeySigner’s public key.
signature: SerializableSignatureSignature.
MergePullRequest
Merge a pull request.
Fields
signer: SerializablePublicKeySigner’s public key.
signature: SerializableSignatureSignature.
CreateIssue
Create a new issue.
Fields
Author username.
signer: SerializablePublicKeySigner’s public key.
signature: SerializableSignatureSignature.
UpdateIssue
Update an existing issue.
Fields
update: IssueUpdateUpdate details.
signer: SerializablePublicKeySigner’s public key.
signature: SerializableSignatureSignature.
CreateComment
Create a comment on a PR or issue.
Fields
target: CommentTargetSpecComment target (PR or issue).
Author username.
signer: SerializablePublicKeySigner’s public key.
signature: SerializableSignatureSignature.
CreateReview
Create a review on a pull request.
Fields
Reviewer username.
signer: SerializablePublicKeySigner’s public key.
signature: SerializableSignatureSignature.
CreateOrganization
Create a new organization.
Fields
creator: SerializablePublicKeyCreator’s public key.
signature: SerializableSignatureSignature.
UpdateOrganization
Update an organization.
Fields
signer: SerializablePublicKeySigner’s public key.
signature: SerializableSignatureSignature.
AddOrgMember
Add a member to an organization.
Fields
member: SerializablePublicKeyMember’s public key.
signer: SerializablePublicKeySigner’s public key (admin performing action).
signature: SerializableSignatureSignature.
RemoveOrgMember
Remove a member from an organization.
Fields
member: SerializablePublicKeyMember’s public key.
signer: SerializablePublicKeySigner’s public key (admin performing action).
signature: SerializableSignatureSignature.
CreateTeam
Create a new team.
Fields
signer: SerializablePublicKeySigner’s public key.
signature: SerializableSignatureSignature.
DeleteTeam
Delete a team.
Fields
signer: SerializablePublicKeySigner’s public key.
signature: SerializableSignatureSignature.
AddTeamMember
Add a member to a team.
Fields
member: SerializablePublicKeyMember’s public key.
signer: SerializablePublicKeySigner’s public key.
signature: SerializableSignatureSignature.
RemoveTeamMember
Remove a member from a team.
Fields
member: SerializablePublicKeyMember’s public key.
signer: SerializablePublicKeySigner’s public key.
signature: SerializableSignatureSignature.
AddTeamRepo
Add a repository to a team.
Fields
signer: SerializablePublicKeySigner’s public key.
signature: SerializableSignatureSignature.
SetCollaborator
Add or update a collaborator on a repository.
Fields
signer: SerializablePublicKeySigner’s public key.
signature: SerializableSignatureSignature.
RemoveCollaborator
Remove a collaborator from a repository.
Fields
signer: SerializablePublicKeySigner’s public key.
signature: SerializableSignatureSignature.
SetBranchProtection
Set branch protection rules.
Fields
protection: BranchProtectionSpecProtection rules.
signer: SerializablePublicKeySigner’s public key.
signature: SerializableSignatureSignature.
RemoveBranchProtection
Remove branch protection rules.
Fields
signer: SerializablePublicKeySigner’s public key.
signature: SerializableSignatureSignature.
Implementations§
Source§impl Transaction
impl Transaction
Sourcepub fn id(&self) -> TransactionId
pub fn id(&self) -> TransactionId
Computes the unique transaction ID (SHA-256 hash of serialized transaction).
Sourcepub fn signer(&self) -> &SerializablePublicKey
pub fn signer(&self) -> &SerializablePublicKey
Returns the signer’s public key for this transaction.
Sourcepub fn signature(&self) -> &SerializableSignature
pub fn signature(&self) -> &SerializableSignature
Returns the signature for this transaction.
Trait Implementations§
Source§impl Clone for Transaction
impl Clone for Transaction
Source§fn clone(&self) -> Transaction
fn clone(&self) -> Transaction
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for Transaction
impl Debug for Transaction
Source§impl<'de> Deserialize<'de> for Transaction
impl<'de> Deserialize<'de> for Transaction
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl PartialEq for Transaction
impl PartialEq for Transaction
Source§impl Serialize for Transaction
impl Serialize for Transaction
impl StructuralPartialEq for Transaction
Auto Trait Implementations§
impl Freeze for Transaction
impl RefUnwindSafe for Transaction
impl Send for Transaction
impl Sync for Transaction
impl Unpin for Transaction
impl UnwindSafe for Transaction
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more