Ver código fonte

测试通过

qdy 3 meses atrás
pai
commit
0dd3d87888
6 arquivos alterados com 13 adições e 35 exclusões
  1. 1
    1
      go.mod
  2. 4
    0
      go.sum
  3. 4
    5
      main.go
  4. 2
    27
      routes/heath.go
  5. 1
    1
      routes/query.go
  6. 1
    1
      routes/query_csv.go

+ 1
- 1
go.mod Ver arquivo

4
 
4
 
5
 require (
5
 require (
6
 	git.x2erp.com/qdy/go-base v0.1.9
6
 	git.x2erp.com/qdy/go-base v0.1.9
7
-	git.x2erp.com/qdy/go-db v0.1.11
7
+	git.x2erp.com/qdy/go-db v0.1.13
8
 	github.com/gin-gonic/gin v1.11.0
8
 	github.com/gin-gonic/gin v1.11.0
9
 )
9
 )
10
 
10
 

+ 4
- 0
go.sum Ver arquivo

4
 git.x2erp.com/qdy/go-base v0.1.9/go.mod h1:Q+YLwpCoU8CVSnzATLdz2LAzVMlz/CEGzo8DePf7cug=
4
 git.x2erp.com/qdy/go-base v0.1.9/go.mod h1:Q+YLwpCoU8CVSnzATLdz2LAzVMlz/CEGzo8DePf7cug=
5
 git.x2erp.com/qdy/go-db v0.1.11 h1:dT22aYhtfk+Y3q2/jc8UZSuCjsLFC/eBrwwTHDUTOsA=
5
 git.x2erp.com/qdy/go-db v0.1.11 h1:dT22aYhtfk+Y3q2/jc8UZSuCjsLFC/eBrwwTHDUTOsA=
6
 git.x2erp.com/qdy/go-db v0.1.11/go.mod h1:6dICJn/sZRj0WIMf5y8MfsjBC1wWZcG4lczgeIAGBhM=
6
 git.x2erp.com/qdy/go-db v0.1.11/go.mod h1:6dICJn/sZRj0WIMf5y8MfsjBC1wWZcG4lczgeIAGBhM=
7
+git.x2erp.com/qdy/go-db v0.1.12 h1:z4VfTbIMNhBbpPmjRRtSjEkXet7nvVRjTd92+IFsGbw=
8
+git.x2erp.com/qdy/go-db v0.1.12/go.mod h1:tcHV7sqEFYWbL/196NZxVnbdHevefRppggMTARVXQtE=
9
+git.x2erp.com/qdy/go-db v0.1.13 h1:gx1Ld+b3QRaO7VvyBm4fipafGkl0Yl+4ERzromAtck4=
10
+git.x2erp.com/qdy/go-db v0.1.13/go.mod h1:tcHV7sqEFYWbL/196NZxVnbdHevefRppggMTARVXQtE=
7
 github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.0 h1:Gt0j3wceWMwPmiazCa8MzMA0MfhmPIz0Qp0FJ6qcM0U=
11
 github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.0 h1:Gt0j3wceWMwPmiazCa8MzMA0MfhmPIz0Qp0FJ6qcM0U=
8
 github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.0/go.mod h1:Ot/6aikWnKWi4l9QB7qVSwa8iMphQNqkWALMoNT3rzM=
12
 github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.0/go.mod h1:Ot/6aikWnKWi4l9QB7qVSwa8iMphQNqkWALMoNT3rzM=
9
 github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.10.1 h1:B+blDbyVIG3WaikNxPnhPiJ1MThR03b3vKGtER95TP4=
13
 github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.10.1 h1:B+blDbyVIG3WaikNxPnhPiJ1MThR03b3vKGtER95TP4=

+ 4
- 5
main.go Ver arquivo

43
 
43
 
44
 	// 测试连接
44
 	// 测试连接
45
 	config := dbFactory.GetConfig()
45
 	config := dbFactory.GetConfig()
46
-	if err := routes.TestConnection(db, config.GetDatabase().Type); err != nil {
46
+	if err := factory.TestConnection(db, config.GetDatabase().Type); err != nil {
47
 		return fmt.Errorf("database connection test failed: %v", err)
47
 		return fmt.Errorf("database connection test failed: %v", err)
48
 	}
48
 	}
49
 
49
 
