Transaction

Enum Transaction 

Source
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

§repo_key: String

Repository key (owner/name).

§ref_name: String

Reference being updated (e.g., “refs/heads/main”).

§old_oid: ObjectId

Old object ID (for optimistic locking).

§new_oid: ObjectId

New object ID.

§objects: Vec<ObjectId>

List of new objects being added.

§signer: SerializablePublicKey

Signer’s public key.

§signature: SerializableSignature

Signature over transaction data.

§

CreateRepository

Create a new repository.

Fields

§owner: String

Owner (user or organization).

§name: String

Repository name.

§description: String

Description.

§default_branch: String

Default branch name.

§visibility: String

Visibility (public/private).

§creator: SerializablePublicKey

Creator’s public key.

§signature: SerializableSignature

Signature over transaction data.

§

DeleteRepository

Delete a repository.

Fields

§repo_key: String

Repository key (owner/name).

§deleter: SerializablePublicKey

Deleter’s public key.

§signature: SerializableSignature

Signature over transaction data.

§

CreatePullRequest

Create a new pull request.

Fields

§repo_key: String

Repository key.

§title: String

PR title.

§description: String

PR description.

§author: String

Author username.

§source_branch: String

Source branch.

§target_branch: String

Target branch.

§source_commit: ObjectId

Source commit hash.

§target_commit: ObjectId

Target commit hash.

§signer: SerializablePublicKey

Signer’s public key.

§signature: SerializableSignature

Signature.

§

UpdatePullRequest

Update an existing pull request.

Fields

§repo_key: String

Repository key.

§pr_number: u32

PR number.

§update: PullRequestUpdate

Update details.

§signer: SerializablePublicKey

Signer’s public key.

§signature: SerializableSignature

Signature.

§

MergePullRequest

Merge a pull request.

Fields

§repo_key: String

Repository key.

§pr_number: u32

PR number.

§merge_commit: ObjectId

Merge commit object ID.

§merged_by: String

Person performing the merge.

§signer: SerializablePublicKey

Signer’s public key.

§signature: SerializableSignature

Signature.

§

CreateIssue

Create a new issue.

Fields

§repo_key: String

Repository key.

§title: String

Issue title.

§description: String

Issue description.

§author: String

Author username.

§signer: SerializablePublicKey

Signer’s public key.

§signature: SerializableSignature

Signature.

§

UpdateIssue

Update an existing issue.

Fields

§repo_key: String

Repository key.

§issue_number: u32

Issue number.

§update: IssueUpdate

Update details.

§signer: SerializablePublicKey

Signer’s public key.

§signature: SerializableSignature

Signature.

§

CreateComment

Create a comment on a PR or issue.

Fields

§target: CommentTargetSpec

Comment target (PR or issue).

§author: String

Author username.

§body: String

Comment body.

§signer: SerializablePublicKey

Signer’s public key.

§signature: SerializableSignature

Signature.

§

CreateReview

Create a review on a pull request.

Fields

§repo_key: String

Repository key.

§pr_number: u32

PR number.

§author: String

Reviewer username.

§state: String

Review state (approved, changes_requested, commented).

§body: Option<String>

Optional review body.

§commit_id: String

Commit ID being reviewed.

§signer: SerializablePublicKey

Signer’s public key.

§signature: SerializableSignature

Signature.

§

CreateOrganization

Create a new organization.

Fields

§name: String

Organization slug (unique name).

§display_name: String

Display name.

§creator: SerializablePublicKey

Creator’s public key.

§signature: SerializableSignature

Signature.

§

UpdateOrganization

Update an organization.

Fields

§org_name: String

Organization name.

§update: OrgUpdate

Update details.

§signer: SerializablePublicKey

Signer’s public key.

§signature: SerializableSignature

Signature.

§

AddOrgMember

Add a member to an organization.

Fields

§org_name: String

Organization name.

§member: SerializablePublicKey

Member’s public key.

§role: String

Role (owner, admin, member).

§signer: SerializablePublicKey

Signer’s public key (admin performing action).

§signature: SerializableSignature

Signature.

§

RemoveOrgMember

Remove a member from an organization.

Fields

§org_name: String

Organization name.

§member: SerializablePublicKey

Member’s public key.

§signer: SerializablePublicKey

Signer’s public key (admin performing action).

§signature: SerializableSignature

Signature.

§

CreateTeam

Create a new team.

Fields

§org_name: String

Organization name.

§team: TeamSpec

Team specification.

§signer: SerializablePublicKey

Signer’s public key.

§signature: SerializableSignature

Signature.

§

DeleteTeam

Delete a team.

Fields

§org_name: String

Organization name.

§team_name: String

Team name.

§signer: SerializablePublicKey

Signer’s public key.

§signature: SerializableSignature

Signature.

§

AddTeamMember

Add a member to a team.

Fields

§org_name: String

Organization name.

§team_name: String

Team name.

§member: SerializablePublicKey

Member’s public key.

§signer: SerializablePublicKey

Signer’s public key.

§signature: SerializableSignature

Signature.

§

RemoveTeamMember

Remove a member from a team.

Fields

§org_name: String

Organization name.

§team_name: String

Team name.

§member: SerializablePublicKey

Member’s public key.

§signer: SerializablePublicKey

Signer’s public key.

§signature: SerializableSignature

Signature.

§

AddTeamRepo

Add a repository to a team.

Fields

§org_name: String

Organization name.

§team_name: String

Team name.

§repo_key: String

Repository key.

§signer: SerializablePublicKey

Signer’s public key.

§signature: SerializableSignature

Signature.

§

SetCollaborator

Add or update a collaborator on a repository.

Fields

§repo_key: String

Repository key.

§collaborator: String

Collaborator’s username or public key.

§permission: String

Permission level (read, write, admin).

§signer: SerializablePublicKey

Signer’s public key.

§signature: SerializableSignature

Signature.

§

RemoveCollaborator

Remove a collaborator from a repository.

Fields

§repo_key: String

Repository key.

§collaborator: String

Collaborator’s username or public key.

§signer: SerializablePublicKey

Signer’s public key.

§signature: SerializableSignature

Signature.

§

SetBranchProtection

Set branch protection rules.

Fields

§repo_key: String

Repository key.

§branch: String

Branch name (pattern).

§protection: BranchProtectionSpec

Protection rules.

§signer: SerializablePublicKey

Signer’s public key.

§signature: SerializableSignature

Signature.

§

RemoveBranchProtection

Remove branch protection rules.

Fields

§repo_key: String

Repository key.

§branch: String

Branch name (pattern).

§signer: SerializablePublicKey

Signer’s public key.

§signature: SerializableSignature

Signature.

Implementations§

Source§

impl Transaction

Source

pub fn id(&self) -> TransactionId

Computes the unique transaction ID (SHA-256 hash of serialized transaction).

Source

pub fn signer(&self) -> &SerializablePublicKey

Returns the signer’s public key for this transaction.

Source

pub fn signature(&self) -> &SerializableSignature

Returns the signature for this transaction.

Source

pub fn repo_key(&self) -> Option<&str>

Returns the affected repository key, if any.

Source

pub fn kind(&self) -> &'static str

Returns a human-readable description of the transaction type.

Trait Implementations§

Source§

impl Clone for Transaction

Source§

fn clone(&self) -> Transaction

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Transaction

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for Transaction

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl PartialEq for Transaction

Source§

fn eq(&self, other: &Transaction) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Serialize for Transaction

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for Transaction

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromRef<T> for T
where T: Clone,

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
Source§

impl<T> FutureExt for T

Source§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
Source§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<A, B, T> HttpServerConnExec<A, B> for T
where B: Body,