MediaScanner

Struct MediaScanner 

Source
pub struct MediaScanner { /* private fields */ }
Expand description

Media scanner that uses the file system manager and database for efficient scanning

Implementations§

Source§

impl MediaScanner

Source

pub async fn new() -> Result<Self>

Create a new media scanner with platform-specific file system manager

Source

pub fn with_database(database_manager: Arc<dyn DatabaseManager>) -> Self

Create a new media scanner with database manager

Source

pub async fn scan_directory_simple( &self, directory: &Path, ) -> Result<Vec<MediaFile>>

Simple directory scan that returns files without database operations

Source

pub async fn scan_directory_recursively_simple( &self, directory: &Path, ) -> Result<Vec<MediaFile>>

Simple recursive directory scan that returns files without database operations

Source

pub fn with_filesystem_manager( filesystem_manager: Box<dyn FileSystemManager>, database_manager: Arc<dyn DatabaseManager>, ) -> Self

Create a media scanner with a custom file system manager (for testing)

Source

pub async fn scan_directory(&self, directory: &Path) -> Result<ScanResult>

Perform a full scan of a directory, updating the database with new/changed files

Source

pub async fn scan_directories( &self, directories: &[PathBuf], ) -> Result<ScanResult>

Scan multiple directories and return combined results

Source

pub async fn scan_directory_recursive( &self, directory: &Path, ) -> Result<ScanResult>

Perform a recursive scan of a directory and its subdirectories

This method is optimized to avoid N+1 query problems by loading all existing files from the database once at the start, then passing this collection down to each directory scan. This significantly improves performance for large directory structures.

The method also implements batch processing to handle very large directory structures efficiently without blocking the async runtime.

Source

pub fn filesystem_manager(&self) -> &dyn FileSystemManager

Get the file system manager (for testing or advanced usage)

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<A, B, T> HttpServerConnExec<A, B> for T
where B: Body,