pub struct Store { /* private fields */ }Expand description
Opaque store handle. Clone freely — the underlying pool is reference-counted.
Implementations§
Source§impl Store
impl Store
Sourcepub async fn connect(url: &str) -> Result<Self, Error>
pub async fn connect(url: &str) -> Result<Self, Error>
Connect to an arbitrary SQLite URL (use sqlite::memory: for
tests). Runs the schema idempotently.
Sourcepub fn pool(&self) -> &SqlitePool
pub fn pool(&self) -> &SqlitePool
Expose the pool for advanced callers. Prefer the typed helpers below where possible.
pub async fn add_follower( &self, actor_id: &str, follower_id: &str, inbox: Option<&str>, ) -> Result<(), Error>
pub async fn remove_follower( &self, actor_id: &str, follower_id: &str, ) -> Result<u64, Error>
pub async fn is_follower( &self, actor_id: &str, follower_id: &str, ) -> Result<bool, Error>
pub async fn follower_inboxes( &self, actor_id: &str, ) -> Result<Vec<String>, Error>
Sourcepub async fn get_follower_inboxes(
&self,
actor_id: &str,
) -> Result<Vec<String>, Error>
pub async fn get_follower_inboxes( &self, actor_id: &str, ) -> Result<Vec<String>, Error>
Return every follower’s inbox URL for the given actor.
Alias for [follower_inboxes] — named to match the JSS
getFollowerInboxes helper added in v0.0.67.
pub async fn follower_count(&self, actor_id: &str) -> Result<i64, Error>
pub async fn add_following( &self, actor_id: &str, target_id: &str, ) -> Result<(), Error>
pub async fn accept_following( &self, actor_id: &str, target_id: &str, ) -> Result<u64, Error>
pub async fn is_following( &self, actor_id: &str, target_id: &str, ) -> Result<bool, Error>
Sourcepub async fn record_inbox(
&self,
actor_id: &str,
activity: &Value,
) -> Result<bool, Error>
pub async fn record_inbox( &self, actor_id: &str, activity: &Value, ) -> Result<bool, Error>
Record an inbox activity. Idempotent on activity id.
pub async fn get_inbox(&self, id: &str) -> Result<Option<InboxRow>, Error>
pub async fn inbox_count(&self) -> Result<i64, Error>
pub async fn record_outbox( &self, actor_id: &str, activity: &Value, ) -> Result<String, Error>
pub async fn mark_outbox_state( &self, id: &str, state: &str, ) -> Result<u64, Error>
pub async fn outbox_count(&self) -> Result<i64, Error>
pub async fn enqueue_delivery( &self, activity_id: &str, inbox_url: &str, ) -> Result<i64, Error>
pub async fn next_due_delivery(&self) -> Result<Option<DeliveryItem>, Error>
pub async fn drop_delivery(&self, queue_id: i64) -> Result<u64, Error>
pub async fn reschedule_delivery( &self, queue_id: i64, delay_secs: i64, error: &str, ) -> Result<u64, Error>
Sourcepub async fn cache_actor(
&self,
actor_id: &str,
data: &Value,
) -> Result<(), Error>
pub async fn cache_actor( &self, actor_id: &str, data: &Value, ) -> Result<(), Error>
Cache a remote actor document. Uses INSERT OR REPLACE so
re-fetches update fetched_at to the current timestamp.
The fetched_at column is always written as an ISO 8601 UTC
string via chrono::Utc::now() — this matches the JSS v0.0.66
fix that ensures consistent datetime('now')-compatible
timestamps in the actors table.
Sourcepub async fn get_cached_actor(
&self,
actor_id: &str,
) -> Result<Option<(Value, DateTime<Utc>)>, Error>
pub async fn get_cached_actor( &self, actor_id: &str, ) -> Result<Option<(Value, DateTime<Utc>)>, Error>
Retrieve a cached actor document. Returns None if not cached.
Sourcepub async fn is_actor_cache_fresh(
&self,
actor_id: &str,
max_age: Duration,
) -> Result<bool, Error>
pub async fn is_actor_cache_fresh( &self, actor_id: &str, max_age: Duration, ) -> Result<bool, Error>
Check whether a cached actor is still fresh (fetched within
max_age). Returns true if the cache entry exists and its
fetched_at timestamp is within the given duration of now.
This uses chrono::DateTime comparison — all timestamps are
stored and compared as ISO 8601 UTC, avoiding the
datetime('now') vs bare-string mismatch that JSS v0.0.66
fixed.
pub async fn load_activity( &self, activity_id: &str, ) -> Result<Option<Value>, Error>
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Store
impl !RefUnwindSafe for Store
impl Send for Store
impl Sync for Store
impl Unpin for Store
impl UnsafeUnpin for Store
impl !UnwindSafe for Store
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> 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