- Adds a new lightweight key-value store server implemented in V.
- Includes basic CRUD operations (`set`, `get`, `delete`).
- Provides configurable host and operation restrictions for security.
- Offers middleware for logging and request validation.
- Supports incremental mode for automatic ID generation.
- Includes comprehensive documentation and example usage.
- Adds unit tests to ensure functionality and stability.
- Added a new documentation file explaining the Mycelium Streamer
example, covering setup, prerequisites, and execution.
- This provides users with clear instructions on how to use the
example project.
- Add worker registration to MyceliumStreamer: Allows for explicit
addition of workers, improving management and control.
- Simplify worker message handling: Streamlines message processing
for increased efficiency and readability. Removes unnecessary
logging and simplifies message routing.
- Remove redundant message handling: Eliminates duplicate code
paths for cleaner and more maintainable code.
- Improve worker data retrieval: Facilitates direct data retrieval
from workers, enhancing efficiency and reliability.
- Allow reading data directly from specific workers by specifying
their public key in `MyceliumStreamer.read()`. This improves
data retrieval flexibility and allows for distributed data access.
- Add master data reading to ensure data consistency and allow
comparison between master and worker data. This helps debug and
verify data replication.
- Implement JSON encoding/decoding for database transfer between
master and worker nodes. This enables efficient and structured
data exchange.
- Updated the master node to support multiple workers, allowing for
increased scalability and redundancy.
- Modified the worker node to simplify initialization and connection
to the master.
- Added logging statements for better monitoring and debugging.
- Removed unnecessary test data from `deduped_mycelium_master.vsh`.
- Simplified `MyceliumStreamer.listen()` to efficiently handle
incoming messages, removing redundant code and improving readability.
- Enhanced error handling in `MyceliumStreamer.listen()` for more robust
operation.
- Added worker ID to master and worker configurations for improved
identification and management.
- Implemented worker registration and data synchronization mechanisms
to enable distributed data access.
- Added a read function to retrieve data from specific workers,
enhancing data access flexibility.
- Improved logging for better monitoring and debugging of the system.
- Added continuous data writing and verification to the master node
to ensure data persistence and integrity.
- Simplified worker update handling in the `listen` function for
better efficiency and error handling. The previous implementation
had unnecessary complexity and potential for hangs.
- Changed Mycelium worker port to avoid conflict with master.
- Added debug print statements to Mycelium client for better troubleshooting.
- Removed unnecessary `SyncData` struct, simplifying data handling.
- Updated data encoding/decoding to directly use base64 for efficiency.
- Clarified message topic names for better understanding.
- Refactor database streamer to support multiple workers.
- Add master node to manage and distribute data updates.
- Implement worker nodes to receive and apply updates.
- Remove unnecessary slave node.
- Improve error handling and logging.
- Use base64 encoding for JSON compatibility in data transfer.
- Renamed the topic for database synchronization messages from
'db_sync' to 'sync_db' for clarity.
- Updated the Mycelium slave to decode base64 payload before
processing and to log received messages and their source.
- Added logging to the Mycelium streamer to track sent messages.
- Added a new feature to retrieve and log the last index from the
worker after syncing updates. This improves monitoring and
debugging capabilities.
- Refactor data synchronization logic to use Mycelium messages for
efficient updates between master and worker nodes. This removes
the previous inefficient polling method and simplifies the code.
- Update the slave node to receive and apply updates from the
master, improving synchronization efficiency and robustness.
- Change the default slave port to 9000.
- Rename `db` variable to `worker` for clarity.
- Introduces `MyceliumStreamer` for synchronizing data across a
Mycelium network, enabling distributed data access.
- Allows adding multiple worker nodes to the streamer for data
replication and redundancy.
- Provides `write` and `read` methods for seamless data
management across nodes.
- Added message reply functionality to both master and slave
nodes to enable a two-way communication flow for database
synchronization. This improves the robustness and reliability
of the database synchronization process.
- Enhanced the database synchronization process by allowing the
slave node to send the last inserted record ID to the master
node. This provides better tracking of data changes.
- Remove unnecessary public key printing in master node.
- Use variable for slave public key in master node.
- Add message receiving functionality to master node.
- Remove redundant sending logic from slave node.
- 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.