Add delete and remove operations for entry management
This commit is contained in:
34
README.md
34
README.md
@@ -43,6 +43,9 @@ engine.init("tenant_1")
|
||||
engine.save("tenant_1", "user_1", "config", {"theme": "dark", "lang": "en"})
|
||||
data = engine.load("tenant_1", "config")
|
||||
print(data) # {"theme": "dark", "lang": "en"}
|
||||
|
||||
# Delete an entry
|
||||
engine.delete("tenant_1", "user_1", "config")
|
||||
```
|
||||
|
||||
## Core Concepts
|
||||
@@ -135,6 +138,32 @@ if engine.exists("tenant_1", "config"):
|
||||
print("Entry exists")
|
||||
```
|
||||
|
||||
### Deletion Operations
|
||||
|
||||
```python
|
||||
# Delete an entire entry (removes from head, keeps history)
|
||||
deleted = engine.delete("tenant_1", "user_1", "config")
|
||||
# Returns True if entry existed, False otherwise
|
||||
|
||||
# Historical snapshots remain accessible by digest
|
||||
old_config = engine.load("tenant_1", "config", digest=history[0])
|
||||
|
||||
# Remove a specific key from an entry (Pattern 2)
|
||||
engine.put("tenant_1", "user_1", "users", "alice", {"name": "Alice", "role": "admin"})
|
||||
engine.put("tenant_1", "user_1", "users", "bob", {"name": "Bob", "role": "user"})
|
||||
|
||||
removed = engine.remove("tenant_1", "user_1", "users", "alice")
|
||||
# Returns True if key existed, False otherwise
|
||||
|
||||
# Entry still exists, only "alice" was removed
|
||||
all_users = engine.get("tenant_1", "users") # Returns only bob
|
||||
```
|
||||
|
||||
**Key differences:**
|
||||
- `delete()`: Removes entire entry from `head` file (works with both Pattern 1 and Pattern 2)
|
||||
- `remove()`: Removes a specific key from an entry, creates new snapshot (Pattern 2 only)
|
||||
- Both operations preserve historical snapshots in `objects/` directory
|
||||
|
||||
## Custom Serialization
|
||||
|
||||
MyDbEngine supports three approaches for custom serialization:
|
||||
@@ -271,6 +300,8 @@ engine.save("tenant_1", "user_1", "my_data", obj)
|
||||
| `put(tenant_id, user_id, entry, key, value) -> bool` | Add/update single record |
|
||||
| `put_many(tenant_id, user_id, entry, items) -> bool` | Add/update multiple records |
|
||||
| `get(tenant_id, entry, key=None, digest=None) -> object` | Get record(s) |
|
||||
| `delete(tenant_id, user_id, entry) -> bool` | Delete entire entry from head (keeps history) |
|
||||
| `remove(tenant_id, user_id, entry, key) -> bool` | Remove specific key from entry (Pattern 2) |
|
||||
| `exists(tenant_id, entry) -> bool` | Check if entry exists |
|
||||
|
||||
### History
|
||||
@@ -350,4 +381,5 @@ See LICENSE file for details.
|
||||
## Version History
|
||||
* 0.1.0 - Initial release
|
||||
* 0.2.0 - Added custom reference handlers
|
||||
* 0.2.1 - A handler can only be registered once
|
||||
* 0.2.1 - A handler can only be registered once
|
||||
* 0.3.0 - Added delete() and remove()
|
||||
Reference in New Issue
Block a user