pub trait OrgBackend: Send + Sync {
Show 14 methods
// Required methods
fn put_org(&self, org: &Org);
fn get_org(&self, id: &str) -> Option<Org>;
fn delete_org(&self, id: &str) -> bool;
fn list_orgs_for_user(&self, user_id: &str) -> Vec<(Org, OrgRole)>;
fn put_membership(&self, m: &Membership);
fn get_membership(&self, org_id: &str, user_id: &str) -> Option<Membership>;
fn delete_membership(&self, org_id: &str, user_id: &str) -> bool;
fn list_members(&self, org_id: &str) -> Vec<Membership>;
fn put_invite(&self, inv: &Invite);
fn get_invite(&self, id: &str) -> Option<Invite>;
fn list_invites(&self, org_id: &str) -> Vec<Invite>;
fn delete_invite(&self, id: &str) -> bool;
fn invites_by_prefix(&self, prefix: &str) -> Vec<Invite>;
fn mark_invite_accepted(&self, id: &str, now: u64) -> bool;
}Required Methods§
fn put_org(&self, org: &Org)
fn get_org(&self, id: &str) -> Option<Org>
fn delete_org(&self, id: &str) -> bool
fn list_orgs_for_user(&self, user_id: &str) -> Vec<(Org, OrgRole)>
fn put_membership(&self, m: &Membership)
fn get_membership(&self, org_id: &str, user_id: &str) -> Option<Membership>
fn delete_membership(&self, org_id: &str, user_id: &str) -> bool
fn list_members(&self, org_id: &str) -> Vec<Membership>
fn put_invite(&self, inv: &Invite)
fn get_invite(&self, id: &str) -> Option<Invite>
fn list_invites(&self, org_id: &str) -> Vec<Invite>
fn delete_invite(&self, id: &str) -> bool
Sourcefn invites_by_prefix(&self, prefix: &str) -> Vec<Invite>
fn invites_by_prefix(&self, prefix: &str) -> Vec<Invite>
All non-accepted invites whose plaintext starts with prefix.
SQL backends use a WHERE token_prefix = $1 AND accepted_at IS NULL
SELECT; the in-memory backend scans all invites. Argon2 verify
then runs against the candidate set in accept_invite.
Sourcefn mark_invite_accepted(&self, id: &str, now: u64) -> bool
fn mark_invite_accepted(&self, id: &str, now: u64) -> bool
CAS — atomically stamp accepted_at ONLY when it’s currently
NULL. Returns true if we won the race, false if another
concurrent verify got there first. Required so two parallel
accept calls with the same token can’t BOTH create a
membership.