CRUD — the four shapes of writes and one shape of read

Every entity supports create, read, update, delete. IDs are auto-generated as incrementing strings unless you pass one in. Updates are merge semantics — omitted fields keep their previous values and _version increments.

How it works

flowchart LR
    C["create({ name, email })"] --> R1["{ id: '1', name, email, _version: 1 }"]
    R1 --> U["update(id, { name: 'Bob' })"] --> R2["{ id: '1', name: 'Bob', email, _version: 2 }"]
    R2 --> D["delete(id)"] --> X[gone]
    R1 --> Q["read(id)"] --> R1
    X --> Q2["read(id)"] --> E[throws: not found]
    style R1 fill:#e8f5e9,stroke:#2e7d32
    style R2 fill:#fff3e0,stroke:#ef6c00
    style X  fill:#ffcdd2,stroke:#c62828
    style E  fill:#ffcdd2,stroke:#c62828
                

Try it — a four-step tour

  1. Click Create. A new user is inserted with the default JSON body; the form autofills the new id.
  2. Change age in the data box to 35 and click Update. The record's _version bumps to 2 and the record table shows the new value — email was untouched (merge semantics).
  3. Click Delete. Row removed. Click Read → you see an error.
  4. Click Seed 5 users in Quick actions, then switch entity to posts and Seed 5 posts. Use Clear current entity to wipe and start over.

Create / update record

Quick actions

Seed sample data

One click drops 5 records into the selected entity.

Cleanup

Records

IDDataActions

Automated test suite

Run all tests runs the CRUD lifecycle end-to-end in 6 steps:

  1. Create a user → returned object has an id
  2. Read it back → fields match
  3. Update only name → new name, original email preserved (merge)
  4. Delete the user
  5. Read the deleted user → throws not found
  6. List all users → returns an array
Click the button to run.

Log