- Introduced `addManagedListener` function to handle event listeners with automatic cleanup.
- Updated event listeners for various filter controls to use the new management function.
- Added lifecycle signal support for event listeners to ensure proper disposal.
- Implemented cleanup logic to remove event listeners when no longer needed.
---
Update database schema handling to support async operations
- Changed `db.has_table` to `db.ahas_table` for async compatibility.
- Updated related database checks to use the new async method.
---
Refactor SQLite adapter to prioritize async operations
- Transitioned public API to expose async methods as primary.
- Removed synchronous methods and replaced them with async counterparts.
- Updated internal transaction handling to support async context management.
- Enhanced error handling and logging for async operations.
---
Add async support for FFProbe tool
- Implemented `aread` and `aread_batch` methods for asynchronous metadata reading.
- Utilized asyncio subprocess for non-blocking execution of ffprobe commands.
---
Enhance IndexScanner with I/O throttling
- Introduced `SCAN_IOPS_LIMIT` to control I/O operations during directory scans.
- Implemented pacing logic to manage scan I/O operations effectively.
---
Update MetadataService to utilize async reading methods
- Refactored methods to call async variants of exif and ffprobe reading.
- Improved error handling for async operations.
---
Implement path resolution checks in asset routes
- Added `_is_resolved_path_allowed` function to enforce allowed roots for file paths.
- Updated asset route handlers to validate resolved paths against allowed roots.
---
Refactor database maintenance routes for async handling
- Changed database close operations to use async `aclose` method.
- Updated error handling during database maintenance operations.
---
Update scan routes to utilize async database vacuuming
- Replaced synchronous database vacuum calls with async `avacuum` method.
---
Modify tests to support async database operations
- Updated test examples to use async context management for database interactions.
- Refactored integration tests to ensure proper async cleanup of database connections.
- Adjusted regression tests to count async transaction invocations correctly.