Procházet zdrojové kódy

多数据库测试通过

qdy před 1 měsícem
rodič
revize
c48e03c3a9

binární
.DS_Store Zobrazit soubor


+ 0
- 95
dbstart/db_bootstrapper.go Zobrazit soubor

@@ -1,95 +0,0 @@
1
-package dbstart
2
-
3
-// import (
4
-// 	"log"
5
-
6
-// 	"git.x2erp.com/qdy/go-base/config"
7
-// 	"git.x2erp.com/qdy/go-base/logger"
8
-// 	"git.x2erp.com/qdy/go-db/factory/database"
9
-// )
10
-
11
-// // DBBootstrapper 数据库启动器
12
-// type DBBootstrapper struct {
13
-// 	DBFactories map[string]*database.DBFactory // 改为map存储多个数据库实例
14
-// 	cfg         config.IConfig
15
-// }
16
-
17
-// // NewDBBootstrapper 创建数据库启动器
18
-// func NewDBBootstrapper(cfg config.IConfig) *DBBootstrapper {
19
-// 	return &DBBootstrapper{
20
-// 		DBFactories: make(map[string]*database.DBFactory),
21
-// 		cfg:         cfg,
22
-// 	}
23
-// }
24
-
25
-// // Init 初始化默认数据库
26
-// func (db *DBBootstrapper) Init() *DBBootstrapper {
27
-// 	if db.cfg == nil {
28
-// 		log.Fatal("配置未初始化,请先传入配置")
29
-// 	}
30
-
31
-// 	// // 初始化默认数据库
32
-// 	// dbCfg := db.cfg.GetDatabaseConfig()
33
-// 	// if dbCfg == nil {
34
-// 	// 	log.Fatal("默认数据库配置未找到")
35
-// 	// }
36
-
37
-// 	// log.Printf("正在连接默认数据库: %s:%d/%s",
38
-// 	// 	dbCfg.Host, dbCfg.Port, dbCfg.Database)
39
-
40
-// 	dbFactory, err := database.GetDefaultDBFactory()
41
-// 	if err != nil {
42
-// 		log.Fatalf("默认数据库连接失败: %v", err)
43
-// 	}
44
-
45
-// 	db.DBFactories["default"] = dbFactory
46
-// 	log.Println("默认数据库连接成功")
47
-
48
-// 	return db
49
-// }
50
-
51
-// // GetDBFactory 获取数据库工厂
52
-// func (db *DBBootstrapper) GetDBFactory(dbName string) *database.DBFactory {
53
-// 	// 如果已经初始化,直接返回
54
-// 	if factory, exists := db.DBFactories[dbName]; exists {
55
-// 		return factory
56
-// 	}
57
-
58
-// 	// 如果还没初始化,按需初始化
59
-// 	dbFactory, err := database.GetDBFactory(dbName)
60
-// 	if err != nil {
61
-// 		log.Printf("❌ 获取数据库 '%s' 失败: %v", dbName, err)
62
-// 		return nil
63
-// 	}
64
-
65
-// 	db.DBFactories[dbName] = dbFactory
66
-// 	return dbFactory
67
-// }
68
-
69
-// // GetDefaultDBFactory 获取默认数据库工厂
70
-// func (db *DBBootstrapper) GetDefaultDBFactory() *database.DBFactory {
71
-// 	return db.GetDBFactory("default")
72
-// }
73
-
74
-// // Close 关闭所有数据库连接
75
-// func (db *DBBootstrapper) Close() {
76
-
77
-// 	for name, factory := range db.DBFactories {
78
-// 		logger.Info("正在关闭数据库: %s, factory: %v", name, factory)
79
-// 		if factory != nil {
80
-// 			factory.Close()
81
-// 			logger.Info("数据库 '%s' 连接已关闭", name)
82
-// 		} else {
83
-// 			logger.Error("⚠️  警告: 数据库 '%s' 的 factory 为 nil", name)
84
-// 		}
85
-// 	}
86
-
87
-// 	// 清空map
88
-// 	db.DBFactories = make(map[string]*database.DBFactory)
89
-// 	logger.Info("所有数据库连接已关闭.")
90
-// }
91
-
92
-// // 在 dbstart 包中
93
-// func (db *DBBootstrapper) OnShutdown() {
94
-// 	db.Close()
95
-// }

drivers/doris.go → driver/doris.go Zobrazit soubor

@@ -1,4 +1,4 @@
1
-package drivers
1
+package driver
2 2
 
