pub struct Repo<'a> { /* private fields */ }Expand description
A dispatcher bound to one request’s state.
Implementations§
Source§impl Repo<'_>
impl Repo<'_>
Sourcepub async fn has_session(&self, did: &str) -> Result<bool>
pub async fn has_session(&self, did: &str) -> Result<bool>
Whether did has a session this backend could actually use.
A precondition check, not a repo operation — deliberately NOT wrapped
in timed(). The background flusher calls this every round for every
DID holding dirty read-state; counting it would re-inflate the very
flush_read_states error count this exists to stop polluting (#117).
Existence only: no decrypt, no staleness check, no refresh. A session
that is present but expired still counts as usable here, because the
refresh path is exactly what session() will do about it. The question
being answered is narrower — is there anything at all to work with, or
is this DID parked until the user signs in again?
The sidecar arm answers true unconditionally, preserving today’s
behaviour on that backend rather than guessing. The sidecar owns its own
session store and answering honestly would mean a loopback round trip per
DID per minute; prod runs rust, and that arm is deleted by #18.
Source§impl Repo<'_>
impl Repo<'_>
Sourcepub async fn list_subscriptions_sorted(
&self,
did: &str,
) -> Result<Vec<(String, Subscription)>>
pub async fn list_subscriptions_sorted( &self, did: &str, ) -> Result<Vec<(String, Subscription)>>
The reader’s feed list, in display order.
Sourcepub async fn add_subscription(
&self,
did: &str,
sub: &Subscription,
) -> Result<String>
pub async fn add_subscription( &self, did: &str, sub: &Subscription, ) -> Result<String>
Subscribe. Returns the new record’s rkey.
Vets the record first — see [vet].
Sourcepub async fn remove_subscription(&self, did: &str, rkey: &str) -> Result<()>
pub async fn remove_subscription(&self, did: &str, rkey: &str) -> Result<()>
Unsubscribe by rkey.
Sourcepub async fn update_subscription(
&self,
did: &str,
rkey: &str,
sub: &Subscription,
) -> Result<WriteResult>
pub async fn update_subscription( &self, did: &str, rkey: &str, sub: &Subscription, ) -> Result<WriteResult>
Rename or re-folder a subscription.
Vets the record first — see [vet].
Sourcepub async fn add_subscriptions_bulk(
&self,
did: &str,
subs: &[Subscription],
) -> Result<Vec<String>>
pub async fn add_subscriptions_bulk( &self, did: &str, subs: &[Subscription], ) -> Result<Vec<String>>
OPML import — one applyWrites for the whole batch.
Vets every record first — see [vet]. An import is the path where the
URLs are least trustworthy: the file is arbitrary, and 200 of them arrive
at once with nobody reading each line.
Sourcepub async fn list_folders_sorted(
&self,
did: &str,
) -> Result<Vec<(String, Folder)>>
pub async fn list_folders_sorted( &self, did: &str, ) -> Result<Vec<(String, Folder)>>
Folders in display order.
Sourcepub async fn add_folder(&self, did: &str, folder: &Folder) -> Result<String>
pub async fn add_folder(&self, did: &str, folder: &Folder) -> Result<String>
Create a folder. Returns its rkey.
Sourcepub async fn rename_folder(
&self,
did: &str,
rkey: &str,
folder: &Folder,
) -> Result<WriteResult>
pub async fn rename_folder( &self, did: &str, rkey: &str, folder: &Folder, ) -> Result<WriteResult>
Rename a folder in place.
Sourcepub async fn list_saved_sorted(&self, did: &str) -> Result<Vec<(String, Saved)>>
pub async fn list_saved_sorted(&self, did: &str) -> Result<Vec<(String, Saved)>>
Saved items, newest first.
Sourcepub async fn add_saved(&self, did: &str, saved: &Saved) -> Result<String>
pub async fn add_saved(&self, did: &str, saved: &Saved) -> Result<String>
Save an entry. Returns its rkey.
Refuses rather than publishing a URL we would not render. url is
required on this record, so unlike a subscription’s siteUrl there is no
honest resting place for a rejected value — see crate::vetted::VettedSaved.
The only caller already treats a failed PDS write as recoverable: it logs
and keeps the entry starred locally, so the reader loses nothing but the
hostile record.
Sourcepub async fn list_saved(&self, did: &str) -> Result<Vec<(String, Saved)>>
pub async fn list_saved(&self, did: &str) -> Result<Vec<(String, Saved)>>
Saved items in PDS order — the un-star path, which matches by URL and does not care about display order.
Auto Trait Implementations§
impl<'a> !RefUnwindSafe for Repo<'a>
impl<'a> !UnwindSafe for Repo<'a>
impl<'a> Freeze for Repo<'a>
impl<'a> Send for Repo<'a>
impl<'a> Sync for Repo<'a>
impl<'a> Unpin for Repo<'a>
impl<'a> UnsafeUnpin for Repo<'a>
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
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
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