pub struct InviteStore { /* private fields */ }Expand description
File-backed invite store. Read-modify-write with atomic rename;
concurrent mutators must serialise externally (the kernel uses
admin_write_lock).
Implementations§
Source§impl InviteStore
impl InviteStore
Sourcepub const fn new(path: PathBuf) -> Self
pub const fn new(path: PathBuf) -> Self
Construct a store backed by path. The file does not need to
exist — empty/missing reads return an empty list.
Sourcepub fn path_for(home: &AstridHome) -> PathBuf
pub fn path_for(home: &AstridHome) -> PathBuf
Convenience: build the canonical path under $ASTRID_HOME/etc.
Sourcepub fn load(&self) -> Result<Vec<Invite>, InviteStoreError>
pub fn load(&self) -> Result<Vec<Invite>, InviteStoreError>
Read the persisted list. Missing file → empty Vec (single-tenant deployments never call invite-issue).
§Errors
Returns an error if the file exists but is unreadable or malformed.
Sourcepub fn save(&self, invites: &[Invite]) -> Result<(), InviteStoreError>
pub fn save(&self, invites: &[Invite]) -> Result<(), InviteStoreError>
Write the supplied list atomically (write-then-rename, 0600 permissions). An empty list is persisted as an empty TOML file rather than deleting — keeps the file-permission invariant observable to ops tooling.
§Errors
Returns an error if the file cannot be written.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for InviteStore
impl RefUnwindSafe for InviteStore
impl Send for InviteStore
impl Sync for InviteStore
impl Unpin for InviteStore
impl UnsafeUnpin for InviteStore
impl UnwindSafe for InviteStore
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
Mutably borrows from an owned value. Read more
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>
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 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>
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