1. 段落
1.1. 段落说明
1.1.1. 段落定义
段落是一个笔记中的一个代码片段,由多个语句构成,来共同完成特定的数据处理功能。段落中的代码支持SQL和HQL,但是同一个段落中代码只能是同一种的,不能混合包含不同类型的代码。
段落结构说明
| 字段 | 类型 | 描述 | 
|---|---|---|
| id | INTEGER | 段落的 id | 
| previousId | INTEGER | 段落的前一个段落的 id | 
| notebookId | INTEGER | 段落所属的笔记的 id | 
| createdAt | DATETIME | 段落创建的时间 | 
| createdBy | INTEGER | 段落创建用户的 id | 
| updatedAt | DATETIME | 段落最后修改的时间 | 
| updatedBy | INTEGER | 段落最后修改用户的 id | 
| code | STRING | 段落的代码,每个语句用英文分号分隔 | 
| lang | STRING | 段落的代码类型,见段落语言说明,默认是SQL | 
| connectionId | INTEGER | 段落的执行目标连接的 id | 
| hsVersion | INTEGER | 段落的编辑版本号,从0开始,修改段落提交的时候,需要带上修改前的版本号 | 
| options | OBJECT | 段落配置信息 | 
| options.path | STRING 数组 | 段落的执行目标连接的路径(schema),有些数据源比如SQL Server有多层 | 
段落语言说明
| 状态值 | 意义 | 
|---|---|
| SQL | native SQl,默认值,语法和具体的连接类型相关 | 
| HQL | HQL,衡石定义的通用语言 | 
1.2. 接口说明
1.2.1. 新增段落
请求URL
POST /api/v1/notebooks/{notebookId}/paragraphs
需要认证:是
请求参数
URL 参数
| 字段 | 类型 | 是否必须 | 说明 | 
|---|---|---|---|
Request Body 参数
| 字段 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| previousId | INTEGER | 分情况 | 段落的前一个段落的 id。笔记的第一个段落的前一个段落id是null,可不填;后续的段落必须填 | 
| code | STRING | 可选 | 段落的代码,每个语句用英文分号分隔,默认为空 | 
| lang | STRING | 可选 | 段落的代码类型,见段落语言说明,默认是SQL | 
| connectionId | INTEGER | 可选 | 段落的执行目标连接的 id,默认为null,可以后续再修改 | 
| options | OBJECT | 可选 | 段落配置信息 | 
| options.path | STRING 数组 | 可选 | 段落的执行目标连接的路径(schema),有些数据源比如SQL Server有多层 | 
返回对象的格式说明
| 字段 | 类型 | 说明 | 
|---|---|---|
| version | STRING | 当前系统版本哈希值 | 
| data | OBJECT | 见段落结构说明 | 
接口示例: 创建笔记的第一个段落
POST /api/v1/notebooks/{notebookId}/paragraphs
{
}
返回
{
    "code": 0,
    "data": {
        "id": 1,
        "notebookId": 1,
        "createdBy": 1,
        "createdAt": "2020-02-25 17:19:40",
        "updatedBy": 1,
        "updatedAt": "2020-02-25 17:19:40",
        "code": "",
        "lang": "SQL",
        "hsVersion": 0,
        "options": {},
        "isDelete": false
    },
    "msg": "success",
    "version": "3.1-SNAPSHOT@@git.commit.id.abbrev@#1234567"
}
接口示例: 创建笔记的第二个段落
POST /api/v1/notebooks/{notebookId}/paragraphs
{
    "previousId": 1
}
返回
{
    "code": 0,
    "data": {
        "id": 2,
        "previousId": 1,
        "notebookId": 1,
        "createdBy": 1,
        "createdAt": "2020-02-26 17:19:40",
        "updatedBy": 1,
        "updatedAt": "2020-02-26 17:19:40",
        "code": "",
        "lang": "SQL",
        "hsVersion": 0,
        "options": {},
        "isDelete": false
    },
    "msg": "success",
    "version": "3.1-SNAPSHOT@@git.commit.id.abbrev@#1234567"
}
1.2.2. 删除段落
请求URL
DELETE /api/v1/notebooks/{notebookId}/paragraphs/{paragraphId}
需要认证:是
请求参数
URL 参数
| 字段 | 类型 | 是否必须 | 说明 | 
|---|---|---|---|
Request Body 参数
| 字段 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
返回对象的格式说明
| 字段 | 类型 | 说明 | 
|---|---|---|
| version | STRING | 当前系统版本哈希值 | 
| code | 错误码 | 请求成功返回0 | 
| msg | STRING | 请求成功返回success | 
接口示例:
DELETE /api/v1/notebooks/{notebookId}/paragraphs/{paragraphId}
返回
{
    "code": 0,
    "msg": "success",
    "version": "3.1-SNAPSHOT@@git.commit.id.abbrev@#1234567"
}
1.2.3. 修改段落
请求URL
PUT /api/v1/notebooks/{notebookId}/paragraphs/{paragraphId}
需要认证:是
请求参数
URL 参数
| 字段 | 类型 | 是否必须 | 说明 | 
|---|---|---|---|
Request Body 参数
只能修改connectionId,options.path,code,lang这4个参数中的一个或者多个。不能全部为(空或者null)
| 字段 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| code | STRING | 可选 | 段落的代码,每个语句用英文分号分隔,默认为空 | 
| lang | STRING | 可选 | 段落的代码类型,见段落语言说明,默认是SQL | 
| connectionId | INTEGER | 可选 | 段落的执行目标连接的 id,默认为null,可以后续再修改 | 
| options | OBJECT | 可选 | 段落配置信息 | 
| options.path | STRING 数组 | 可选 | 段落的执行目标连接的路径(schema),有些数据源比如SQL Server有多层 | 
| hsVersion | INTEGER | 可选 | 段落的编辑版本号,从0开始,修改段落提交的时候,需要带上修改前的版本号。不带版本号不检查版本冲突 | 
返回对象的格式说明
| 字段 | 类型 | 说明 | 
|---|---|---|
| version | STRING | 当前系统版本哈希值 | 
| data | OBJECT | 见段落结构说明 | 
接口示例: 修改代码
PUT /api/v1/notebooks/{notebookId}/paragraphs/{paragraphId}
{
    "code": "select * from movie limit 10"
}
返回
{
    "code": 0,
    "data": {
        "id": 1,
        "notebookId": 1,
        "createdBy": 1,
        "createdAt": "2020-02-25 17:19:40",
        "updatedBy": 1,
        "updatedAt": "2020-02-27 17:19:40",
        "code": "select * from movie limit 10",
        "lang": "SQL",
        "hsVersion": 1,
        "options": {},
        "isDelete": false
    },
    "msg": "success",
    "version": "3.1-SNAPSHOT@@git.commit.id.abbrev@#1234567"
}
接口示例: 修改默认执行schema和执行连接
PUT /api/v1/notebooks/{notebookId}/paragraphs/{paragraphId}
{
    "connectionId": 1,
    "options": {
        "path": ["sqlserverdb","schema"]
    }
}
返回
{
    "code": 0,
    "data": {
        "id": 1,
        "notebookId": 1,
        "createdBy": 1,
        "createdAt": "2020-02-25 17:19:40",
        "updatedBy": 1,
        "updatedAt": "2020-02-27 18:19:40",
        "code": "select * from movie limit 10",
        "lang": "SQL",
        "hsVersion": 2,
        "connectionId": 1,
        "options": {
            "path": ["sqlserverdb","schema"]
        },
        "isDelete": false
    },
    "msg": "success",
    "version": "3.1-SNAPSHOT@@git.commit.id.abbrev@#1234567"
}
1.2.4. 获取段落
请求URL
GET /api/v1/notebooks/{notebookId}/paragraphs/{paragraphId}
需要认证:是
请求参数
URL 参数
| 字段 | 类型 | 是否必须 | 说明 | 
|---|---|---|---|
Request Body 参数
| 字段 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
返回对象的格式说明
| 字段 | 类型 | 说明 | 
|---|---|---|
| version | STRING | 当前系统版本哈希值 | 
| data | OBJECT | 见段落结构说明 | 
接口示例:
GET /api/v1/notebooks/{notebookId}/paragraphs/{paragrapId}
返回
{
    "code": 0,
    "data": {
        "id": 1,
        "notebookId": 1,
        "createdBy": 1,
        "createdAt": "2020-02-25 17:19:40",
        "updatedBy": 1,
        "updatedAt": "2020-02-27 18:19:40",
        "code": "select * from movie limit 10",
        "lang": "SQL",
        "hsVersion": 2,
        "connectionId": 1,
        "options": {
            "path": ["sqlserverdb","schema"]
        },
        "isDelete": false
    },
    "msg": "success",
    "version": "3.1-SNAPSHOT@@git.commit.id.abbrev@#1234567"
}
1.2.5. 获取笔记的段落列表
请求URL
GET /api/v1/notebooks/{notebookId}/paragraphs
需要认证:是
请求参数
URL 参数
| 字段 | 类型 | 是否必须 | 说明 | 
|---|---|---|---|
| offset | INTEGER | 可选 | 分页偏移量,默认是0 | 
| limit | INTEGER | 可选 | 分页获取个数,默认是1000 | 
Request Body 参数
| 字段 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
返回对象的格式说明
| 字段 | 类型 | 说明 | 
|---|---|---|
| version | STRING | 当前系统版本哈希值 | 
| totalHits | INTEGER | 段落的总个数 | 
| offset | INTEGER | 当前分页偏移量 | 
| data | OBJECT 数组 | 数组的元素是一个段落,见段落结构说明 | 
接口示例:
GET /api/v1/notebooks/{notebookId}/paragraphs
返回
{
    "code": 0,
    "data": [
        {
            "id": 1,
            "notebookId": 1,
            "createdBy": 1,
            "createdAt": "2020-02-25 17:19:40",
            "updatedBy": 1,
            "updatedAt": "2020-02-27 18:19:40",
            "code": "select * from movie limit 10",
            "lang": "SQL",
            "hsVersion": 2,
            "connectionId": 1,
            "options": {
                "path": ["sqlserverdb","schema"]
            },
            "isDelete": false
        },
        {
            "id": 2,
            "previousId": 1,
            "notebookId": 1,
            "createdBy": 1,
            "createdAt": "2020-02-26 17:19:40",
            "updatedBy": 1,
            "updatedAt": "2020-02-28 18:19:40",
            "code": "select * from movie limit 10",
            "lang": "SQL",
            "hsVersion": 2,
            "connectionId": 1,
            "options": {
                "path": ["sqlserverdb","schema"]
            },
            "isDelete": false
        }
    ],
    "msg": "success",
    "version": "3.1-SNAPSHOT@@git.commit.id.abbrev@#1234567",
    "totalHits": 2,
    "offset": 0
}
1.2.6. 执行一个段落
请求URL
POST /api/v1/notebooks/{notebookId}/paragraphs/{paragrapId}/executions
需要认证:是
请求参数
URL 参数
| 字段 | 类型 | 是否必须 | 说明 | 
|---|---|---|---|
| requestId | STRING | 是 | 请求唯一的id | 
| isTest | BOOL | 是 | 是否是测试执行 | 
Request Body 参数
| 字段 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
返回对象的格式说明
| 字段 | 类型 | 说明 | 
|---|---|---|
| version | STRING | 当前系统版本哈希值 | 
| data | OBJECT | 包含日志和执行结果 | 
| data.logs | STRING 数组 | 每条都是执行日志 | 
| data.schema | OBJECT 数组 | 每一个元素表示一个字段的属性,与数据集的字段结构相同 | 
| data.data | OBJECT 数组 | 每一个元素是表示一行数据的数组 | 
接口示例:
POST /api/v1/notebooks/{notebookId}/paragraphs/{paragrapId}/executions?requestId=xxx123&isTest=true
{
}
返回
{
    "code": 0,
    "data": {
        "logs": [
            "2020-03-03 17:10:08.13 [77] [pipelineId: 1 jobId: 1 nodeId: 2 taskId: 1] task start",
            "2020-03-03 17:10:08.409 [77] [pipelineId: 1 jobId: 1 nodeId: 2 taskId: 1] task done"
        ],
        "schema": [...],
        "data": [...]
    },
    "msg": "success",
    "version": "3.1-SNAPSHOT@@git.commit.id.abbrev@#1234567"
}
1.2.7. 取消执行一个段落
请求URL
PUT /api/v1/notebooks/{notebookId}/paragraphs/{paragrapId}/executions/cancel
需要认证:是
请求参数
URL 参数
| 字段 | 类型 | 是否必须 | 说明 | 
|---|---|---|---|
| requestId | STRING | 是 | 执行时发送的请求id | 
Request Body 参数
| 字段 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
返回对象的格式说明
| 字段 | 类型 | 说明 | 
|---|---|---|
| version | STRING | 当前系统版本哈希值 | 
| code | 错误码 | 请求成功返回0 | 
| msg | STRING | 请求成功返回success | 
接口示例:
PUT /api/v1/notebooks/{notebookId}/paragraphs/{paragrapId}/executions/cancel?requestId=xxx123
{
}
返回
{
    "code": 0,
    "msg": "success",
    "version": "3.1-SNAPSHOT@@git.commit.id.abbrev@#1234567"
}