数据契约生成器
Go库用于从CSV文件、JSON/NDJSON、REST API、PostgreSQL数据库和Supabase项目生成数据契约。AI摄取代理在生成代码之前使用它来理解源和目标模式。
安装
go get github.com/JacobJNilsson/data-contract-generator@latest包裹
| 包装 | 用途 |
|---|---|
contract | 共享类型: DataContract, SchemaContract, FieldDefinition |
csvcontract | 分析CSV文件:编码、分隔符、标头检测、类型推断、数据分析 |
jsoncontract | 分析JSON数组和NDJSON:流式传输、类型推理、数据分析 |
apicontract | 通过OpenAPI 3.x/Swagger 2.0规范分析REST API |
pgcontract | 分析PostgreSQL数据库:模式自省、约束、数据分析 |
supacontract | 通过PostgREST OpenAPI分析Supabase项目(无需直接数据库连接) |
verify | 验证契约的结构正确性和语义连贯性 |
transform | 生成带有字段映射建议的转换合同 |
快速开始
package main
import (
"context"
"encoding/json"
"fmt"
"log"
"github.com/JacobJNilsson/data-contract-generator/csvcontract"
)
func main() {
contract, err := csvcontract.AnalyzeFile(context.Background(), "data.csv", nil)
if err != nil {
log.Fatal(err)
}
b, _ := json.MarshalIndent(contract, "", " ")
fmt.Println(string(b))
}发展
需要Go 1.25+、Docker(用于pgcontract集成测试)和 golangci-lint.
make setup # configure git hooks
make check # lint, test (starts Postgres via Docker), build
make db-stop # stop the test database预提交钩子运行 make check 其强制执行:
| 包装 | 覆盖门 |
|---|---|
| csv合同 | 100% |
| jsoncontract | 95% |
| 白内障 | 95% |
| 验证 | 100% |
| 转换 | 100% |
| 上交合规 | 95% |
| pgcontract | 85%(针对真实Postgres进行测试) |
建筑
contract/ ← shared types (single source of truth)
csvcontract/ ← CSV source analysis
jsoncontract/ ← JSON/NDJSON source analysis
apicontract/ ← REST API analysis (OpenAPI/Swagger)
pgcontract/ ← PostgreSQL analysis
supacontract/ ← Supabase analysis
verify/ ← contract validation
transform/ ← field mapping suggestions没有循环依赖关系。没有类型别名。每个分析仪都导入 contract/ 用于共享类型,stdlib用于其他所有类型(除了 pgcontract 其使用 pgx).
