fix docs and todo
This commit is contained in:
25
TODO.md
25
TODO.md
@@ -12,8 +12,8 @@ This tracks the rewrite from Zig to Odin and remaining features.
|
||||
- [x] Core types (dynamodb/types.odin)
|
||||
- [x] Key codec with varint encoding (key_codec/key_codec.odin)
|
||||
- [x] Main entry point with arena pattern demo
|
||||
- [x] LICENSE file
|
||||
- [x] .gitignore
|
||||
- [x] HTTP Server Scaffolding
|
||||
|
||||
## 🚧 In Progress (Need to Complete)
|
||||
|
||||
@@ -23,7 +23,7 @@ This tracks the rewrite from Zig to Odin and remaining features.
|
||||
- Parse `{"S": "value"}` format
|
||||
- Serialize AttributeValue to DynamoDB JSON
|
||||
- Parse request bodies (PutItem, GetItem, etc.)
|
||||
|
||||
|
||||
- [ ] **item_codec/item_codec.odin** - Binary TLV encoding for items
|
||||
- Encode Item to binary TLV format
|
||||
- Decode binary TLV back to Item
|
||||
@@ -50,7 +50,7 @@ This tracks the rewrite from Zig to Odin and remaining features.
|
||||
- Read JSON bodies
|
||||
- Send HTTP responses with headers
|
||||
- Keep-alive support
|
||||
- Options:
|
||||
- Options (Why we haven't checked this off yet, we need to make sure we chose the right option as the project grows, might make more sense to impliment different option):
|
||||
- Use `core:net` directly
|
||||
- Use C FFI with libmicrohttpd
|
||||
- Use Odin's vendor:microui (if suitable)
|
||||
@@ -69,6 +69,23 @@ This tracks the rewrite from Zig to Odin and remaining features.
|
||||
- ADD operations
|
||||
- DELETE operations
|
||||
|
||||
### Replication Support (Priority 4)
|
||||
|
||||
- [ ] **Build C++ Shim in order to use RocksDB's WAL replication helpers**
|
||||
- [ ] **Add configurator to set instance as a master or slave node and point to proper Target and Destination IPs**
|
||||
- [ ] **Leverage C++ helpers from shim**
|
||||
|
||||
### Subscribe To Changes Feature (Priority LAST [But keep in mind because semantics we decide now will make this easier later])
|
||||
|
||||
- [ ] **Best-effort notifications (Postgres-ish LISTEN/NOTIFY [in-memory pub/sub fanout. If you’re not connected, you miss it.])**
|
||||
- Add an in-process “event bus” channels: table-wide, partition-key, item-key, “all”.
|
||||
- When putItem/deleteItem/updateItem/createTable/... commits successfully publish {op, table, key, timestamp, item?}
|
||||
|
||||
- [ ] **Durable change streams (Mongo-ish [append every mutation to a persistent log and let consumers read it with resume tokens.])**
|
||||
- Create a “changelog” keyspace
|
||||
- Generate a monotonically increasing sequence by using a stable Per-partition sequence cursor
|
||||
- Expose via an API (I prefer publishing to MQTT or SSE)
|
||||
|
||||
## 📋 Testing
|
||||
|
||||
- [ ] Unit tests for key_codec
|
||||
@@ -182,5 +199,5 @@ make test
|
||||
make run
|
||||
|
||||
# Test with AWS CLI
|
||||
aws dynamodb list-tables --endpoint-url http://localhost:8000
|
||||
aws dynamodb list-tables --endpoint-url http://localhost:8002
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user