datafold 0.1.27

A personal database for data sovereignty with AI-powered ingestion and S3 support
Documentation
# DynamoDB Readable JSON Storage - Demo Results

## ✅ Successfully Changed from Binary to JSON String Storage!

### What We Did
Changed the DynamoDB `Value` field from `AttributeValue::B` (binary) to `AttributeValue::S` (string) in `src/storage/dynamodb_backend.rs`.

### Test Results

#### 1. Written Data
- ✅ Atom: `atom:demo-atom-1764713939`
- ✅ Molecule: `ref:demo-mol-1764713940`

#### 2. Stored Format
Both items are stored in DynamoDB as **plain JSON strings** in the `Value` field.

#### 3. Atom Data (Human Readable!)
```json
{
  "uuid": "demo-atom-1764713939",
  "content": {
    "message": "This JSON is HUMAN READABLE in DynamoDB console!",
    "author": "Demo User",
    "timestamp": "2024-12-02T22:00:00Z"
  },
  "pub_key": "demo-key-123",
  "source_file_name": "demo.json",
  "schema_name": "demo_schema"
}
```

#### 4. Molecule Data (Human Readable!)
```json
{
  "uuid": "demo-mol-1764713940",
  "atom_uuids": {
    "user1": "demo-atom-1764713939",
    "user2": "atom-xyz"
  },
  "pub_key": "demo-key-123"
}
```

### How to View in AWS Console

1. Go to AWS Console → DynamoDB → Tables
2. Select `DataFoldStorage-main`
3. Click "Explore table items"
4. Find the items with these keys:
   - `PK: default:atom:demo-atom-1764713939`
   - `PK: default:ref:demo-mol-1764713940`
5. **Look at the `Value` field - it's readable JSON!**

### Before vs After

| Aspect | Before (Binary) | After (JSON String) |
|--------|----------------|---------------------|
| **Storage Type** | `AttributeValue::B` | `AttributeValue::S` |
| **Console View** | `<Binary>` or base64 blob | Full JSON visible |
| **Debuggable** | ❌ No | ✅ Yes |
| **Performance** | Same | Same |
| **AWS CLI** | Need base64 decode | Direct `jq` access |

### Benefits

✅ **Human-readable** - Can see all data directly in console  
✅ **Debuggable** - Easy to verify data correctness  
✅ **No decoding needed** - Direct access with `jq`  
✅ **Same performance** - DynamoDB treats strings and binary identically  
✅ **Developer friendly** - Easier troubleshooting  

### Code Changes

Files modified:
- `src/storage/dynamodb_backend.rs` - All put/get/scan operations

Key changes:
```rust
// BEFORE
.item("Value", AttributeValue::B(value.clone().into()))

// AFTER  
let json_str = String::from_utf8(value.clone())?;
.item("Value", AttributeValue::S(json_str))
```

### Testing

Run the demo script:
```bash
./demo_readable_json.sh
```

This will:
1. Create the DataFoldStorage-main table (if needed)
2. Write test atom and molecule data
3. Read and display the data as pretty-printed JSON
4. Show you how to view it in AWS console

---

**Result: All DynamoDB data is now human-readable! 🎉**