Initial Dever 0.0.1
This commit is contained in:
commit
81233d098c
1479 files changed
+163782
No files matched your search
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"database": { "default": { "type": "sqlite", "path": "data/jobs.db" } },
|
||||
"runtime": { "mode": "worker", "shutdown_ms": 30000 },
|
||||
"job": {
|
||||
"workers": 1,
|
||||
"poll_ms": 1000,
|
||||
"lease_ms": 60000,
|
||||
"retry_base_ms": 1000,
|
||||
"retry_max_ms": 300000
|
||||
},
|
||||
"log": { "level": "info" }
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
# 归档任务
|
||||
|
||||
按请求键入队任务并保存归档记录。
|
||||
|
||||
- [归档命令](doc/api.md)
|
||||
- [业务操作](doc/app.md)
|
||||
- [任务](doc/job.md)
|
||||
- [数据结构](doc/model.md)
|
||||
- [调用流程](link.md)
|
||||
@@ -0,0 +1,3 @@
|
||||
cmd submit = app.submit
|
||||
|
||||
cmd total = app.total
|
||||
@@ -0,0 +1,21 @@
|
||||
type Request {
|
||||
key: Text
|
||||
title: Text
|
||||
}
|
||||
|
||||
submit(input: Request) (id: Id) {
|
||||
id = dever.job.enqueue(job.store, input, input.key)
|
||||
}
|
||||
|
||||
store(input: Request) () {
|
||||
stored = model.create(
|
||||
{
|
||||
request_key = input.key
|
||||
title = input.title
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
total() (count: Int) {
|
||||
count = model.count()
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
# 归档命令
|
||||
|
||||
## report.archive.api.submit
|
||||
|
||||
使用请求键入队归档任务。
|
||||
|
||||
## report.archive.api.total
|
||||
|
||||
读取归档记录数。
|
||||
@@ -0,0 +1,17 @@
|
||||
# 业务操作
|
||||
|
||||
## report.archive.Request
|
||||
|
||||
归档请求的幂等键和标题。
|
||||
|
||||
## report.archive.submit
|
||||
|
||||
使用 input.key 入队归档任务,返回任务编号;相同键不会重复入队。
|
||||
|
||||
## report.archive.store
|
||||
|
||||
保存请求键和标题,供归档 Job 调用。
|
||||
|
||||
## report.archive.total
|
||||
|
||||
返回已保存的归档记录数。
|
||||
@@ -0,0 +1,5 @@
|
||||
# 任务
|
||||
|
||||
## report.archive.job.store
|
||||
|
||||
执行归档,最多执行 3 次(含首次),单次期限 30 秒。
|
||||
@@ -0,0 +1,5 @@
|
||||
# 数据结构
|
||||
|
||||
## report.archive.model.Archive
|
||||
|
||||
归档记录,请求键唯一。
|
||||
@@ -0,0 +1,5 @@
|
||||
database default
|
||||
|
||||
job store(input: app.Request) () retry(3) timeout(30000) {
|
||||
app.store(input)
|
||||
}
|
||||
@@ -0,0 +1,206 @@
|
||||
<!-- Generated by dever inspect --links. Do not edit. -->
|
||||
<!-- source-sha256: eb439b9c77c2bf6e0d55e26f5ad1b2a024bc2783baebddb3756d892621724e0c -->
|
||||
|
||||
# report.archive
|
||||
|
||||
按求值顺序展示调用、分支和任务调度,包含 API 与自动 REST 入口。点击节点打开源码;双框为调用,虚线为调度或错误路径。外部库和驱动不展开。
|
||||
|
||||
图不是某次运行的日志,分句和 Adapter 按输入或配置选择。修改源码后运行 `dever inspect . --links`。
|
||||
|
||||
## 入口
|
||||
|
||||
- CMD [report.archive.api.submit](api.dever#L1) → [report.archive.submit](app.dever#L6)
|
||||
- CMD [report.archive.api.total](api.dever#L3) → [report.archive.total](app.dever#L19)
|
||||
- Job [report.archive.job.store](job.dever#L3)
|
||||
|
||||
## 外部调用方
|
||||
|
||||
当前加载的源码中没有已收录的外部调用。
|
||||
|
||||
## 能力与内部调用
|
||||
|
||||
### report.archive.Request
|
||||
|
||||
定义:[app.dever:1:1](app.dever#L1,1)
|
||||
|
||||
没有已收录的下游调用。
|
||||
|
||||
### report.archive.api.submit
|
||||
|
||||
定义:[api.dever:1:1](api.dever#L1,1)
|
||||
|
||||
<a id="flow-e67830c6d0f7d77d-1"></a>
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
n0(["report.archive.api.submit"])
|
||||
click n0 href "api.dever#L1,14" "打开源码"
|
||||
n1[["report.archive.submit"]]
|
||||
click n1 href "api.dever#L1,14" "打开源码"
|
||||
n2(["返回命令结果;未捕获错误终止命令"])
|
||||
n0 --> n1
|
||||
n1 --> n2
|
||||
```
|
||||
|
||||
<details>
|
||||
<summary>源码与子流程</summary>
|
||||
|
||||
| 节点 | 源码 | 子流程 |
|
||||
| --- | --- | --- |
|
||||
| report.archive.submit | [api.dever:1:14](api.dever#L1,14) | [report.archive.submit](link.md#flow-efc65eed6c9089ab-1) |
|
||||
|
||||
</details>
|
||||
|
||||
| 目标 | 归属 | 方式 | 调用位置 |
|
||||
| --- | --- | --- | --- |
|
||||
| [report.archive.submit](app.dever#L6) | 领域内 | CMD 绑定 | [api.dever:1:14](api.dever#L1,14) |
|
||||
|
||||
### report.archive.api.total
|
||||
|
||||
定义:[api.dever:3:1](api.dever#L3,1)
|
||||
|
||||
<a id="flow-72cad6bf19cb8c40-1"></a>
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
n0(["report.archive.api.total"])
|
||||
click n0 href "api.dever#L3,13" "打开源码"
|
||||
n1[["report.archive.total"]]
|
||||
click n1 href "api.dever#L3,13" "打开源码"
|
||||
n2(["返回命令结果;未捕获错误终止命令"])
|
||||
n0 --> n1
|
||||
n1 --> n2
|
||||
```
|
||||
|
||||
<details>
|
||||
<summary>源码与子流程</summary>
|
||||
|
||||
| 节点 | 源码 | 子流程 |
|
||||
| --- | --- | --- |
|
||||
| report.archive.total | [api.dever:3:13](api.dever#L3,13) | [report.archive.total](link.md#flow-b00d0e9bba4b635b-1) |
|
||||
|
||||
</details>
|
||||
|
||||
| 目标 | 归属 | 方式 | 调用位置 |
|
||||
| --- | --- | --- | --- |
|
||||
| [report.archive.total](app.dever#L19) | 领域内 | CMD 绑定 | [api.dever:3:13](api.dever#L3,13) |
|
||||
|
||||
### report.archive.job.store
|
||||
|
||||
定义:[job.dever:3:1](job.dever#L3,1)
|
||||
|
||||
<a id="flow-3208caa5c17a4976-1"></a>
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
n0(["store"])
|
||||
click n0 href "job.dever#L3,1" "打开源码"
|
||||
n1(["返回"])
|
||||
n3[["report.archive.store"]]
|
||||
click n3 href "job.dever#L4,3" "打开源码"
|
||||
n0 --> n3
|
||||
n3 --> n1
|
||||
```
|
||||
|
||||
<details>
|
||||
<summary>源码与子流程</summary>
|
||||
|
||||
| 节点 | 源码 | 子流程 |
|
||||
| --- | --- | --- |
|
||||
| report.archive.store | [job.dever:4:3](job.dever#L4,3) | [report.archive.store](link.md#flow-73a6995d7ee43f96-1) |
|
||||
|
||||
</details>
|
||||
|
||||
| 目标 | 归属 | 方式 | 调用位置 |
|
||||
| --- | --- | --- | --- |
|
||||
| [report.archive.store](app.dever#L10) | 领域内 | 调用 | [job.dever:4:3](job.dever#L4,3) |
|
||||
|
||||
### report.archive.model.Archive
|
||||
|
||||
定义:[model.dever:1:1](model.dever#L1,1)
|
||||
|
||||
没有已收录的下游调用。
|
||||
|
||||
### report.archive.store
|
||||
|
||||
定义:[app.dever:10:1](app.dever#L10,1)
|
||||
|
||||
<a id="flow-73a6995d7ee43f96-1"></a>
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
n0(["store"])
|
||||
click n0 href "app.dever#L10,1" "打开源码"
|
||||
n1(["返回"])
|
||||
n3["report.archive.model.create"]
|
||||
click n3 href "app.dever#L11,12" "打开源码"
|
||||
n4["赋值 stored"]
|
||||
click n4 href "app.dever#L11,12" "打开源码"
|
||||
n0 --> n3
|
||||
n3 --> n4
|
||||
n4 --> n1
|
||||
```
|
||||
|
||||
| 目标 | 归属 | 方式 | 调用位置 |
|
||||
| --- | --- | --- | --- |
|
||||
| [report.archive.model.create](model.dever#L1) | 领域内 | 内建操作 | [app.dever:11:12](app.dever#L11,12) |
|
||||
|
||||
### report.archive.submit
|
||||
|
||||
定义:[app.dever:6:1](app.dever#L6,1)
|
||||
|
||||
<a id="flow-efc65eed6c9089ab-1"></a>
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
n0(["submit"])
|
||||
click n0 href "app.dever#L6,1" "打开源码"
|
||||
n1(["返回"])
|
||||
n3["持久化任务入队"]
|
||||
click n3 href "app.dever#L7,8" "打开源码"
|
||||
n4[["Job:report.archive.job.store"]]
|
||||
click n4 href "app.dever#L7,8" "打开源码"
|
||||
n5["赋值 id"]
|
||||
click n5 href "app.dever#L7,8" "打开源码"
|
||||
n0 --> n3
|
||||
n3 -.->|"由 Worker 后续调度,不等待执行"| n4
|
||||
n3 --> n5
|
||||
n5 --> n1
|
||||
```
|
||||
|
||||
<details>
|
||||
<summary>源码与子流程</summary>
|
||||
|
||||
| 节点 | 源码 | 子流程 |
|
||||
| --- | --- | --- |
|
||||
| Job:report.archive.job.store | [app.dever:7:8](app.dever#L7,8) | [report.archive.job.store](link.md#flow-3208caa5c17a4976-1) |
|
||||
|
||||
</details>
|
||||
|
||||
| 目标 | 归属 | 方式 | 调用位置 |
|
||||
| --- | --- | --- | --- |
|
||||
| [report.archive.job.store](job.dever#L3) | 领域内 | 入队 | [app.dever:7:26](app.dever#L7,26) |
|
||||
|
||||
### report.archive.total
|
||||
|
||||
定义:[app.dever:19:1](app.dever#L19,1)
|
||||
|
||||
<a id="flow-b00d0e9bba4b635b-1"></a>
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
n0(["total"])
|
||||
click n0 href "app.dever#L19,1" "打开源码"
|
||||
n1(["返回"])
|
||||
n3["report.archive.model.count"]
|
||||
click n3 href "app.dever#L20,11" "打开源码"
|
||||
n4["赋值 count"]
|
||||
click n4 href "app.dever#L20,11" "打开源码"
|
||||
n0 --> n3
|
||||
n3 --> n4
|
||||
n4 --> n1
|
||||
```
|
||||
|
||||
| 目标 | 归属 | 方式 | 调用位置 |
|
||||
| --- | --- | --- | --- |
|
||||
| [report.archive.model.count](model.dever#L1) | 领域内 | 内建操作 | [app.dever:20:11](app.dever#L20,11) |
|
||||
@@ -0,0 +1,4 @@
|
||||
type Archive {
|
||||
request_key: Text unique
|
||||
title: Text
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
queued() () {
|
||||
request = app.Request {
|
||||
key = "test-report"
|
||||
title = "Report"
|
||||
}
|
||||
first_id = app.submit(request)
|
||||
assertEq(app.submit(request), first_id)
|
||||
assertEq(dever.test.drainJobs(5), 1)
|
||||
assertEq(app.total(), 1)
|
||||
dever.test.advanceClock(1000)
|
||||
assertEq(dever.test.drainJobs(5), 0)
|
||||
}
|
||||
Reference in new issue
Block a user