1
0

feat: 新增 DB checker — 支持 PostgreSQL/MySQL/SQLite 连接测试与 SQL 查询断言

- 实现 db 类型 checker,使用 Bun 内置 SQL 类
- 支持 db.url 连接字符串和可选 db.query 查询语句
- expect 支持 maxDurationMs、rowCount、rows 逐列校验
- 凭据屏蔽序列化输出
- SQLite 内存数据库测试覆盖
This commit is contained in:
2026-05-16 09:00:15 +08:00
parent c36df94e59
commit 146cef982e
16 changed files with 1344 additions and 7 deletions

View File

@@ -89,6 +89,11 @@
]
}
}
},
"db": {
"additionalProperties": false,
"type": "object",
"properties": {}
}
}
},
@@ -716,6 +721,209 @@
}
}
}
},
{
"additionalProperties": false,
"type": "object",
"required": [
"name",
"type",
"db"
],
"properties": {
"expect": {
"additionalProperties": false,
"type": "object",
"properties": {
"maxDurationMs": {
"minimum": 0,
"type": "number"
},
"rowCount": {
"additionalProperties": false,
"minProperties": 1,
"type": "object",
"properties": {
"contains": {
"type": "string"
},
"empty": {
"type": "boolean"
},
"equals": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"items": {},
"type": "array"
},
{
"additionalProperties": {},
"type": "object"
}
]
},
"exists": {
"type": "boolean"
},
"gt": {
"type": "number"
},
"gte": {
"type": "number"
},
"lt": {
"type": "number"
},
"lte": {
"type": "number"
},
"match": {
"type": "string"
}
}
},
"rows": {
"type": "array",
"items": {
"additionalProperties": false,
"minProperties": 1,
"type": "object",
"patternProperties": {
"^(.*)$": {
"anyOf": [
{
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"items": {},
"type": "array"
},
{
"additionalProperties": {},
"type": "object"
}
]
},
{
"additionalProperties": false,
"minProperties": 1,
"type": "object",
"properties": {
"contains": {
"type": "string"
},
"empty": {
"type": "boolean"
},
"equals": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"items": {},
"type": "array"
},
{
"additionalProperties": {},
"type": "object"
}
]
},
"exists": {
"type": "boolean"
},
"gt": {
"type": "number"
},
"gte": {
"type": "number"
},
"lt": {
"type": "number"
},
"lte": {
"type": "number"
},
"match": {
"type": "string"
}
}
}
]
}
}
}
}
}
},
"group": {
"type": "string"
},
"interval": {
"type": "string"
},
"name": {
"minLength": 1,
"type": "string"
},
"timeout": {
"type": "string"
},
"type": {
"const": "db",
"type": "string"
},
"db": {
"additionalProperties": false,
"type": "object",
"required": [
"url"
],
"properties": {
"query": {
"minLength": 1,
"type": "string"
},
"url": {
"minLength": 1,
"type": "string"
}
}
}
}
}
]
}