1.1 KiB
1.1 KiB
POST3-003: Repository layer and Store API
Status: Done Priority: P0 Blocked by: POST3-002
Description
Implement the repository layer (raw SQL CRUD for each table) and the high-level Store API that orchestrates them with transactions and chunking logic.
Acceptance Criteria
repositories/buckets.rs— create, get_by_name, list, delete, is_emptyrepositories/objects.rs— upsert, get, delete, list (with prefix + pagination)repositories/blocks.rs— insert_block, get_all_blocks (ordered by block_index)repositories/metadata.rs— insert_batch, get_all (for an object_id)store.rs— Store struct with all public methods:- create_bucket, head_bucket, delete_bucket, list_buckets
- put_object (chunking + MD5 ETag + metadata, all in a transaction)
- get_object (reassemble blocks + fetch metadata)
- head_object, delete_object, list_objects_v2
- get_object_metadata
- put_object correctly splits body into 1 MiB blocks
- get_object correctly reassembles blocks in order
- Overwriting an object deletes old blocks+metadata via CASCADE
cargo check -p post3passes