*/ class AudioRepository extends StorageRepository { /** * The name of the disk. * * @return string */ public function disk(): string { return Config::get(AudioConstants::DEFAULT_DISK_QUALIFIED); } /** * Return the callback to filter filesystem contents. * * @return Closure(StorageAttributes): bool */ protected function filterCallback(): Closure { return fn (StorageAttributes $file) => $file->isFile() && File::extension($file->path()) === 'ogg'; } /** * Map filesystem files to model. * * @return Closure(StorageAttributes): Audio */ protected function mapCallback(): Closure { return fn (StorageAttributes $file) => new Audio([ Audio::ATTRIBUTE_BASENAME => File::basename($file->path()), Audio::ATTRIBUTE_FILENAME => File::name($file->path()), Audio::ATTRIBUTE_MIMETYPE => MimeType::from($file->path()), Audio::ATTRIBUTE_PATH => $file->path(), Audio::ATTRIBUTE_SIZE => $file->offsetGet(StorageAttributes::ATTRIBUTE_FILE_SIZE), ]); } }