pub struct MemoryDatabase { /* private fields */ }Expand description
In-memory metadata database.
All data is lost when the process exits. Suitable for testing and lightweight embedded scenarios.
Implementations§
Trait Implementations§
Source§impl BlobDatabase for MemoryDatabase
impl BlobDatabase for MemoryDatabase
Source§fn record_upload(&mut self, record: &UploadRecord) -> Result<(), DbError>
fn record_upload(&mut self, record: &UploadRecord) -> Result<(), DbError>
Record a new upload. If the sha256 already exists for this pubkey, this is a no-op.
Source§fn get_upload(&self, sha256: &str) -> Result<UploadRecord, DbError>
fn get_upload(&self, sha256: &str) -> Result<UploadRecord, DbError>
Get the upload record for a blob.
Source§fn list_uploads_by_pubkey(
&self,
pubkey: &str,
) -> Result<Vec<UploadRecord>, DbError>
fn list_uploads_by_pubkey( &self, pubkey: &str, ) -> Result<Vec<UploadRecord>, DbError>
List uploads by a pubkey, ordered by created_at descending.
Source§fn delete_upload(&mut self, sha256: &str) -> Result<bool, DbError>
fn delete_upload(&mut self, sha256: &str) -> Result<bool, DbError>
Delete an upload record. Returns true if it existed.
Source§fn get_or_create_user(&mut self, pubkey: &str) -> Result<UserRecord, DbError>
fn get_or_create_user(&mut self, pubkey: &str) -> Result<UserRecord, DbError>
Get or create a user record.
Source§fn set_quota(
&mut self,
pubkey: &str,
quota_bytes: Option<u64>,
) -> Result<(), DbError>
fn set_quota( &mut self, pubkey: &str, quota_bytes: Option<u64>, ) -> Result<(), DbError>
Set a user’s quota limit. Pass
None for unlimited.Source§fn check_quota(
&self,
pubkey: &str,
additional_bytes: u64,
) -> Result<(), DbError>
fn check_quota( &self, pubkey: &str, additional_bytes: u64, ) -> Result<(), DbError>
Check if a user can upload
additional_bytes within their quota.
Returns Ok(()) if allowed, Err(DbError::QuotaExceeded) if not.Source§fn update_used_bytes(
&mut self,
pubkey: &str,
used_bytes: u64,
) -> Result<(), DbError>
fn update_used_bytes( &mut self, pubkey: &str, used_bytes: u64, ) -> Result<(), DbError>
Update a user’s used_bytes (called after upload or delete).
Source§fn record_access(
&mut self,
sha256: &str,
bytes_served: u64,
) -> Result<(), DbError>
fn record_access( &mut self, sha256: &str, bytes_served: u64, ) -> Result<(), DbError>
Record an access event (download) for a blob.
Source§fn upload_count(&self) -> usize
fn upload_count(&self) -> usize
Total number of upload records.
Source§fn user_count(&self) -> usize
fn user_count(&self) -> usize
Total number of registered users.
Source§fn set_role(&mut self, pubkey: &str, role: &str) -> Result<(), DbError>
fn set_role(&mut self, pubkey: &str, role: &str) -> Result<(), DbError>
Set a user’s role (“admin”, “member”, or “denied”).
Creates the user if they don’t exist.
Source§fn get_role(&self, pubkey: &str) -> String
fn get_role(&self, pubkey: &str) -> String
Get a user’s role. Returns “member” for unknown users.
Source§fn list_users_by_role(&self, role: &str) -> Result<Vec<UserRecord>, DbError>
fn list_users_by_role(&self, role: &str) -> Result<Vec<UserRecord>, DbError>
List all users with a given role.
Source§fn find_by_phash(&self, phash: u64) -> Result<Vec<UploadRecord>, DbError>
fn find_by_phash(&self, phash: u64) -> Result<Vec<UploadRecord>, DbError>
Find uploads with a matching perceptual hash (for image dedup).
Returns uploads whose phash matches within a Hamming distance threshold.
Auto Trait Implementations§
impl Freeze for MemoryDatabase
impl RefUnwindSafe for MemoryDatabase
impl Send for MemoryDatabase
impl Sync for MemoryDatabase
impl Unpin for MemoryDatabase
impl UnsafeUnpin for MemoryDatabase
impl UnwindSafe for MemoryDatabase
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> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
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 moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request