- 移除 TodoItem 中的 priority、created_at 和 updated_at 字段 - 强制每个任务都必须有唯一 id,且由用户负责生成 - 修改合并模式逻辑,merge=true 下保留未提及的旧任务 - 支持已完成和已取消任务重新激活(状态改回 pending 或 in_progress) - 禁止 in_progress 状态退回到 pending,必须标记为 completed 或 cancelled - 优化状态转换校验,允许特定状态间合法切换 - 简化任务变更消息,移除详细的新增/更新/移除统计 - 更新文档和示例,明确 id 必须由用户生成和使用 - 修复和补充测试,增强状态转换和合并模式验证 - 调整任务时间戳生成逻辑,统一使用当前时间及索引 - 该变更提供更合理的任务状态机械及管理模式,提升稳定性和易用性
2.9 KiB
2.9 KiB
apps +db-execute
经妙搭服务端在应用数据库执行 SQL。运行时命令事实以 lark-cli apps +db-execute --help 为准。
何时用
用于通过妙搭服务端执行应用数据库 SQL。不要从环境变量里取连接串裸连数据库;本地调试也走这个 shortcut。
命令骨架
- 必填:
--app-id,以及--sql/--file二选一(互斥)。 --sql:内联 SQL 文本;传-时从 stdin 读。绝对路径文件经 stdin 传入:--sql - < <absolute-path>(shell 解析路径,CLI 仅接收内容)。--file:.sql文件路径,需为工作目录内的相对路径(如--file ./migration.sql);绝对路径、或经../符号链接越出工作目录的路径会被拒绝。文件不在工作目录内时,改用--sql - < <文件路径>经 stdin 传入。--env枚举:dev/online,默认dev;需要操作线上环境数据库时,显式指定--env online。- risk 是
high-risk-write(SQL 可含 DML/DDL):任何执行都需--yes,否则返回confirmation_required/ exit 10。--dry-run预览不需要--yes。 - CLI 永远传
transactional=false;不默认包事务。
示例
lark-cli apps +db-execute --app-id app_xxx --env dev --sql "select * from orders limit 5" --yes
lark-cli apps +db-execute --app-id app_xxx --env dev --file ./migration.sql --dry-run
# 绝对路径文件 / cwd 不固定:经 stdin 传入
lark-cli apps +db-execute --app-id app_xxx --env dev --sql - --yes < /Users/.../migrations/0001_init.sql
输出契约
- 成功默认 JSON 读取
data.results[];每个元素对应一条 SQL,常见字段有sql_type、data、record_count、affected_rows。 - pretty 会按 SELECT/DML/DDL 自适应渲染;多语句会逐条显示 Statement 摘要。
- 失败可能仍有前序语句已执行;此时 stdout 输出
ok:false的 envelope(exit 非 0),从data读results[](全部逐条结果,失败语句sql_type为ERROR)、statement_index、error_code、error_message、rolled_back和note,决定从哪条继续。
Agent 规则
- 该命令为 high-risk-write,执行一律需
--yes;无--yes会返回confirmation_required/ exit 10。- 只读查询、以及不删除/不丢失既有数据且可撤回的语句:已授权时可直接带
--yes执行。 - 会删除或丢失既有数据、或难以撤回的语句:先
--dry-run预览(无需--yes),向用户确认后再带--yes执行;不要在用户不知情时自动补--yes。
- 只读查询、以及不删除/不丢失既有数据且可撤回的语句:已授权时可直接带
- 多语句失败时,失败前的语句可能已经 auto-commit。不要整批重跑;按错误 detail/hint 修失败语句,并从剩余语句继续。
- 如果需要原子性,让用户在 SQL 内显式写
BEGIN/COMMIT,不要假设 CLI 会包事务。 - 不要把数据库连接串从 env 中取出来裸连。