Trait bonsaidb::files::FileConfig
source · pub trait FileConfig: Sized + Send + Sync + Unpin + 'static {
type Metadata: Serialize + DeserializeOwned + Send + Sync + Debug + Clone;
const BLOCK_SIZE: usize;
Show 23 methods
// Required methods
fn files_name() -> CollectionName;
fn blocks_name() -> CollectionName;
// Provided methods
fn register_collections(schema: &mut Schematic) -> Result<(), Error> { ... }
fn build<NameOrPath>(name_or_path: NameOrPath) -> FileBuilder<'static, Self>
where NameOrPath: AsRef<str>,
Self::Metadata: Default { ... }
fn build_with_metadata<NameOrPath>(
name_or_path: NameOrPath,
metadata: Self::Metadata
) -> FileBuilder<'static, Self>
where NameOrPath: AsRef<str> { ... }
fn get<Database>(
id: u32,
database: &Database
) -> Result<Option<File<Blocking<Database>, Self>>, Error>
where Database: Connection + Clone { ... }
fn load<Database>(
path: &str,
database: &Database
) -> Result<Option<File<Blocking<Database>, Self>>, Error>
where Database: Connection + Clone { ... }
fn load_or_create<Database>(
path: &str,
expect_present: bool,
database: &Database
) -> Result<File<Blocking<Database>, Self>, Error>
where Database: Connection + Clone,
Self::Metadata: Default { ... }
fn load_or_create_with_metadata<Database>(
path: &str,
metadata: Self::Metadata,
expect_present: bool,
database: &Database
) -> Result<File<Blocking<Database>, Self>, Error>
where Database: Connection + Clone { ... }
fn delete<Database>(path: &str, database: &Database) -> Result<bool, Error>
where Database: Connection + Clone { ... }
fn list<Database>(
path: &str,
database: &Database
) -> Result<Vec<File<Blocking<Database>, Self>>, Error>
where Database: Connection + Clone { ... }
fn list_recursive<Database>(
path: &str,
database: &Database
) -> Result<Vec<File<Blocking<Database>, Self>>, Error>
where Database: Connection + Clone { ... }
fn stats<Database>(database: &Database) -> Result<Statistics, Error>
where Database: Connection + Clone { ... }
fn stats_for_path<Database>(
path: &str,
database: &Database
) -> Result<Statistics, Error>
where Database: Connection + Clone { ... }
fn get_async<'life0, 'async_trait, Database>(
id: u32,
database: &'life0 Database
) -> Pin<Box<dyn Future<Output = Result<Option<File<Async<Database>, Self>>, Error>> + Send + 'async_trait>>
where 'life0: 'async_trait,
Database: 'async_trait + AsyncConnection + Clone,
Self: 'async_trait { ... }
fn load_async<'life0, 'life1, 'async_trait, Database>(
path: &'life0 str,
database: &'life1 Database
) -> Pin<Box<dyn Future<Output = Result<Option<File<Async<Database>, Self>>, Error>> + Send + 'async_trait>>
where 'life0: 'async_trait,
'life1: 'async_trait,
Database: 'async_trait + AsyncConnection + Clone,
Self: 'async_trait { ... }
fn load_or_create_async<'life0, 'life1, 'async_trait, Database>(
path: &'life0 str,
expect_present: bool,
database: &'life1 Database
) -> Pin<Box<dyn Future<Output = Result<File<Async<Database>, Self>, Error>> + Send + 'async_trait>>
where 'life0: 'async_trait,
'life1: 'async_trait,
Self::Metadata: Default,
Database: 'async_trait + AsyncConnection + Clone,
Self: 'async_trait { ... }
fn load_or_create_with_metadata_async<'life0, 'life1, 'async_trait, Database>(
path: &'life0 str,
metadata: Self::Metadata,
expect_present: bool,
database: &'life1 Database
) -> Pin<Box<dyn Future<Output = Result<File<Async<Database>, Self>, Error>> + Send + 'async_trait>>
where 'life0: 'async_trait,
'life1: 'async_trait,
Database: 'async_trait + AsyncConnection + Clone,
Self: 'async_trait { ... }
fn delete_async<'life0, 'life1, 'async_trait, Database>(
path: &'life0 str,
database: &'life1 Database
) -> Pin<Box<dyn Future<Output = Result<bool, Error>> + Send + 'async_trait>>
where 'life0: 'async_trait,
'life1: 'async_trait,
Database: 'async_trait + AsyncConnection + Clone,
Self: 'async_trait { ... }
fn list_async<'life0, 'life1, 'async_trait, Database>(
path: &'life0 str,
database: &'life1 Database
) -> Pin<Box<dyn Future<Output = Result<Vec<File<Async<Database>, Self>>, Error>> + Send + 'async_trait>>
where 'life0: 'async_trait,
'life1: 'async_trait,
Database: 'async_trait + AsyncConnection + Clone,
Self: 'async_trait { ... }
fn list_recursive_async<'life0, 'life1, 'async_trait, Database>(
path: &'life0 str,
database: &'life1 Database
) -> Pin<Box<dyn Future<Output = Result<Vec<File<Async<Database>, Self>>, Error>> + Send + 'async_trait>>
where 'life0: 'async_trait,
'life1: 'async_trait,
Database: 'async_trait + AsyncConnection + Clone,
Self: 'async_trait { ... }
fn stats_async<'life0, 'async_trait, Database>(
database: &'life0 Database
) -> Pin<Box<dyn Future<Output = Result<Statistics, Error>> + Send + 'async_trait>>
where 'life0: 'async_trait,
Database: 'async_trait + AsyncConnection + Clone,
Self: 'async_trait { ... }
fn stats_for_path_async<'life0, 'life1, 'async_trait, Database>(
path: &'life0 str,
database: &'life1 Database
) -> Pin<Box<dyn Future<Output = Result<Statistics, Error>> + Send + 'async_trait>>
where 'life0: 'async_trait,
'life1: 'async_trait,
Database: 'async_trait + AsyncConnection + Clone,
Self: 'async_trait { ... }
}
Expand description
A configuration for a set of stored files.
Required Associated Types§
Required Associated Constants§
sourceconst BLOCK_SIZE: usize
const BLOCK_SIZE: usize
The maximum size for each write to an underlying file. The file will be
stored by breaking the data written into chunks no larger than
BLOCK_SIZE
.
Required Methods§
sourcefn files_name() -> CollectionName
fn files_name() -> CollectionName
Returns the unique collection name to use to store File
s.
sourcefn blocks_name() -> CollectionName
fn blocks_name() -> CollectionName
Returns the unique collection name to use to store file blocks.
Provided Methods§
sourcefn register_collections(schema: &mut Schematic) -> Result<(), Error>
fn register_collections(schema: &mut Schematic) -> Result<(), Error>
Registers the collections for this configuration into schema
.
sourcefn build<NameOrPath>(name_or_path: NameOrPath) -> FileBuilder<'static, Self>
fn build<NameOrPath>(name_or_path: NameOrPath) -> FileBuilder<'static, Self>
Builds a new file. If name_or_path
starts with a /
, the argument is
treated as a full path to the file being built. Otherwise, the argument
is treated as the file’s name.
sourcefn build_with_metadata<NameOrPath>(
name_or_path: NameOrPath,
metadata: Self::Metadata
) -> FileBuilder<'static, Self>
fn build_with_metadata<NameOrPath>( name_or_path: NameOrPath, metadata: Self::Metadata ) -> FileBuilder<'static, Self>
Builds a new file. If name_or_path
starts with a /
, the argument is
treated as a full path to the file being built. Otherwise, the argument
is treated as the file’s name. The file’s metadata will be metadata
upon creation. The file’s metadata will be metadata
upon creation.
sourcefn get<Database>(
id: u32,
database: &Database
) -> Result<Option<File<Blocking<Database>, Self>>, Error>where
Database: Connection + Clone,
fn get<Database>(
id: u32,
database: &Database
) -> Result<Option<File<Blocking<Database>, Self>>, Error>where
Database: Connection + Clone,
Returns the file with the unique id
given, if found. This function
only loads metadata about the file, it does not load the contents of the
file.
sourcefn load<Database>(
path: &str,
database: &Database
) -> Result<Option<File<Blocking<Database>, Self>>, Error>where
Database: Connection + Clone,
fn load<Database>(
path: &str,
database: &Database
) -> Result<Option<File<Blocking<Database>, Self>>, Error>where
Database: Connection + Clone,
Returns the file located at path
, if found. This function
only loads metadata about the file, it does not load the contents of the
file.
sourcefn load_or_create<Database>(
path: &str,
expect_present: bool,
database: &Database
) -> Result<File<Blocking<Database>, Self>, Error>
fn load_or_create<Database>( path: &str, expect_present: bool, database: &Database ) -> Result<File<Blocking<Database>, Self>, Error>
Returns the file locate at path
, or creates an empty file if not
currently present.
If expect_present
is true, this function will first check for an
existing file before attempting to create the file. This parameter is
purely an optimization, and the function will work regardless of the
value. Pass true if you expect the file to be present a majority of the
time this function is invoked. For example, using this function to
retrieve a file created once and append to the same path in the future,
passing true will make this function slightly more optimized for the
most common flow.
Regardless whether expect_present
is true or false, this function will
proceed by attempting to create a file at path
, relying on BonsaiDb’s
ACID-compliance to notify of a conflict if another request succeeds
before this one. If a conflict occurs, this function will then attempt
to load the document. If the document has been deleted, the
Error::Deleted
will be returned.
sourcefn load_or_create_with_metadata<Database>(
path: &str,
metadata: Self::Metadata,
expect_present: bool,
database: &Database
) -> Result<File<Blocking<Database>, Self>, Error>where
Database: Connection + Clone,
fn load_or_create_with_metadata<Database>(
path: &str,
metadata: Self::Metadata,
expect_present: bool,
database: &Database
) -> Result<File<Blocking<Database>, Self>, Error>where
Database: Connection + Clone,
Returns the file locate at path
, or creates an empty file if not
currently present.
If expect_present
is true, this function will first check for an
existing file before attempting to create the file. This parameter is
purely an optimization, and the function will work regardless of the
value. Pass true if you expect the file to be present a majority of the
time this function is invoked. For example, using this function to
retrieve a file created once and append to the same path in the future,
passing true will make this function slightly more optimized for the
most common flow.
Regardless whether expect_present
is true or false, this function will
proceed by attempting to create a file at path
, relying on BonsaiDb’s
ACID-compliance to notify of a conflict if another request succeeds
before this one. If a conflict occurs, this function will then attempt
to load the document. If the document has been deleted, the
Error::Deleted
will be returned.
sourcefn delete<Database>(path: &str, database: &Database) -> Result<bool, Error>where
Database: Connection + Clone,
fn delete<Database>(path: &str, database: &Database) -> Result<bool, Error>where
Database: Connection + Clone,
Deletes the file at path
. Returns true if a file was deleted. Does not
error if the file is not found.
sourcefn list<Database>(
path: &str,
database: &Database
) -> Result<Vec<File<Blocking<Database>, Self>>, Error>where
Database: Connection + Clone,
fn list<Database>(
path: &str,
database: &Database
) -> Result<Vec<File<Blocking<Database>, Self>>, Error>where
Database: Connection + Clone,
Returns all files that have a containing path of exactly path
. It will
only return files that have been created, and will not return “virtual”
directories that are part of a file’s path but have never been created.
This function only loads metadata about the files, it does not load the contents of the files.
sourcefn list_recursive<Database>(
path: &str,
database: &Database
) -> Result<Vec<File<Blocking<Database>, Self>>, Error>where
Database: Connection + Clone,
fn list_recursive<Database>(
path: &str,
database: &Database
) -> Result<Vec<File<Blocking<Database>, Self>>, Error>where
Database: Connection + Clone,
Returns all files that have a path starting with path
.
This function only loads metadata about the files, it does not load the contents of the files.
sourcefn stats<Database>(database: &Database) -> Result<Statistics, Error>where
Database: Connection + Clone,
fn stats<Database>(database: &Database) -> Result<Statistics, Error>where
Database: Connection + Clone,
Returns statistics for all files contained within this collection. This
is equivalent to calling Self::stats_for_path
with "/"
for the
path.
sourcefn stats_for_path<Database>(
path: &str,
database: &Database
) -> Result<Statistics, Error>where
Database: Connection + Clone,
fn stats_for_path<Database>(
path: &str,
database: &Database
) -> Result<Statistics, Error>where
Database: Connection + Clone,
Returns statistics for all files whose path starts with path
.
sourcefn get_async<'life0, 'async_trait, Database>(
id: u32,
database: &'life0 Database
) -> Pin<Box<dyn Future<Output = Result<Option<File<Async<Database>, Self>>, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Database: 'async_trait + AsyncConnection + Clone,
Self: 'async_trait,
fn get_async<'life0, 'async_trait, Database>(
id: u32,
database: &'life0 Database
) -> Pin<Box<dyn Future<Output = Result<Option<File<Async<Database>, Self>>, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Database: 'async_trait + AsyncConnection + Clone,
Self: 'async_trait,
Returns the file with the unique id
given, if found. This function
only loads metadata about the file, it does not load the contents of the
file.
sourcefn load_async<'life0, 'life1, 'async_trait, Database>(
path: &'life0 str,
database: &'life1 Database
) -> Pin<Box<dyn Future<Output = Result<Option<File<Async<Database>, Self>>, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Database: 'async_trait + AsyncConnection + Clone,
Self: 'async_trait,
fn load_async<'life0, 'life1, 'async_trait, Database>(
path: &'life0 str,
database: &'life1 Database
) -> Pin<Box<dyn Future<Output = Result<Option<File<Async<Database>, Self>>, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Database: 'async_trait + AsyncConnection + Clone,
Self: 'async_trait,
Returns the file located at path
, if found. This function
only loads metadata about the file, it does not load the contents of the
file.
sourcefn load_or_create_async<'life0, 'life1, 'async_trait, Database>(
path: &'life0 str,
expect_present: bool,
database: &'life1 Database
) -> Pin<Box<dyn Future<Output = Result<File<Async<Database>, Self>, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self::Metadata: Default,
Database: 'async_trait + AsyncConnection + Clone,
Self: 'async_trait,
fn load_or_create_async<'life0, 'life1, 'async_trait, Database>(
path: &'life0 str,
expect_present: bool,
database: &'life1 Database
) -> Pin<Box<dyn Future<Output = Result<File<Async<Database>, Self>, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self::Metadata: Default,
Database: 'async_trait + AsyncConnection + Clone,
Self: 'async_trait,
Returns the file locate at path
, or creates an empty file if not
currently present.
If expect_present
is true, this function will first check for an
existing file before attempting to create the file. This parameter is
purely an optimization, and the function will work regardless of the
value. Pass true if you expect the file to be present a majority of the
time this function is invoked. For example, using this function to
retrieve a file created once and append to the same path in the future,
passing true will make this function slightly more optimized for the
most common flow.
Regardless whether expect_present
is true or false, this function will
proceed by attempting to create a file at path
, relying on BonsaiDb’s
ACID-compliance to notify of a conflict if another request succeeds
before this one. If a conflict occurs, this function will then attempt
to load the document. If the document has been deleted, the
Error::Deleted
will be returned.
sourcefn load_or_create_with_metadata_async<'life0, 'life1, 'async_trait, Database>(
path: &'life0 str,
metadata: Self::Metadata,
expect_present: bool,
database: &'life1 Database
) -> Pin<Box<dyn Future<Output = Result<File<Async<Database>, Self>, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Database: 'async_trait + AsyncConnection + Clone,
Self: 'async_trait,
fn load_or_create_with_metadata_async<'life0, 'life1, 'async_trait, Database>(
path: &'life0 str,
metadata: Self::Metadata,
expect_present: bool,
database: &'life1 Database
) -> Pin<Box<dyn Future<Output = Result<File<Async<Database>, Self>, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Database: 'async_trait + AsyncConnection + Clone,
Self: 'async_trait,
Returns the file locate at path
, or creates an empty file if not
currently present.
If expect_present
is true, this function will first check for an
existing file before attempting to create the file. This parameter is
purely an optimization, and the function will work regardless of the
value. Pass true if you expect the file to be present a majority of the
time this function is invoked. For example, using this function to
retrieve a file created once and append to the same path in the future,
passing true will make this function slightly more optimized for the
most common flow.
Regardless whether expect_present
is true or false, this function will
proceed by attempting to create a file at path
, relying on BonsaiDb’s
ACID-compliance to notify of a conflict if another request succeeds
before this one. If a conflict occurs, this function will then attempt
to load the document. If the document has been deleted, the
Error::Deleted
will be returned.
sourcefn delete_async<'life0, 'life1, 'async_trait, Database>(
path: &'life0 str,
database: &'life1 Database
) -> Pin<Box<dyn Future<Output = Result<bool, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Database: 'async_trait + AsyncConnection + Clone,
Self: 'async_trait,
fn delete_async<'life0, 'life1, 'async_trait, Database>(
path: &'life0 str,
database: &'life1 Database
) -> Pin<Box<dyn Future<Output = Result<bool, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Database: 'async_trait + AsyncConnection + Clone,
Self: 'async_trait,
Deletes the file at path
. Returns true if a file was deleted. Does not
error if the file is not found.
sourcefn list_async<'life0, 'life1, 'async_trait, Database>(
path: &'life0 str,
database: &'life1 Database
) -> Pin<Box<dyn Future<Output = Result<Vec<File<Async<Database>, Self>>, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Database: 'async_trait + AsyncConnection + Clone,
Self: 'async_trait,
fn list_async<'life0, 'life1, 'async_trait, Database>(
path: &'life0 str,
database: &'life1 Database
) -> Pin<Box<dyn Future<Output = Result<Vec<File<Async<Database>, Self>>, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Database: 'async_trait + AsyncConnection + Clone,
Self: 'async_trait,
Returns all files that have a containing path of exactly path
. It will
only return files that have been created, and will not return “virtual”
directories that are part of a file’s path but have never been created.
This function only loads metadata about the files, it does not load the contents of the files.
sourcefn list_recursive_async<'life0, 'life1, 'async_trait, Database>(
path: &'life0 str,
database: &'life1 Database
) -> Pin<Box<dyn Future<Output = Result<Vec<File<Async<Database>, Self>>, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Database: 'async_trait + AsyncConnection + Clone,
Self: 'async_trait,
fn list_recursive_async<'life0, 'life1, 'async_trait, Database>(
path: &'life0 str,
database: &'life1 Database
) -> Pin<Box<dyn Future<Output = Result<Vec<File<Async<Database>, Self>>, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Database: 'async_trait + AsyncConnection + Clone,
Self: 'async_trait,
Returns all files that have a path starting with path
.
This function only loads metadata about the files, it does not load the contents of the files.
sourcefn stats_async<'life0, 'async_trait, Database>(
database: &'life0 Database
) -> Pin<Box<dyn Future<Output = Result<Statistics, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Database: 'async_trait + AsyncConnection + Clone,
Self: 'async_trait,
fn stats_async<'life0, 'async_trait, Database>(
database: &'life0 Database
) -> Pin<Box<dyn Future<Output = Result<Statistics, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Database: 'async_trait + AsyncConnection + Clone,
Self: 'async_trait,
Returns statistics for all files contained within this collection. This
is equivalent to calling Self::stats_for_path_async
with "/"
for the
path.
sourcefn stats_for_path_async<'life0, 'life1, 'async_trait, Database>(
path: &'life0 str,
database: &'life1 Database
) -> Pin<Box<dyn Future<Output = Result<Statistics, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Database: 'async_trait + AsyncConnection + Clone,
Self: 'async_trait,
fn stats_for_path_async<'life0, 'life1, 'async_trait, Database>(
path: &'life0 str,
database: &'life1 Database
) -> Pin<Box<dyn Future<Output = Result<Statistics, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Database: 'async_trait + AsyncConnection + Clone,
Self: 'async_trait,
Returns statistics for all files whose path starts with path
.