RFC-20 Phase 1: Variable CRUD #21

Closed
opened 2026-05-30 05:35:53 +00:00 by xingyue · 0 comments
Owner

User Story

作为用户,我能用 CLI 创建一个 variable 绑定到 CAS node,查看、更新(schema 校验)、删除它。

测试步骤

准备:创建测试用 CAS 节点

  • Step 0: bootstrap + 创建 schema 和数据节点
    json-cas bootstrap
    json-cas schema put '{"type":"object","properties":{"name":{"type":"string"}}}'
    # 记录 schema hash → SCHEMA_HASH
    json-cas put <SCHEMA_HASH> '{"name":"hello"}'
    # 记录 data hash → HASH_A
    json-cas put <SCHEMA_HASH> '{"name":"world"}'
    # 记录 data hash → HASH_B
    

CRUD 验证

  • Step 1: create

    json-cas var create --scope uwf/thread/ --value <HASH_A>
    

    预期: 输出 JSON { "type": "<variable-schema-hash>", "value": { "id": "<ULID>", "scope": "uwf/thread/", "value": "<HASH_A>", "schema": "<SCHEMA_HASH>", ... } }

    • id 是 26 字符 ULID
    • schema 自动从 HASH_A 的 CAS 节点提取
    • created/updated 为当前时间戳
  • Step 2: get

    json-cas var get <ID>
    

    预期: 输出与 create 一致的 JSON 信封,字段值相同

  • Step 3: update(schema 一致)

    json-cas var update <ID> <HASH_B>
    

    预期: 输出更新后的 variable,value 变为 HASH_B,updated 时间戳更新,schema 不变

  • Step 4: update(schema 不一致)

    json-cas schema put '{"type":"object","properties":{"count":{"type":"integer"}}}'
    # 记录 → SCHEMA2_HASH
    json-cas put <SCHEMA2_HASH> '{"count":42}'
    # 记录 → HASH_C
    json-cas var update <ID> <HASH_C>
    

    预期: 输出 error JSON { "type": "<error-schema-hash>", "value": { "message": "schema mismatch", ... } },exit code 非零

  • Step 5: delete

    json-cas var delete <ID>
    

    预期: 输出被删除的 variable JSON

  • Step 6: get 已删除

    json-cas var get <ID>
    

    预期: error JSON,variable not found

Scope 校验

  • Step 7: scope 不以 / 结尾
    json-cas var create --scope uwf/thread --value <HASH_A>
    
    预期: error JSON,提示 scope 必须以 / 结尾

输出格式

  • Step 8: 所有输出都是 { type, value } 信封
    验证以上每一步的输出都是合法 JSON,顶层只有 type 和 value 两个 key,type 是 13 字符 CAS hash

验证完成标准

所有 checkbox 打勾
bun test 通过
bun run check 无 lint 错误

Ref: #20, #19

## User Story 作为用户,我能用 CLI 创建一个 variable 绑定到 CAS node,查看、更新(schema 校验)、删除它。 ## 测试步骤 ### 准备:创建测试用 CAS 节点 - [ ] **Step 0: bootstrap + 创建 schema 和数据节点** ```bash json-cas bootstrap json-cas schema put '{"type":"object","properties":{"name":{"type":"string"}}}' # 记录 schema hash → SCHEMA_HASH json-cas put <SCHEMA_HASH> '{"name":"hello"}' # 记录 data hash → HASH_A json-cas put <SCHEMA_HASH> '{"name":"world"}' # 记录 data hash → HASH_B ``` ### CRUD 验证 - [ ] **Step 1: create** ```bash json-cas var create --scope uwf/thread/ --value <HASH_A> ``` **预期:** 输出 JSON `{ "type": "<variable-schema-hash>", "value": { "id": "<ULID>", "scope": "uwf/thread/", "value": "<HASH_A>", "schema": "<SCHEMA_HASH>", ... } }` - id 是 26 字符 ULID - schema 自动从 HASH_A 的 CAS 节点提取 - created/updated 为当前时间戳 - [ ] **Step 2: get** ```bash json-cas var get <ID> ``` **预期:** 输出与 create 一致的 JSON 信封,字段值相同 - [ ] **Step 3: update(schema 一致)** ```bash json-cas var update <ID> <HASH_B> ``` **预期:** 输出更新后的 variable,value 变为 HASH_B,updated 时间戳更新,schema 不变 - [ ] **Step 4: update(schema 不一致)** ```bash json-cas schema put '{"type":"object","properties":{"count":{"type":"integer"}}}' # 记录 → SCHEMA2_HASH json-cas put <SCHEMA2_HASH> '{"count":42}' # 记录 → HASH_C json-cas var update <ID> <HASH_C> ``` **预期:** 输出 error JSON `{ "type": "<error-schema-hash>", "value": { "message": "schema mismatch", ... } }`,exit code 非零 - [ ] **Step 5: delete** ```bash json-cas var delete <ID> ``` **预期:** 输出被删除的 variable JSON - [ ] **Step 6: get 已删除** ```bash json-cas var get <ID> ``` **预期:** error JSON,variable not found ### Scope 校验 - [ ] **Step 7: scope 不以 / 结尾** ```bash json-cas var create --scope uwf/thread --value <HASH_A> ``` **预期:** error JSON,提示 scope 必须以 `/` 结尾 ### 输出格式 - [ ] **Step 8: 所有输出都是 `{ type, value }` 信封** 验证以上每一步的输出都是合法 JSON,顶层只有 type 和 value 两个 key,type 是 13 字符 CAS hash ## 验证完成标准 ✅ 所有 checkbox 打勾 ✅ `bun test` 通过 ✅ `bun run check` 无 lint 错误 Ref: #20, #19
This repo is archived. You cannot comment on issues.
No Label
1 Participants
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: uncaged/json-cas#21