3 3
 import (
4 4
 	"fmt"

drivers/driver.go → driver/driver.go Zobrazit soubor

@@ -1,4 +1,4 @@
1
-package drivers
1
+package driver
2 2
 
3 3
 import (
4 4
 	"fmt"

drivers/mysql.go → driver/mysql.go Zobrazit soubor

@@ -1,4 +1,4 @@
1
-package drivers
1
+package driver
2 2
 
3 3
 import (
4 4
 	"fmt"

drivers/oracle.go → driver/oracle.go Zobrazit soubor

@@ -1,4 +1,4 @@
1
-package drivers
1
+package driver
2 2
 
3 3
 import (
4 4
 	"fmt"

drivers/postgresql.go → driver/postgresql.go Zobrazit soubor

@@ -1,4 +1,4 @@
1
-package drivers
1
+package driver
2 2
 
3 3
 import (
4 4
 	"fmt"

drivers/sqlserver.go → driver/sqlserver.go Zobrazit soubor

@@ -1,4 +1,4 @@
1
-package drivers
1
+package driver
2 2
 
3 3
 import (
4 4
 	"fmt"

+ 16
- 16
factory/database/db_factory.go Zobrazit soubor

@@ -10,8 +10,8 @@ import (
10 10
 	"git.x2erp.com/qdy/go-base/ctx"
11 11
 	"git.x2erp.com/qdy/go-base/logger"
12 12
 	"git.x2erp.com/qdy/go-base/model/response"
13
-	"git.x2erp.com/qdy/go-db/drivers"
14
-	"git.x2erp.com/qdy/go-db/functions"
13
+	"git.x2erp.com/qdy/go-db/driver"
14
+	"git.x2erp.com/qdy/go-db/function"
15 15
 
16 16
 	"github.com/jmoiron/sqlx"
17 17
 )
@@ -80,14 +80,14 @@ func createDBFactoryNew(config *subconfigs.DatabaseConfig) (*DBFactory, error) {
80 80
 	log.Printf("Creating database connection...")
81 81
 
82 82
 	// 获取对应的驱动
83
-	dbDriver, err := drivers.Get(config.Type)
83
+	dbDriver, err := driver.Get(config.Type)
84 84
 	if err != nil {
85 85
 		initErrDB = fmt.Errorf("failed to get database driver: %v", err)
86 86
 		return nil, initErrDB
87 87
 	}
88 88
 
89 89
 	// 将内部 DBConfig 转换为 drivers.DBConfig
90
-	driverConfig := drivers.DBConfig{
90
+	driverConfig := driver.DBConfig{
91 91
 		Type:            config.Type,
92 92
 		Host:            config.Host,
93 93
 		Port:            config.Port,
@@ -107,7 +107,7 @@ func createDBFactoryNew(config *subconfigs.DatabaseConfig) (*DBFactory, error) {
107 107
 	}
108 108
 
109 109
 	// 测试连接
110
-	if err := functions.TestConnection(db, config.Type); err != nil {
110
+	if err := function.TestConnection(db, config.Type); err != nil {
111 111
 		db.Close()
112 112
 		initErrDB = fmt.Errorf("database connection test failed: %v", err)
113 113
 		return nil, initErrDB
@@ -153,54 +153,54 @@ func (f *DBFactory) GetConfig() subconfigs.DatabaseConfig {
153 153
 
154 154
 // TestConnection 测试连接
155 155
 func (f *DBFactory) TestConnection() error {
156
-	return functions.TestConnection(f.db, f.config.Type)
156
+	return function.TestConnection(f.db, f.config.Type)
157 157
 }
158 158
 
159 159
 // ========== 快捷操作方法 ==========
160 160
 
161 161
 // QueryToJSON 快捷查询,直接返回 JSON 字节流
162 162
 func (f *DBFactory) QueryToJSON(sql string, reqCtx *ctx.RequestContext) *response.QueryResult[[]map[string]interface{}] {
163
-	return functions.QueryToJSON(f.db, sql, reqCtx)
163
+	return function.QueryToJSON(f.db, sql, reqCtx)
164 164
 }
165 165
 
166 166
 // QueryPositionalToJSON 位置参数查询并返回 JSON 字节数据
167 167
 func (f *DBFactory) QueryPositionalToJSON(sql string, params []interface{}, reqCtx *ctx.RequestContext) *response.QueryResult[[]map[string]interface{}] {
168
-	return functions.QueryPositionalToJSON(f.db, sql, params, reqCtx)
168
+	return function.QueryPositionalToJSON(f.db, sql, params, reqCtx)
169 169
 }
170 170
 
171 171
 // QueryParamsNameToJSON 命名参数查询并返回 JSON 字节数据
172 172
 func (f *DBFactory) QueryParamsNameToJSON(sql string, params map[string]interface{}, reqCtx *ctx.RequestContext) *response.QueryResult[[]map[string]interface{}] {
173
-	return functions.QueryParamsNameToJSON(f.db, sql, params, reqCtx)
173
+	return function.QueryParamsNameToJSON(f.db, sql, params, reqCtx)
174 174
 }
175 175
 
176 176
 // QueryToCSV 快捷查询,直接返回 CSV 字符串(包含表头)
177 177
 func (f *DBFactory) QueryToCSV(sql string, writerHeader bool, reqCtx *ctx.RequestContext) ([]byte, error) {
178
-	return functions.QueryToCSV(f.db, sql, writerHeader, reqCtx)
178
+	return function.QueryToCSV(f.db, sql, writerHeader, reqCtx)
179 179
 }
180 180
 
181 181
 // QueryPositionalToCSV 位置参数查询并返回 CSV 字节数据
182 182
 func (f *DBFactory) QueryPositionalToCSV(sql string, writerHeader bool, params []interface{}, reqCtx *ctx.RequestContext) ([]byte, error) {
183
-	return functions.QueryPositionalToCSV(f.db, sql, writerHeader, params, reqCtx)
183
+	return function.QueryPositionalToCSV(f.db, sql, writerHeader, params, reqCtx)
184 184
 }
185 185
 
186 186
 // QueryParamsNameToCSV 命名参数查询并返回 CSV 字节数据
187 187
 func (f *DBFactory) QueryParamsNameToCSV(sql string, writerHeader bool, params map[string]interface{}, reqCtx *ctx.RequestContext) ([]byte, error) {
188
-	return functions.QueryParamsNameToCSV(f.db, sql, writerHeader, params, reqCtx)
188
+	return function.QueryParamsNameToCSV(f.db, sql, writerHeader, params, reqCtx)
189 189
 }
190 190
 
191 191
 // ExecuteDDL 快捷执行DDL语句
192 192
 func (f *DBFactory) ExecuteDDL(ddlSQL string) error {
193
-	return functions.ExecuteDDL(f.db, ddlSQL)
193
+	return function.ExecuteDDL(f.db, ddlSQL)
194 194
 }
195 195
 
196 196
 // ExecuteDDLWithTx 快捷在事务中执行DDL语句
197 197
 func (f *DBFactory) ExecuteDDLWithTx(ddlSQL string) error {
198
-	return functions.ExecuteDDLWithTx(f.db, ddlSQL)
198
+	return function.ExecuteDDLWithTx(f.db, ddlSQL)
199 199
 }
200 200
 
201 201
 // ExecuteMultipleDDL 快捷执行多个DDL语句
202 202
 func (f *DBFactory) ExecuteMultipleDDL(ddlSQLs []string) error {
203
-	return functions.ExecuteMultipleDDL(f.db, ddlSQLs)
203
+	return function.ExecuteMultipleDDL(f.db, ddlSQLs)
204 204
 }
205 205
 
206 206
 // GetDBType 得到当前使用数据库类型
@@ -240,7 +240,7 @@ func (f *DBFactory) Ping() error {
240 240
 
241 241
 // GetAvailableDrivers 获取可用的数据库驱动
242 242
 func (f *DBFactory) GetAvailableDrivers() []string {
243
-	return drivers.GetAllDrivers()
243
+	return driver.GetAllDrivers()
244 244
 }
245 245
 
246 246
 // ========== 新增的简化操作方法 ==========

functions/execute_sql.go → function/execute_sql.go Zobrazit soubor

@@ -1,4 +1,4 @@
1
-package functions
1
+package function
2 2
 
3 3
 import (
4 4
 	"fmt"

functions/query_csv.go → function/query_csv.go Zobrazit soubor

@@ -1,4 +1,4 @@
1
-package functions
1
+package function
2 2
 
3 3
 import (
4 4
 	"database/sql"

functions/query_json.go → function/query_json.go Zobrazit soubor

@@ -1,4 +1,4 @@
1
-package functions
1
+package function
2 2
 
3 3
 import (
4 4
 	"database/sql"

functions/testConnection.go → function/testConnection.go Zobrazit soubor

@@ -1,4 +1,4 @@
1
-package functions
1
+package function
2 2
 
3 3
 import (
4 4
 	"fmt"

+ 5
- 5
go.mod Zobrazit soubor

@@ -4,7 +4,7 @@ module git.x2erp.com/qdy/go-db
4 4
 go 1.25.4
5 5
 
6 6
 require (
7
-	git.x2erp.com/qdy/go-base v0.1.13-20251231-1
7
+	git.x2erp.com/qdy/go-base v0.1.15
8 8
 	github.com/go-sql-driver/mysql v1.9.3
9 9
 	github.com/lib/pq v1.10.9
10 10
 	github.com/microsoft/go-mssqldb v1.9.4
@@ -23,8 +23,8 @@ require (
23 23
 	github.com/xdg-go/stringprep v1.0.4 // indirect
24 24
 	github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 // indirect
25 25
 	go.uber.org/multierr v1.10.0 // indirect
26
-	golang.org/x/net v0.47.0 // indirect
27
-	golang.org/x/sync v0.18.0 // indirect
26
+	golang.org/x/net v0.48.0 // indirect
27
+	golang.org/x/sync v0.19.0 // indirect
28 28
 	gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect
29 29
 	gopkg.in/yaml.v2 v2.4.0 // indirect
30 30
 )
@@ -39,6 +39,6 @@ require (
39 39
 	github.com/jmoiron/sqlx v1.4.0
40 40
 	github.com/streadway/amqp v1.1.0
41 41
 	go.mongodb.org/mongo-driver v1.17.6
42
-	golang.org/x/crypto v0.45.0 // indirect
43
-	golang.org/x/text v0.31.0 // indirect
42
+	golang.org/x/crypto v0.46.0 // indirect
43
+	golang.org/x/text v0.32.0 // indirect
44 44
 )

+ 12
- 12
go.sum Zobrazit soubor

@@ -1,7 +1,7 @@
1 1
 filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
2 2
 filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
3
-git.x2erp.com/qdy/go-base v0.1.13-20251231-1 h1:lalbX9ZF8oFv2f5OV7Uxc85UGD5lb1M45YS3uSrBCJk=
4
-git.x2erp.com/qdy/go-base v0.1.13-20251231-1/go.mod h1:bhbWJO4/dxNNjXjie1E0G41pvKEEm2dPnRXRzYnV9tU=
3
+git.x2erp.com/qdy/go-base v0.1.15 h1:aiboznLQcqIIaM3fjzE6J/N2ZsqANu1hpUI6UZI9YFU=
4
+git.x2erp.com/qdy/go-base v0.1.15/go.mod h1:L8ZNdgZ6HqcZqIPX9t+bdKFMl33IsnuUCD1KoHIkuIw=
5 5
 github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.0 h1:Gt0j3wceWMwPmiazCa8MzMA0MfhmPIz0Qp0FJ6qcM0U=
6 6
 github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.0/go.mod h1:Ot/6aikWnKWi4l9QB7qVSwa8iMphQNqkWALMoNT3rzM=
7 7
 github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.10.1 h1:B+blDbyVIG3WaikNxPnhPiJ1MThR03b3vKGtER95TP4=
@@ -96,33 +96,33 @@ go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc=
96 96
 go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
97 97
 golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
98 98
 golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
99
-golang.org/x/crypto v0.45.0 h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q=
100
-golang.org/x/crypto v0.45.0/go.mod h1:XTGrrkGJve7CYK7J8PEww4aY7gM3qMCElcJQ8n8JdX4=
99
+golang.org/x/crypto v0.46.0 h1:cKRW/pmt1pKAfetfu+RCEvjvZkA9RimPbh7bhFjGVBU=
100
+golang.org/x/crypto v0.46.0/go.mod h1:Evb/oLKmMraqjZ2iQTwDwvCtJkczlDuTmdJXoZVzqU0=
101 101
 golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
102 102
 golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
103 103
 golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
104 104
 golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
105
-golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY=
106
-golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU=
105
+golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU=
106
+golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY=
107 107
 golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
108 108
 golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
109
-golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I=
110
-golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
109
+golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4=
110
+golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
111 111
 golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
112 112
 golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
113 113
 golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
114 114
 golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
115 115
 golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
116
-golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc=
117
-golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
116
+golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk=
117
+golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
118 118
 golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
119 119
 golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
120 120
 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
121 121
 golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
122 122
 golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
123 123
 golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
124
-golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM=
125
-golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM=
124
+golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU=
125
+golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY=
126 126
 golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE=
127 127
 golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg=
128 128
 golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=

Loading…
Zrušit
Uložit