- Added `deduped_mycelium_master.vsh` to demonstrate a master node
sending data.
- Added `deduped_mycelium_slave.vsh` to demonstrate a slave node
receiving data. These scripts showcase basic inter-node
communication using the Mycelium library.
- Add `find_last_entry` function to efficiently determine the
highest used ID in the lookup table, improving performance
for non-incremental databases.
- Implement deleted record handling using a special marker,
allowing for efficient tracking and synchronization of
deleted entries.
- Enhance `get_last_index` to handle both incremental and
non-incremental modes correctly, providing a unified
interface for retrieving the last index.
- Modify `push_updates` to correctly handle initial syncs and
account for deleted records during synchronization.
- Update `sync_updates` to correctly handle empty update data,
indicating a record deletion.
- Add comprehensive tests for database synchronization, including
edge cases like empty updates, invalid data, and various
scenarios with deleted records.
- Added tests to verify directory listing functionality after
creating and moving directories.
- Improved test coverage for file operations within directories.
- Ensured tests accurately reflect the updated behavior of
`dir_list` function.
- Return FSEntry from `rename` and `copy` operations in VFS
to provide more information about the result. This allows
access to metadata after a successful rename or copy.
- Update `LocalVFS` and `NestedVFS` implementations to return
the appropriate FSEntry objects after successful rename and
copy operations.
- Refactor `Directory.copy()` to use a struct for arguments,
improving readability and maintainability.
- Add comprehensive error handling to `Directory.copy()`,
preventing unexpected failures and providing informative error
messages. This includes handling cases where the source is not
a directory, or a source and destination path are the same.
- Implement recursive copying of directory contents, including files
and symlinks.
- Add unit tests to cover the new `copy` functionality and error
handling.
- Update `OurDBVFS.copy()` to utilize the improved `Directory.copy()`
method and add input validation.
- Add `move`, `copy`, and `rename` methods to `Directory` and `File`
for improved file system management.
- Refactor `move` operation in `Directory` for better error handling and
support for recursive directory moves. Improves robustness and
clarity of the move operation.
- Implement a `MoveDirArgs` struct to improve the clarity and
maintainability of the `move` function arguments.
- Remove unnecessary `save()` calls for improved performance.
- Add comprehensive tests for the new and improved file system
operations. Ensures reliability and correctness of the added
functionality.
- Added `rename` method to `Directory` struct to rename files and
directories, updating metadata and timestamps. This improves
file management capabilities.
- Added `rename` method to `OurDBVFS` to provide a unified
interface for renaming files and directories across the VFS. This
allows for consistent file system operations.
- Added tests for the new rename functionality in `vfsourdb_test.v`
to ensure correctness and robustness. This enhances confidence in
the implementation.
- Added `move` operation to `Directory` to rename files and
directories within the same directory. This improves
file management capabilities.
- Updated `VFS` interface to include `move` function with
FSEntry return type for consistency. This allows for
retrieving metadata of the moved file/directory.
- Implemented `move` operation for `LocalVFS`, `OurDBVFS`, and
`NestedVFS`. This provides consistent file move
functionality across different VFS implementations.
- Added tests for the new move functionality in
`vfsourdb_test.v`. This ensures the correct behavior of the
new feature.
- Remove unnecessary debug print statements in VFS and WebDAV
middleware for cleaner code.
- Fix a bug in `OurDBVFS.exists` to correctly handle root and
current directory paths.
- Enhance `OurDBVFS.get_entry` to handle '.' path correctly.
- Improve WebDAV authentication middleware to gracefully handle
unauthenticated requests.
- Added basic WebDAV functionality for interacting with the
underlying VFS.
- Created unit tests to verify WebDAV methods.
- Improved OurDBFS implementation by adding skip attribute to
myvfs field.
- Removed unnecessary dependencies and improved code structure in `webdav` module.
- Updated VFS configuration to use global VFS instance for WebDAV app.
- Renamed example VFS file to reflect WebDAV functionality.
- Removed redundant code and simplified app initialization.
- Used the vfs interface to interact with files and dirs.
- Add `move` operation to the VFS interface and implementations.
This allows for moving files and directories within the VFS.
- Add `is_dir`, `is_file`, and `is_symlink` methods to the
`FSEntry` interface and implementations. This allows for
robust file type checking before performing operations.
- Use a counter for consistent ID generation in OurDBFS: This
eliminates reliance on timestamps, preventing ID collisions and
improving data integrity.
- Refactor save methods to directly use the VFS's save_entry
function: This simplifies the code and reduces redundancy across
different file system entity types (Directory, File, Symlink).
- Update `save_entry` in OurDBFS to use IDs for database updates:
This ensures data is correctly updated in the database based on the
unique ID of each entry. This also fixes potential issues with
overwriting data.
- Add user authentication to the WebDAV server using a user
database.
- Implement encoding and decoding functionality for directories,
files, and symlinks in the OurDBFS VFS.
- Add comprehensive unit tests for the encoder and decoder
functions.
- Improve the OurDBFS factory method to handle directory creation
more robustly using pathlib.
- Add `delete` and `link_delete` methods to the `NestedVFS` and
`OurDBVFS` implementations (though currently unimplemented).
- Improve WebDAV file handling to correctly determine and set the
content type. The previous implementation was incomplete and
returned a dummy response.
- Update VFS test to actually test functionality.
- Remove unnecessary `root_dir` parameter from the WebDAV app.
- Fixed ID generation for files and directories in OurDBFS,
preventing collisions and improving data integrity. This
ensures that IDs are consistently and uniquely assigned.
- Updated save methods to correctly update the `metadata.id`
field across all FSEntry types (File, Directory, Symlink).
This change solves a previous issue where IDs weren't being
properly persisted.
- Added incremental mode to OurDB, improving performance for
large datasets. This allows for more efficient updates
instead of full overwrites.