80
 func startHTTPServer() {
80
 func startHTTPServer() {
81
 	//建立路由
81
 	//建立路由
82
 	router := gin.Default()
82
 	router := gin.Default()
83
+	config := dbFactory.GetConfig()
84
+	serviceConfig := config.GetService()
83
 
85
 
84
 	// 核心路由
86
 	// 核心路由
85
-	router.GET("/api/health", routes.HealthHandler(db, "oracle"))
87
+	router.GET("/api/health", routes.HealthHandler(db, config.GetDatabase().Type))
86
 	router.POST("/api/query", auth.AuthMiddleware(), withQueryRequest(routes.QueryHandler(db)))
88
 	router.POST("/api/query", auth.AuthMiddleware(), withQueryRequest(routes.QueryHandler(db)))
87
 	router.POST("/api/query/csv", auth.AuthMiddleware(), withQueryRequest(routes.QueryHandlerCSV(db)))
89
 	router.POST("/api/query/csv", auth.AuthMiddleware(), withQueryRequest(routes.QueryHandlerCSV(db)))
88
 	router.GET("/api/info", routes.InfoHandler(dbFactory))
90
 	router.GET("/api/info", routes.InfoHandler(dbFactory))
89
 
91
 
90
-	config := dbFactory.GetConfig()
91
-	serviceConfig := config.GetService()
92
-
93
 	// 日志输出配置信息
92
 	// 日志输出配置信息
94
 	log.Printf("Service Port: %d", serviceConfig.Port)
93
 	log.Printf("Service Port: %d", serviceConfig.Port)
95
 	log.Printf("Service IdleTimeout: %d", serviceConfig.IdleTimeout)
94
 	log.Printf("Service IdleTimeout: %d", serviceConfig.IdleTimeout)

+ 2
- 27
routes/heath.go Ver arquivo

2
 
2
 
3
 import (
3
 import (
4
 	"database/sql"
4
 	"database/sql"
5
-	"fmt"
6
 	"time"
5
 	"time"
7
 
6
 
8
 	"github.com/gin-gonic/gin"
7
 	"github.com/gin-gonic/gin"
9
 
8
 
10
 	"git.x2erp.com/qdy/go-base/types"
9
 	"git.x2erp.com/qdy/go-base/types"
10
+	"git.x2erp.com/qdy/go-db/factory"
11
 )
11
 )
12
 
12
 
13
 // HealthHandler 返回一个处理函数
13
 // HealthHandler 返回一个处理函数
14
 func HealthHandler(db *sql.DB, dbType string) gin.HandlerFunc {
14
 func HealthHandler(db *sql.DB, dbType string) gin.HandlerFunc {
15
 	return func(c *gin.Context) {
15
 	return func(c *gin.Context) {
16
 
16
 
17
-		err := TestConnection(db, dbType)
17
+		err := factory.TestConnection(db, dbType)
18
 		success := err == nil
18
 		success := err == nil
19
 
19
 
20
 		status := "DOWN"
20
 		status := "DOWN"
39
 		})
39
 		})
40
 	}
40
 	}
41
 }
41
 }
42
-
43
-// testConnection 测试数据库连接
44
-func TestConnection(db *sql.DB, dbType string) error {
45
-	var query string
46
-	switch dbType {
47
-	case "mysql", "postgres", "sqlserver":
48
-		query = "SELECT 1"
49
-	case "oracle":
50
-		query = "SELECT 1 FROM DUAL"
51
-	default:
52
-		query = "SELECT 1"
53
-	}
54
-
55
-	var result int
56
-	err := db.QueryRow(query).Scan(&result)
57
-	if err != nil {
58
-		return err
59
-	}
60
-
61
-	if result != 1 {
62
-		return fmt.Errorf("unexpected test result: %d", result)
63
-	}
64
-
65
-	return nil
66
-}

+ 1
- 1
routes/query.go Ver arquivo

12
 // 创建带 db 的 handler
12
 // 创建带 db 的 handler
13
 func QueryHandler(db *sql.DB) func(c *gin.Context, req types.QueryRequest) {
13
 func QueryHandler(db *sql.DB) func(c *gin.Context, req types.QueryRequest) {
14
 	return func(c *gin.Context, req types.QueryRequest) {
14
 	return func(c *gin.Context, req types.QueryRequest) {
15
-		result := factory.QuickQueryToJSON(db, req.SQL)
15
+		result := factory.QueryToJSON(db, req.SQL)
16
 		c.JSON(200, result)
16
 		c.JSON(200, result)
17
 	}
17
 	}
18
 }
18
 }

routes/queryCSV.go → routes/query_csv.go Ver arquivo

13
 // 创建带 db 的 handler
13
 // 创建带 db 的 handler
14
 func QueryHandlerCSV(db *sql.DB) func(c *gin.Context, req types.QueryRequest) {
14
 func QueryHandlerCSV(db *sql.DB) func(c *gin.Context, req types.QueryRequest) {
15
 	return func(c *gin.Context, req types.QueryRequest) {
15
 	return func(c *gin.Context, req types.QueryRequest) {
16
-		csvData, err := factory.QuickQueryToCSV(db, req.SQL)
16
+		csvData, err := factory.QueryToCSV(db, req.SQL)
17
 		if err != nil {
17
 		if err != nil {
18
 			// 错误时也返回CSV格式,而不是JSON
18
 			// 错误时也返回CSV格式,而不是JSON
19
 			errorCSV := mycsv.CreateStringToCSV(err.Error())
19
 			errorCSV := mycsv.CreateStringToCSV(err.Error())

Carregando…
Cancelar
Salvar