fix: 修复一系列问题并生成swagger一键脚本

This commit is contained in:
2026-04-28 13:36:48 +08:00
parent 10d5578a43
commit d939c2d5e1
10 changed files with 272 additions and 194 deletions
+21
View File
@@ -464,6 +464,27 @@ go run ./cmd/server
http://localhost:3001/swagger/index.html http://localhost:3001/swagger/index.html
``` ```
### 9.4 生成 Swagger 文档
仓库根目录提供了两个脚本,方便重新生成 API 文档:
- Linux / WSL / macOS:`./gen_swagger.sh`
- Windows PowerShell:`./gen_swagger.ps1`
脚本会自动切换到 `backend/` 目录,并执行:
```bash
swag init -g ./cmd/server/main.go --parseDependency --parseInternal
```
生成产物位于 `backend/docs/` 下:
- `docs.go`
- `swagger.json`
- `swagger.yaml`
如果遇到 `cannot find type definition: model.GraphData` 之类的报错,通常是 handler 文件里缺少 `internal/model` 的显式导入。
--- ---
## 十、当前实现特点 ## 十、当前实现特点
+1 -2
View File
@@ -10,7 +10,7 @@ import (
swaggerFiles "github.com/swaggo/files" swaggerFiles "github.com/swaggo/files"
ginSwagger "github.com/swaggo/gin-swagger" ginSwagger "github.com/swaggo/gin-swagger"
"knowledge-graph-backend/docs" _ "knowledge-graph-backend/docs"
"knowledge-graph-backend/internal/config" "knowledge-graph-backend/internal/config"
"knowledge-graph-backend/internal/handler" "knowledge-graph-backend/internal/handler"
neo4jClient "knowledge-graph-backend/internal/repository/neo4j" neo4jClient "knowledge-graph-backend/internal/repository/neo4j"
@@ -45,7 +45,6 @@ func main() {
router.Use(cors.New(cfg.CORS.ToGinConfig())) router.Use(cors.New(cfg.CORS.ToGinConfig()))
docs.SwaggerInfo.BasePath = "/"
router.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) router.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
// @Summary 健康检查 // @Summary 健康检查
+65 -63
View File
@@ -32,7 +32,7 @@ const docTemplate = `{
"in": "body", "in": "body",
"required": true, "required": true,
"schema": { "schema": {
"$ref": "#/definitions/model.CreateEdgeRequest" "$ref": "#/definitions/knowledge-graph-backend_internal_model.CreateEdgeRequest"
} }
} }
], ],
@@ -40,31 +40,31 @@ const docTemplate = `{
"200": { "200": {
"description": "创建成功", "description": "创建成功",
"schema": { "schema": {
"$ref": "#/definitions/model.EdgeResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.EdgeResponse"
} }
}, },
"400": { "400": {
"description": "请求错误", "description": "请求错误",
"schema": { "schema": {
"$ref": "#/definitions/model.ErrorResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.ErrorResponse"
} }
}, },
"404": { "404": {
"description": "源节点或目标节点未找到", "description": "源节点或目标节点未找到",
"schema": { "schema": {
"$ref": "#/definitions/model.ErrorResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.ErrorResponse"
} }
}, },
"409": { "409": {
"description": "边已存在", "description": "边已存在",
"schema": { "schema": {
"$ref": "#/definitions/model.ErrorResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.ErrorResponse"
} }
}, },
"500": { "500": {
"description": "内部错误", "description": "内部错误",
"schema": { "schema": {
"$ref": "#/definitions/model.ErrorResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.ErrorResponse"
} }
} }
} }
@@ -90,19 +90,19 @@ const docTemplate = `{
"200": { "200": {
"description": "删除成功", "description": "删除成功",
"schema": { "schema": {
"$ref": "#/definitions/model.DeleteResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.DeleteResponse"
} }
}, },
"404": { "404": {
"description": "边未找到", "description": "边未找到",
"schema": { "schema": {
"$ref": "#/definitions/model.ErrorResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.ErrorResponse"
} }
}, },
"500": { "500": {
"description": "内部错误", "description": "内部错误",
"schema": { "schema": {
"$ref": "#/definitions/model.ErrorResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.ErrorResponse"
} }
} }
} }
@@ -119,13 +119,13 @@ const docTemplate = `{
"200": { "200": {
"description": "成功", "description": "成功",
"schema": { "schema": {
"$ref": "#/definitions/model.GraphData" "$ref": "#/definitions/knowledge-graph-backend_internal_model.GraphData"
} }
}, },
"500": { "500": {
"description": "内部错误", "description": "内部错误",
"schema": { "schema": {
"$ref": "#/definitions/model.ErrorResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.ErrorResponse"
} }
} }
} }
@@ -142,13 +142,13 @@ const docTemplate = `{
"200": { "200": {
"description": "成功", "description": "成功",
"schema": { "schema": {
"$ref": "#/definitions/model.SimpleGraphData" "$ref": "#/definitions/knowledge-graph-backend_internal_model.SimpleGraphData"
} }
}, },
"500": { "500": {
"description": "内部错误", "description": "内部错误",
"schema": { "schema": {
"$ref": "#/definitions/model.ErrorResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.ErrorResponse"
} }
} }
} }
@@ -172,7 +172,7 @@ const docTemplate = `{
"500": { "500": {
"description": "内部错误", "description": "内部错误",
"schema": { "schema": {
"$ref": "#/definitions/model.ErrorResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.ErrorResponse"
} }
} }
} }
@@ -195,7 +195,7 @@ const docTemplate = `{
"in": "body", "in": "body",
"required": true, "required": true,
"schema": { "schema": {
"$ref": "#/definitions/model.CreateNodeRequest" "$ref": "#/definitions/knowledge-graph-backend_internal_model.CreateNodeRequest"
} }
} }
], ],
@@ -203,25 +203,25 @@ const docTemplate = `{
"200": { "200": {
"description": "创建成功", "description": "创建成功",
"schema": { "schema": {
"$ref": "#/definitions/model.Node" "$ref": "#/definitions/knowledge-graph-backend_internal_model.Node"
} }
}, },
"400": { "400": {
"description": "请求错误", "description": "请求错误",
"schema": { "schema": {
"$ref": "#/definitions/model.ErrorResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.ErrorResponse"
} }
}, },
"409": { "409": {
"description": "节点已存在", "description": "节点已存在",
"schema": { "schema": {
"$ref": "#/definitions/model.ErrorResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.ErrorResponse"
} }
}, },
"500": { "500": {
"description": "内部错误", "description": "内部错误",
"schema": { "schema": {
"$ref": "#/definitions/model.ErrorResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.ErrorResponse"
} }
} }
} }
@@ -247,25 +247,25 @@ const docTemplate = `{
"200": { "200": {
"description": "成功", "description": "成功",
"schema": { "schema": {
"$ref": "#/definitions/model.NodeResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.NodeResponse"
} }
}, },
"400": { "400": {
"description": "请求错误", "description": "请求错误",
"schema": { "schema": {
"$ref": "#/definitions/model.ErrorResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.ErrorResponse"
} }
}, },
"404": { "404": {
"description": "节点未找到", "description": "节点未找到",
"schema": { "schema": {
"$ref": "#/definitions/model.ErrorResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.ErrorResponse"
} }
}, },
"500": { "500": {
"description": "内部错误", "description": "内部错误",
"schema": { "schema": {
"$ref": "#/definitions/model.ErrorResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.ErrorResponse"
} }
} }
} }
@@ -293,7 +293,7 @@ const docTemplate = `{
"in": "body", "in": "body",
"required": true, "required": true,
"schema": { "schema": {
"$ref": "#/definitions/model.UpdateNodeRequest" "$ref": "#/definitions/knowledge-graph-backend_internal_model.UpdateNodeRequest"
} }
} }
], ],
@@ -301,25 +301,25 @@ const docTemplate = `{
"200": { "200": {
"description": "更新成功", "description": "更新成功",
"schema": { "schema": {
"$ref": "#/definitions/model.Node" "$ref": "#/definitions/knowledge-graph-backend_internal_model.Node"
} }
}, },
"400": { "400": {
"description": "请求错误", "description": "请求错误",
"schema": { "schema": {
"$ref": "#/definitions/model.ErrorResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.ErrorResponse"
} }
}, },
"404": { "404": {
"description": "节点未找到", "description": "节点未找到",
"schema": { "schema": {
"$ref": "#/definitions/model.ErrorResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.ErrorResponse"
} }
}, },
"500": { "500": {
"description": "内部错误", "description": "内部错误",
"schema": { "schema": {
"$ref": "#/definitions/model.ErrorResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.ErrorResponse"
} }
} }
} }
@@ -343,19 +343,19 @@ const docTemplate = `{
"200": { "200": {
"description": "删除成功", "description": "删除成功",
"schema": { "schema": {
"$ref": "#/definitions/model.DeleteResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.DeleteResponse"
} }
}, },
"404": { "404": {
"description": "节点未找到", "description": "节点未找到",
"schema": { "schema": {
"$ref": "#/definitions/model.ErrorResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.ErrorResponse"
} }
}, },
"500": { "500": {
"description": "内部错误", "description": "内部错误",
"schema": { "schema": {
"$ref": "#/definitions/model.ErrorResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.ErrorResponse"
} }
} }
} }
@@ -381,25 +381,25 @@ const docTemplate = `{
"200": { "200": {
"description": "成功", "description": "成功",
"schema": { "schema": {
"$ref": "#/definitions/model.NeighborResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.NeighborResponse"
} }
}, },
"400": { "400": {
"description": "请求错误", "description": "请求错误",
"schema": { "schema": {
"$ref": "#/definitions/model.ErrorResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.ErrorResponse"
} }
}, },
"404": { "404": {
"description": "节点未找到", "description": "节点未找到",
"schema": { "schema": {
"$ref": "#/definitions/model.ErrorResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.ErrorResponse"
} }
}, },
"500": { "500": {
"description": "内部错误", "description": "内部错误",
"schema": { "schema": {
"$ref": "#/definitions/model.ErrorResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.ErrorResponse"
} }
} }
} }
@@ -425,19 +425,19 @@ const docTemplate = `{
"200": { "200": {
"description": "成功", "description": "成功",
"schema": { "schema": {
"$ref": "#/definitions/model.SearchResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.SearchResponse"
} }
}, },
"400": { "400": {
"description": "请求错误", "description": "请求错误",
"schema": { "schema": {
"$ref": "#/definitions/model.ErrorResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.ErrorResponse"
} }
}, },
"500": { "500": {
"description": "内部错误", "description": "内部错误",
"schema": { "schema": {
"$ref": "#/definitions/model.ErrorResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.ErrorResponse"
} }
} }
} }
@@ -445,7 +445,7 @@ const docTemplate = `{
} }
}, },
"definitions": { "definitions": {
"model.CreateEdgeRequest": { "knowledge-graph-backend_internal_model.CreateEdgeRequest": {
"type": "object", "type": "object",
"required": [ "required": [
"id", "id",
@@ -480,7 +480,7 @@ const docTemplate = `{
} }
} }
}, },
"model.CreateNodeRequest": { "knowledge-graph-backend_internal_model.CreateNodeRequest": {
"type": "object", "type": "object",
"required": [ "required": [
"id", "id",
@@ -514,7 +514,7 @@ const docTemplate = `{
} }
} }
}, },
"model.DeleteResponse": { "knowledge-graph-backend_internal_model.DeleteResponse": {
"type": "object", "type": "object",
"properties": { "properties": {
"id": { "id": {
@@ -531,7 +531,7 @@ const docTemplate = `{
} }
} }
}, },
"model.Edge": { "knowledge-graph-backend_internal_model.Edge": {
"type": "object", "type": "object",
"properties": { "properties": {
"id": { "id": {
@@ -559,7 +559,7 @@ const docTemplate = `{
} }
} }
}, },
"model.EdgeResponse": { "knowledge-graph-backend_internal_model.EdgeResponse": {
"type": "object", "type": "object",
"properties": { "properties": {
"id": { "id": {
@@ -588,52 +588,54 @@ const docTemplate = `{
} }
} }
}, },
"model.ErrorResponse": { "knowledge-graph-backend_internal_model.ErrorResponse": {
"type": "object", "type": "object",
"properties": { "properties": {
"error": { "error": {
"type": "string" "type": "string",
"example": "bad_request"
}, },
"message": { "message": {
"type": "string" "type": "string",
"example": "invalid request"
} }
} }
}, },
"model.GraphData": { "knowledge-graph-backend_internal_model.GraphData": {
"type": "object", "type": "object",
"properties": { "properties": {
"edges": { "edges": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/definitions/model.Edge" "$ref": "#/definitions/knowledge-graph-backend_internal_model.Edge"
} }
}, },
"nodes": { "nodes": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/definitions/model.Node" "$ref": "#/definitions/knowledge-graph-backend_internal_model.Node"
} }
} }
} }
}, },
"model.NeighborResponse": { "knowledge-graph-backend_internal_model.NeighborResponse": {
"type": "object", "type": "object",
"properties": { "properties": {
"edges": { "edges": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/definitions/model.Edge" "$ref": "#/definitions/knowledge-graph-backend_internal_model.Edge"
} }
}, },
"nodes": { "nodes": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/definitions/model.Node" "$ref": "#/definitions/knowledge-graph-backend_internal_model.Node"
} }
} }
} }
}, },
"model.Node": { "knowledge-graph-backend_internal_model.Node": {
"type": "object", "type": "object",
"properties": { "properties": {
"id": { "id": {
@@ -661,7 +663,7 @@ const docTemplate = `{
} }
} }
}, },
"model.NodeResponse": { "knowledge-graph-backend_internal_model.NodeResponse": {
"type": "object", "type": "object",
"properties": { "properties": {
"id": { "id": {
@@ -673,7 +675,7 @@ const docTemplate = `{
"neighbors": { "neighbors": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/definitions/model.Node" "$ref": "#/definitions/knowledge-graph-backend_internal_model.Node"
} }
}, },
"properties": { "properties": {
@@ -695,7 +697,7 @@ const docTemplate = `{
} }
} }
}, },
"model.SearchResponse": { "knowledge-graph-backend_internal_model.SearchResponse": {
"type": "object", "type": "object",
"properties": { "properties": {
"count": { "count": {
@@ -704,7 +706,7 @@ const docTemplate = `{
"nodes": { "nodes": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/definitions/model.Node" "$ref": "#/definitions/knowledge-graph-backend_internal_model.Node"
} }
}, },
"query": { "query": {
@@ -712,7 +714,7 @@ const docTemplate = `{
} }
} }
}, },
"model.SimpleEdge": { "knowledge-graph-backend_internal_model.SimpleEdge": {
"type": "object", "type": "object",
"properties": { "properties": {
"label": { "label": {
@@ -733,24 +735,24 @@ const docTemplate = `{
} }
} }
}, },
"model.SimpleGraphData": { "knowledge-graph-backend_internal_model.SimpleGraphData": {
"type": "object", "type": "object",
"properties": { "properties": {
"edges": { "edges": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/definitions/model.SimpleEdge" "$ref": "#/definitions/knowledge-graph-backend_internal_model.SimpleEdge"
} }
}, },
"nodes": { "nodes": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/definitions/model.SimpleNode" "$ref": "#/definitions/knowledge-graph-backend_internal_model.SimpleNode"
} }
} }
} }
}, },
"model.SimpleNode": { "knowledge-graph-backend_internal_model.SimpleNode": {
"type": "object", "type": "object",
"properties": { "properties": {
"id": { "id": {
@@ -767,7 +769,7 @@ const docTemplate = `{
} }
} }
}, },
"model.UpdateNodeRequest": { "knowledge-graph-backend_internal_model.UpdateNodeRequest": {
"type": "object", "type": "object",
"properties": { "properties": {
"label": { "label": {
+65 -63
View File
@@ -26,7 +26,7 @@
"in": "body", "in": "body",
"required": true, "required": true,
"schema": { "schema": {
"$ref": "#/definitions/model.CreateEdgeRequest" "$ref": "#/definitions/knowledge-graph-backend_internal_model.CreateEdgeRequest"
} }
} }
], ],
@@ -34,31 +34,31 @@
"200": { "200": {
"description": "创建成功", "description": "创建成功",
"schema": { "schema": {
"$ref": "#/definitions/model.EdgeResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.EdgeResponse"
} }
}, },
"400": { "400": {
"description": "请求错误", "description": "请求错误",
"schema": { "schema": {
"$ref": "#/definitions/model.ErrorResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.ErrorResponse"
} }
}, },
"404": { "404": {
"description": "源节点或目标节点未找到", "description": "源节点或目标节点未找到",
"schema": { "schema": {
"$ref": "#/definitions/model.ErrorResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.ErrorResponse"
} }
}, },
"409": { "409": {
"description": "边已存在", "description": "边已存在",
"schema": { "schema": {
"$ref": "#/definitions/model.ErrorResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.ErrorResponse"
} }
}, },
"500": { "500": {
"description": "内部错误", "description": "内部错误",
"schema": { "schema": {
"$ref": "#/definitions/model.ErrorResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.ErrorResponse"
} }
} }
} }
@@ -84,19 +84,19 @@
"200": { "200": {
"description": "删除成功", "description": "删除成功",
"schema": { "schema": {
"$ref": "#/definitions/model.DeleteResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.DeleteResponse"
} }
}, },
"404": { "404": {
"description": "边未找到", "description": "边未找到",
"schema": { "schema": {
"$ref": "#/definitions/model.ErrorResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.ErrorResponse"
} }
}, },
"500": { "500": {
"description": "内部错误", "description": "内部错误",
"schema": { "schema": {
"$ref": "#/definitions/model.ErrorResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.ErrorResponse"
} }
} }
} }
@@ -113,13 +113,13 @@
"200": { "200": {
"description": "成功", "description": "成功",
"schema": { "schema": {
"$ref": "#/definitions/model.GraphData" "$ref": "#/definitions/knowledge-graph-backend_internal_model.GraphData"
} }
}, },
"500": { "500": {
"description": "内部错误", "description": "内部错误",
"schema": { "schema": {
"$ref": "#/definitions/model.ErrorResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.ErrorResponse"
} }
} }
} }
@@ -136,13 +136,13 @@
"200": { "200": {
"description": "成功", "description": "成功",
"schema": { "schema": {
"$ref": "#/definitions/model.SimpleGraphData" "$ref": "#/definitions/knowledge-graph-backend_internal_model.SimpleGraphData"
} }
}, },
"500": { "500": {
"description": "内部错误", "description": "内部错误",
"schema": { "schema": {
"$ref": "#/definitions/model.ErrorResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.ErrorResponse"
} }
} }
} }
@@ -166,7 +166,7 @@
"500": { "500": {
"description": "内部错误", "description": "内部错误",
"schema": { "schema": {
"$ref": "#/definitions/model.ErrorResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.ErrorResponse"
} }
} }
} }
@@ -189,7 +189,7 @@
"in": "body", "in": "body",
"required": true, "required": true,
"schema": { "schema": {
"$ref": "#/definitions/model.CreateNodeRequest" "$ref": "#/definitions/knowledge-graph-backend_internal_model.CreateNodeRequest"
} }
} }
], ],
@@ -197,25 +197,25 @@
"200": { "200": {
"description": "创建成功", "description": "创建成功",
"schema": { "schema": {
"$ref": "#/definitions/model.Node" "$ref": "#/definitions/knowledge-graph-backend_internal_model.Node"
} }
}, },
"400": { "400": {
"description": "请求错误", "description": "请求错误",
"schema": { "schema": {
"$ref": "#/definitions/model.ErrorResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.ErrorResponse"
} }
}, },
"409": { "409": {
"description": "节点已存在", "description": "节点已存在",
"schema": { "schema": {
"$ref": "#/definitions/model.ErrorResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.ErrorResponse"
} }
}, },
"500": { "500": {
"description": "内部错误", "description": "内部错误",
"schema": { "schema": {
"$ref": "#/definitions/model.ErrorResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.ErrorResponse"
} }
} }
} }
@@ -241,25 +241,25 @@
"200": { "200": {
"description": "成功", "description": "成功",
"schema": { "schema": {
"$ref": "#/definitions/model.NodeResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.NodeResponse"
} }
}, },
"400": { "400": {
"description": "请求错误", "description": "请求错误",
"schema": { "schema": {
"$ref": "#/definitions/model.ErrorResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.ErrorResponse"
} }
}, },
"404": { "404": {
"description": "节点未找到", "description": "节点未找到",
"schema": { "schema": {
"$ref": "#/definitions/model.ErrorResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.ErrorResponse"
} }
}, },
"500": { "500": {
"description": "内部错误", "description": "内部错误",
"schema": { "schema": {
"$ref": "#/definitions/model.ErrorResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.ErrorResponse"
} }
} }
} }
@@ -287,7 +287,7 @@
"in": "body", "in": "body",
"required": true, "required": true,
"schema": { "schema": {
"$ref": "#/definitions/model.UpdateNodeRequest" "$ref": "#/definitions/knowledge-graph-backend_internal_model.UpdateNodeRequest"
} }
} }
], ],
@@ -295,25 +295,25 @@
"200": { "200": {
"description": "更新成功", "description": "更新成功",
"schema": { "schema": {
"$ref": "#/definitions/model.Node" "$ref": "#/definitions/knowledge-graph-backend_internal_model.Node"
} }
}, },
"400": { "400": {
"description": "请求错误", "description": "请求错误",
"schema": { "schema": {
"$ref": "#/definitions/model.ErrorResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.ErrorResponse"
} }
}, },
"404": { "404": {
"description": "节点未找到", "description": "节点未找到",
"schema": { "schema": {
"$ref": "#/definitions/model.ErrorResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.ErrorResponse"
} }
}, },
"500": { "500": {
"description": "内部错误", "description": "内部错误",
"schema": { "schema": {
"$ref": "#/definitions/model.ErrorResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.ErrorResponse"
} }
} }
} }
@@ -337,19 +337,19 @@
"200": { "200": {
"description": "删除成功", "description": "删除成功",
"schema": { "schema": {
"$ref": "#/definitions/model.DeleteResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.DeleteResponse"
} }
}, },
"404": { "404": {
"description": "节点未找到", "description": "节点未找到",
"schema": { "schema": {
"$ref": "#/definitions/model.ErrorResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.ErrorResponse"
} }
}, },
"500": { "500": {
"description": "内部错误", "description": "内部错误",
"schema": { "schema": {
"$ref": "#/definitions/model.ErrorResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.ErrorResponse"
} }
} }
} }
@@ -375,25 +375,25 @@
"200": { "200": {
"description": "成功", "description": "成功",
"schema": { "schema": {
"$ref": "#/definitions/model.NeighborResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.NeighborResponse"
} }
}, },
"400": { "400": {
"description": "请求错误", "description": "请求错误",
"schema": { "schema": {
"$ref": "#/definitions/model.ErrorResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.ErrorResponse"
} }
}, },
"404": { "404": {
"description": "节点未找到", "description": "节点未找到",
"schema": { "schema": {
"$ref": "#/definitions/model.ErrorResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.ErrorResponse"
} }
}, },
"500": { "500": {
"description": "内部错误", "description": "内部错误",
"schema": { "schema": {
"$ref": "#/definitions/model.ErrorResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.ErrorResponse"
} }
} }
} }
@@ -419,19 +419,19 @@
"200": { "200": {
"description": "成功", "description": "成功",
"schema": { "schema": {
"$ref": "#/definitions/model.SearchResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.SearchResponse"
} }
}, },
"400": { "400": {
"description": "请求错误", "description": "请求错误",
"schema": { "schema": {
"$ref": "#/definitions/model.ErrorResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.ErrorResponse"
} }
}, },
"500": { "500": {
"description": "内部错误", "description": "内部错误",
"schema": { "schema": {
"$ref": "#/definitions/model.ErrorResponse" "$ref": "#/definitions/knowledge-graph-backend_internal_model.ErrorResponse"
} }
} }
} }
@@ -439,7 +439,7 @@
} }
}, },
"definitions": { "definitions": {
"model.CreateEdgeRequest": { "knowledge-graph-backend_internal_model.CreateEdgeRequest": {
"type": "object", "type": "object",
"required": [ "required": [
"id", "id",
@@ -474,7 +474,7 @@
} }
} }
}, },
"model.CreateNodeRequest": { "knowledge-graph-backend_internal_model.CreateNodeRequest": {
"type": "object", "type": "object",
"required": [ "required": [
"id", "id",
@@ -508,7 +508,7 @@
} }
} }
}, },
"model.DeleteResponse": { "knowledge-graph-backend_internal_model.DeleteResponse": {
"type": "object", "type": "object",
"properties": { "properties": {
"id": { "id": {
@@ -525,7 +525,7 @@
} }
} }
}, },
"model.Edge": { "knowledge-graph-backend_internal_model.Edge": {
"type": "object", "type": "object",
"properties": { "properties": {
"id": { "id": {
@@ -553,7 +553,7 @@
} }
} }
}, },
"model.EdgeResponse": { "knowledge-graph-backend_internal_model.EdgeResponse": {
"type": "object", "type": "object",
"properties": { "properties": {
"id": { "id": {
@@ -582,52 +582,54 @@
} }
} }
}, },
"model.ErrorResponse": { "knowledge-graph-backend_internal_model.ErrorResponse": {
"type": "object", "type": "object",
"properties": { "properties": {
"error": { "error": {
"type": "string" "type": "string",
"example": "bad_request"
}, },
"message": { "message": {
"type": "string" "type": "string",
"example": "invalid request"
} }
} }
}, },
"model.GraphData": { "knowledge-graph-backend_internal_model.GraphData": {
"type": "object", "type": "object",
"properties": { "properties": {
"edges": { "edges": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/definitions/model.Edge" "$ref": "#/definitions/knowledge-graph-backend_internal_model.Edge"
} }
}, },
"nodes": { "nodes": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/definitions/model.Node" "$ref": "#/definitions/knowledge-graph-backend_internal_model.Node"
} }
} }
} }
}, },
"model.NeighborResponse": { "knowledge-graph-backend_internal_model.NeighborResponse": {
"type": "object", "type": "object",
"properties": { "properties": {
"edges": { "edges": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/definitions/model.Edge" "$ref": "#/definitions/knowledge-graph-backend_internal_model.Edge"
} }
}, },
"nodes": { "nodes": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/definitions/model.Node" "$ref": "#/definitions/knowledge-graph-backend_internal_model.Node"
} }
} }
} }
}, },
"model.Node": { "knowledge-graph-backend_internal_model.Node": {
"type": "object", "type": "object",
"properties": { "properties": {
"id": { "id": {
@@ -655,7 +657,7 @@
} }
} }
}, },
"model.NodeResponse": { "knowledge-graph-backend_internal_model.NodeResponse": {
"type": "object", "type": "object",
"properties": { "properties": {
"id": { "id": {
@@ -667,7 +669,7 @@
"neighbors": { "neighbors": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/definitions/model.Node" "$ref": "#/definitions/knowledge-graph-backend_internal_model.Node"
} }
}, },
"properties": { "properties": {
@@ -689,7 +691,7 @@
} }
} }
}, },
"model.SearchResponse": { "knowledge-graph-backend_internal_model.SearchResponse": {
"type": "object", "type": "object",
"properties": { "properties": {
"count": { "count": {
@@ -698,7 +700,7 @@
"nodes": { "nodes": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/definitions/model.Node" "$ref": "#/definitions/knowledge-graph-backend_internal_model.Node"
} }
}, },
"query": { "query": {
@@ -706,7 +708,7 @@
} }
} }
}, },
"model.SimpleEdge": { "knowledge-graph-backend_internal_model.SimpleEdge": {
"type": "object", "type": "object",
"properties": { "properties": {
"label": { "label": {
@@ -727,24 +729,24 @@
} }
} }
}, },
"model.SimpleGraphData": { "knowledge-graph-backend_internal_model.SimpleGraphData": {
"type": "object", "type": "object",
"properties": { "properties": {
"edges": { "edges": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/definitions/model.SimpleEdge" "$ref": "#/definitions/knowledge-graph-backend_internal_model.SimpleEdge"
} }
}, },
"nodes": { "nodes": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/definitions/model.SimpleNode" "$ref": "#/definitions/knowledge-graph-backend_internal_model.SimpleNode"
} }
} }
} }
}, },
"model.SimpleNode": { "knowledge-graph-backend_internal_model.SimpleNode": {
"type": "object", "type": "object",
"properties": { "properties": {
"id": { "id": {
@@ -761,7 +763,7 @@
} }
} }
}, },
"model.UpdateNodeRequest": { "knowledge-graph-backend_internal_model.UpdateNodeRequest": {
"type": "object", "type": "object",
"properties": { "properties": {
"label": { "label": {
+63 -61
View File
@@ -1,6 +1,6 @@
basePath: / basePath: /
definitions: definitions:
model.CreateEdgeRequest: knowledge-graph-backend_internal_model.CreateEdgeRequest:
properties: properties:
id: id:
example: edge_123 example: edge_123
@@ -26,7 +26,7 @@ definitions:
- source - source
- target - target
type: object type: object
model.CreateNodeRequest: knowledge-graph-backend_internal_model.CreateNodeRequest:
properties: properties:
id: id:
example: node_123 example: node_123
@@ -51,7 +51,7 @@ definitions:
- label - label
- type - type
type: object type: object
model.DeleteResponse: knowledge-graph-backend_internal_model.DeleteResponse:
properties: properties:
id: id:
example: node_123 example: node_123
@@ -63,7 +63,7 @@ definitions:
example: true example: true
type: boolean type: boolean
type: object type: object
model.Edge: knowledge-graph-backend_internal_model.Edge:
properties: properties:
id: id:
type: string type: string
@@ -82,7 +82,7 @@ definitions:
type: type:
type: string type: string
type: object type: object
model.EdgeResponse: knowledge-graph-backend_internal_model.EdgeResponse:
properties: properties:
id: id:
example: edge_123 example: edge_123
@@ -103,36 +103,38 @@ definitions:
example: CONTAINS example: CONTAINS
type: string type: string
type: object type: object
model.ErrorResponse: knowledge-graph-backend_internal_model.ErrorResponse:
properties: properties:
error: error:
example: bad_request
type: string type: string
message: message:
example: invalid request
type: string type: string
type: object type: object
model.GraphData: knowledge-graph-backend_internal_model.GraphData:
properties: properties:
edges: edges:
items: items:
$ref: '#/definitions/model.Edge' $ref: '#/definitions/knowledge-graph-backend_internal_model.Edge'
type: array type: array
nodes: nodes:
items: items:
$ref: '#/definitions/model.Node' $ref: '#/definitions/knowledge-graph-backend_internal_model.Node'
type: array type: array
type: object type: object
model.NeighborResponse: knowledge-graph-backend_internal_model.NeighborResponse:
properties: properties:
edges: edges:
items: items:
$ref: '#/definitions/model.Edge' $ref: '#/definitions/knowledge-graph-backend_internal_model.Edge'
type: array type: array
nodes: nodes:
items: items:
$ref: '#/definitions/model.Node' $ref: '#/definitions/knowledge-graph-backend_internal_model.Node'
type: array type: array
type: object type: object
model.Node: knowledge-graph-backend_internal_model.Node:
properties: properties:
id: id:
type: string type: string
@@ -151,7 +153,7 @@ definitions:
"y": "y":
type: number type: number
type: object type: object
model.NodeResponse: knowledge-graph-backend_internal_model.NodeResponse:
properties: properties:
id: id:
type: string type: string
@@ -159,7 +161,7 @@ definitions:
type: string type: string
neighbors: neighbors:
items: items:
$ref: '#/definitions/model.Node' $ref: '#/definitions/knowledge-graph-backend_internal_model.Node'
type: array type: array
properties: properties:
additionalProperties: true additionalProperties: true
@@ -174,18 +176,18 @@ definitions:
"y": "y":
type: number type: number
type: object type: object
model.SearchResponse: knowledge-graph-backend_internal_model.SearchResponse:
properties: properties:
count: count:
type: integer type: integer
nodes: nodes:
items: items:
$ref: '#/definitions/model.Node' $ref: '#/definitions/knowledge-graph-backend_internal_model.Node'
type: array type: array
query: query:
type: string type: string
type: object type: object
model.SimpleEdge: knowledge-graph-backend_internal_model.SimpleEdge:
properties: properties:
label: label:
example: 包含 example: 包含
@@ -200,18 +202,18 @@ definitions:
example: CONTAINS example: CONTAINS
type: string type: string
type: object type: object
model.SimpleGraphData: knowledge-graph-backend_internal_model.SimpleGraphData:
properties: properties:
edges: edges:
items: items:
$ref: '#/definitions/model.SimpleEdge' $ref: '#/definitions/knowledge-graph-backend_internal_model.SimpleEdge'
type: array type: array
nodes: nodes:
items: items:
$ref: '#/definitions/model.SimpleNode' $ref: '#/definitions/knowledge-graph-backend_internal_model.SimpleNode'
type: array type: array
type: object type: object
model.SimpleNode: knowledge-graph-backend_internal_model.SimpleNode:
properties: properties:
id: id:
example: "1" example: "1"
@@ -223,7 +225,7 @@ definitions:
example: 概念 example: 概念
type: string type: string
type: object type: object
model.UpdateNodeRequest: knowledge-graph-backend_internal_model.UpdateNodeRequest:
properties: properties:
label: label:
example: 机器学习 example: 机器学习
@@ -259,30 +261,30 @@ paths:
name: request name: request
required: true required: true
schema: schema:
$ref: '#/definitions/model.CreateEdgeRequest' $ref: '#/definitions/knowledge-graph-backend_internal_model.CreateEdgeRequest'
produces: produces:
- application/json - application/json
responses: responses:
"200": "200":
description: 创建成功 description: 创建成功
schema: schema:
$ref: '#/definitions/model.EdgeResponse' $ref: '#/definitions/knowledge-graph-backend_internal_model.EdgeResponse'
"400": "400":
description: 请求错误 description: 请求错误
schema: schema:
$ref: '#/definitions/model.ErrorResponse' $ref: '#/definitions/knowledge-graph-backend_internal_model.ErrorResponse'
"404": "404":
description: 源节点或目标节点未找到 description: 源节点或目标节点未找到
schema: schema:
$ref: '#/definitions/model.ErrorResponse' $ref: '#/definitions/knowledge-graph-backend_internal_model.ErrorResponse'
"409": "409":
description: 边已存在 description: 边已存在
schema: schema:
$ref: '#/definitions/model.ErrorResponse' $ref: '#/definitions/knowledge-graph-backend_internal_model.ErrorResponse'
"500": "500":
description: 内部错误 description: 内部错误
schema: schema:
$ref: '#/definitions/model.ErrorResponse' $ref: '#/definitions/knowledge-graph-backend_internal_model.ErrorResponse'
summary: 创建边 summary: 创建边
/api/edges/{id}: /api/edges/{id}:
delete: delete:
@@ -299,15 +301,15 @@ paths:
"200": "200":
description: 删除成功 description: 删除成功
schema: schema:
$ref: '#/definitions/model.DeleteResponse' $ref: '#/definitions/knowledge-graph-backend_internal_model.DeleteResponse'
"404": "404":
description: 边未找到 description: 边未找到
schema: schema:
$ref: '#/definitions/model.ErrorResponse' $ref: '#/definitions/knowledge-graph-backend_internal_model.ErrorResponse'
"500": "500":
description: 内部错误 description: 内部错误
schema: schema:
$ref: '#/definitions/model.ErrorResponse' $ref: '#/definitions/knowledge-graph-backend_internal_model.ErrorResponse'
summary: 删除边 summary: 删除边
/api/graph: /api/graph:
get: get:
@@ -318,11 +320,11 @@ paths:
"200": "200":
description: 成功 description: 成功
schema: schema:
$ref: '#/definitions/model.GraphData' $ref: '#/definitions/knowledge-graph-backend_internal_model.GraphData'
"500": "500":
description: 内部错误 description: 内部错误
schema: schema:
$ref: '#/definitions/model.ErrorResponse' $ref: '#/definitions/knowledge-graph-backend_internal_model.ErrorResponse'
summary: 获取图数据 summary: 获取图数据
/api/graph/simpleJson: /api/graph/simpleJson:
get: get:
@@ -333,11 +335,11 @@ paths:
"200": "200":
description: 成功 description: 成功
schema: schema:
$ref: '#/definitions/model.SimpleGraphData' $ref: '#/definitions/knowledge-graph-backend_internal_model.SimpleGraphData'
"500": "500":
description: 内部错误 description: 内部错误
schema: schema:
$ref: '#/definitions/model.ErrorResponse' $ref: '#/definitions/knowledge-graph-backend_internal_model.ErrorResponse'
summary: 获取简化图数据 summary: 获取简化图数据
/api/graph/stats: /api/graph/stats:
get: get:
@@ -353,7 +355,7 @@ paths:
"500": "500":
description: 内部错误 description: 内部错误
schema: schema:
$ref: '#/definitions/model.ErrorResponse' $ref: '#/definitions/knowledge-graph-backend_internal_model.ErrorResponse'
summary: 获取图统计信息 summary: 获取图统计信息
/api/nodes: /api/nodes:
post: post:
@@ -366,26 +368,26 @@ paths:
name: request name: request
required: true required: true
schema: schema:
$ref: '#/definitions/model.CreateNodeRequest' $ref: '#/definitions/knowledge-graph-backend_internal_model.CreateNodeRequest'
produces: produces:
- application/json - application/json
responses: responses:
"200": "200":
description: 创建成功 description: 创建成功
schema: schema:
$ref: '#/definitions/model.Node' $ref: '#/definitions/knowledge-graph-backend_internal_model.Node'
"400": "400":
description: 请求错误 description: 请求错误
schema: schema:
$ref: '#/definitions/model.ErrorResponse' $ref: '#/definitions/knowledge-graph-backend_internal_model.ErrorResponse'
"409": "409":
description: 节点已存在 description: 节点已存在
schema: schema:
$ref: '#/definitions/model.ErrorResponse' $ref: '#/definitions/knowledge-graph-backend_internal_model.ErrorResponse'
"500": "500":
description: 内部错误 description: 内部错误
schema: schema:
$ref: '#/definitions/model.ErrorResponse' $ref: '#/definitions/knowledge-graph-backend_internal_model.ErrorResponse'
summary: 创建节点 summary: 创建节点
/api/nodes/{id}: /api/nodes/{id}:
delete: delete:
@@ -402,15 +404,15 @@ paths:
"200": "200":
description: 删除成功 description: 删除成功
schema: schema:
$ref: '#/definitions/model.DeleteResponse' $ref: '#/definitions/knowledge-graph-backend_internal_model.DeleteResponse'
"404": "404":
description: 节点未找到 description: 节点未找到
schema: schema:
$ref: '#/definitions/model.ErrorResponse' $ref: '#/definitions/knowledge-graph-backend_internal_model.ErrorResponse'
"500": "500":
description: 内部错误 description: 内部错误
schema: schema:
$ref: '#/definitions/model.ErrorResponse' $ref: '#/definitions/knowledge-graph-backend_internal_model.ErrorResponse'
summary: 删除节点 summary: 删除节点
get: get:
description: 根据节点 ID 获取知识图谱中的节点详细信息 description: 根据节点 ID 获取知识图谱中的节点详细信息
@@ -426,19 +428,19 @@ paths:
"200": "200":
description: 成功 description: 成功
schema: schema:
$ref: '#/definitions/model.NodeResponse' $ref: '#/definitions/knowledge-graph-backend_internal_model.NodeResponse'
"400": "400":
description: 请求错误 description: 请求错误
schema: schema:
$ref: '#/definitions/model.ErrorResponse' $ref: '#/definitions/knowledge-graph-backend_internal_model.ErrorResponse'
"404": "404":
description: 节点未找到 description: 节点未找到
schema: schema:
$ref: '#/definitions/model.ErrorResponse' $ref: '#/definitions/knowledge-graph-backend_internal_model.ErrorResponse'
"500": "500":
description: 内部错误 description: 内部错误
schema: schema:
$ref: '#/definitions/model.ErrorResponse' $ref: '#/definitions/knowledge-graph-backend_internal_model.ErrorResponse'
summary: 获取节点详情 summary: 获取节点详情
put: put:
consumes: consumes:
@@ -455,26 +457,26 @@ paths:
name: request name: request
required: true required: true
schema: schema:
$ref: '#/definitions/model.UpdateNodeRequest' $ref: '#/definitions/knowledge-graph-backend_internal_model.UpdateNodeRequest'
produces: produces:
- application/json - application/json
responses: responses:
"200": "200":
description: 更新成功 description: 更新成功
schema: schema:
$ref: '#/definitions/model.Node' $ref: '#/definitions/knowledge-graph-backend_internal_model.Node'
"400": "400":
description: 请求错误 description: 请求错误
schema: schema:
$ref: '#/definitions/model.ErrorResponse' $ref: '#/definitions/knowledge-graph-backend_internal_model.ErrorResponse'
"404": "404":
description: 节点未找到 description: 节点未找到
schema: schema:
$ref: '#/definitions/model.ErrorResponse' $ref: '#/definitions/knowledge-graph-backend_internal_model.ErrorResponse'
"500": "500":
description: 内部错误 description: 内部错误
schema: schema:
$ref: '#/definitions/model.ErrorResponse' $ref: '#/definitions/knowledge-graph-backend_internal_model.ErrorResponse'
summary: 更新节点 summary: 更新节点
/api/nodes/{id}/neighbors: /api/nodes/{id}/neighbors:
get: get:
@@ -491,19 +493,19 @@ paths:
"200": "200":
description: 成功 description: 成功
schema: schema:
$ref: '#/definitions/model.NeighborResponse' $ref: '#/definitions/knowledge-graph-backend_internal_model.NeighborResponse'
"400": "400":
description: 请求错误 description: 请求错误
schema: schema:
$ref: '#/definitions/model.ErrorResponse' $ref: '#/definitions/knowledge-graph-backend_internal_model.ErrorResponse'
"404": "404":
description: 节点未找到 description: 节点未找到
schema: schema:
$ref: '#/definitions/model.ErrorResponse' $ref: '#/definitions/knowledge-graph-backend_internal_model.ErrorResponse'
"500": "500":
description: 内部错误 description: 内部错误
schema: schema:
$ref: '#/definitions/model.ErrorResponse' $ref: '#/definitions/knowledge-graph-backend_internal_model.ErrorResponse'
summary: 获取节点邻居 summary: 获取节点邻居
/api/search: /api/search:
get: get:
@@ -520,14 +522,14 @@ paths:
"200": "200":
description: 成功 description: 成功
schema: schema:
$ref: '#/definitions/model.SearchResponse' $ref: '#/definitions/knowledge-graph-backend_internal_model.SearchResponse'
"400": "400":
description: 请求错误 description: 请求错误
schema: schema:
$ref: '#/definitions/model.ErrorResponse' $ref: '#/definitions/knowledge-graph-backend_internal_model.ErrorResponse'
"500": "500":
description: 内部错误 description: 内部错误
schema: schema:
$ref: '#/definitions/model.ErrorResponse' $ref: '#/definitions/knowledge-graph-backend_internal_model.ErrorResponse'
summary: 搜索节点 summary: 搜索节点
swagger: "2.0" swagger: "2.0"
-5
View File
@@ -83,8 +83,3 @@ type SearchResponse struct {
Nodes []Node `json:"nodes"` Nodes []Node `json:"nodes"`
} }
// ErrorResponse represents an error response
type ErrorResponse struct {
Error string `json:"error"`
Message string `json:"message"`
}
+31
View File
@@ -0,0 +1,31 @@
package service
import (
"context"
"github.com/neo4j/neo4j-go-driver/v5/neo4j"
"knowledge-graph-backend/internal/model"
)
func (s *Neo4jService) fetchNodeByID(id string) (model.Node, bool, error) {
ctx := context.Background()
result, err := neo4j.ExecuteQuery(ctx, s.driver,
`MATCH (n {id: $id}) RETURN n LIMIT 1`,
map[string]any{"id": id},
neo4j.EagerResultTransformer,
)
if err != nil {
return model.Node{}, false, err
}
if len(result.Records) == 0 {
return model.Node{}, false, nil
}
v, _ := result.Records[0].Get("n")
n, ok := v.(neo4j.Node)
if !ok {
return model.Node{}, false, nil
}
return neo4jNodeToModel(n), true, nil
}
+13
View File
@@ -0,0 +1,13 @@
package service
import "github.com/neo4j/neo4j-go-driver/v5/neo4j"
// Neo4jService provides graph operations backed by Neo4j.
type Neo4jService struct {
driver neo4j.DriverWithContext
}
// NewNeo4jService creates a new Neo4j-backed graph service.
func NewNeo4jService(driver neo4j.DriverWithContext) *Neo4jService {
return &Neo4jService{driver: driver}
}
+6
View File
@@ -0,0 +1,6 @@
$ErrorActionPreference = 'Stop'
$ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
Set-Location (Join-Path $ScriptDir 'backend')
swag init -g ./cmd/server/main.go --parseDependency --parseInternal
Executable
+7
View File
@@ -0,0 +1,7 @@
#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$SCRIPT_DIR/backend"
swag init -g ./cmd/server/main.go --parseDependency --parseInternal --output ./docs