初始版本,工具基础类
This commit is contained in:
124
examples/config_example.go
Normal file
124
examples/config_example.go
Normal file
@@ -0,0 +1,124 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
|
||||
"github.com/go-common/config"
|
||||
"github.com/go-common/middleware"
|
||||
// "gorm.io/driver/mysql"
|
||||
// "gorm.io/gorm"
|
||||
)
|
||||
|
||||
func main() {
|
||||
// 加载配置文件
|
||||
cfg, err := config.LoadFromFile("./config/example.json")
|
||||
if err != nil {
|
||||
log.Fatal("Failed to load config:", err)
|
||||
}
|
||||
|
||||
// 1. 使用数据库配置
|
||||
fmt.Println("=== Database Config ===")
|
||||
dbConfig := cfg.GetDatabase()
|
||||
if dbConfig != nil {
|
||||
fmt.Printf("Type: %s\n", dbConfig.Type)
|
||||
fmt.Printf("Host: %s:%d\n", dbConfig.Host, dbConfig.Port)
|
||||
fmt.Printf("Database: %s\n", dbConfig.Database)
|
||||
fmt.Printf("User: %s\n", dbConfig.User)
|
||||
}
|
||||
|
||||
// 获取数据库连接字符串
|
||||
dsn, err := cfg.GetDatabaseDSN()
|
||||
if err != nil {
|
||||
log.Printf("Failed to get DSN: %v", err)
|
||||
} else {
|
||||
fmt.Printf("DSN: %s\n", dsn)
|
||||
// 实际使用时可以这样连接数据库
|
||||
// db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
|
||||
// if err != nil {
|
||||
// log.Fatal(err)
|
||||
// }
|
||||
}
|
||||
|
||||
// 2. 使用OSS配置
|
||||
fmt.Println("\n=== OSS Config ===")
|
||||
ossConfig := cfg.GetOSS()
|
||||
if ossConfig != nil {
|
||||
fmt.Printf("Provider: %s\n", ossConfig.Provider)
|
||||
fmt.Printf("Endpoint: %s\n", ossConfig.Endpoint)
|
||||
fmt.Printf("Bucket: %s\n", ossConfig.Bucket)
|
||||
fmt.Printf("Region: %s\n", ossConfig.Region)
|
||||
}
|
||||
|
||||
// 3. 使用Redis配置
|
||||
fmt.Println("\n=== Redis Config ===")
|
||||
redisConfig := cfg.GetRedis()
|
||||
if redisConfig != nil {
|
||||
fmt.Printf("Host: %s\n", redisConfig.Host)
|
||||
fmt.Printf("Port: %d\n", redisConfig.Port)
|
||||
fmt.Printf("Database: %d\n", redisConfig.Database)
|
||||
}
|
||||
|
||||
// 获取Redis地址
|
||||
redisAddr := cfg.GetRedisAddr()
|
||||
fmt.Printf("Redis Address: %s\n", redisAddr)
|
||||
|
||||
// 4. 使用CORS配置
|
||||
fmt.Println("\n=== CORS Config ===")
|
||||
corsConfig := cfg.GetCORS()
|
||||
if corsConfig != nil {
|
||||
fmt.Printf("Allowed Origins: %v\n", corsConfig.AllowedOrigins)
|
||||
fmt.Printf("Allowed Methods: %v\n", corsConfig.AllowedMethods)
|
||||
fmt.Printf("Max Age: %d\n", corsConfig.MaxAge)
|
||||
}
|
||||
|
||||
// 使用CORS配置创建中间件
|
||||
chain := middleware.NewChain(
|
||||
middleware.CORS(corsConfig),
|
||||
)
|
||||
fmt.Printf("CORS middleware created: %v\n", chain != nil)
|
||||
|
||||
// 5. 使用MinIO配置
|
||||
fmt.Println("\n=== MinIO Config ===")
|
||||
minioConfig := cfg.GetMinIO()
|
||||
if minioConfig != nil {
|
||||
fmt.Printf("Endpoint: %s\n", minioConfig.Endpoint)
|
||||
fmt.Printf("Bucket: %s\n", minioConfig.Bucket)
|
||||
fmt.Printf("UseSSL: %v\n", minioConfig.UseSSL)
|
||||
}
|
||||
|
||||
// 6. 使用邮件配置
|
||||
fmt.Println("\n=== Email Config ===")
|
||||
emailConfig := cfg.GetEmail()
|
||||
if emailConfig != nil {
|
||||
fmt.Printf("Host: %s:%d\n", emailConfig.Host, emailConfig.Port)
|
||||
fmt.Printf("From: %s <%s>\n", emailConfig.FromName, emailConfig.From)
|
||||
fmt.Printf("UseTLS: %v\n", emailConfig.UseTLS)
|
||||
}
|
||||
|
||||
// 7. 使用短信配置
|
||||
fmt.Println("\n=== SMS Config ===")
|
||||
smsConfig := cfg.GetSMS()
|
||||
if smsConfig != nil {
|
||||
fmt.Printf("Region: %s\n", smsConfig.Region)
|
||||
fmt.Printf("Sign Name: %s\n", smsConfig.SignName)
|
||||
fmt.Printf("Template Code: %s\n", smsConfig.TemplateCode)
|
||||
}
|
||||
|
||||
// 示例:实际使用配置连接数据库
|
||||
fmt.Println("\n=== Example: Connect to Database ===")
|
||||
if dbConfig != nil && dbConfig.Type == "mysql" {
|
||||
// 注意:这里只是示例,实际使用时需要确保数据库服务正在运行
|
||||
// db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
|
||||
// if err != nil {
|
||||
// log.Printf("Failed to connect to database: %v", err)
|
||||
// } else {
|
||||
// fmt.Println("Database connected successfully")
|
||||
// sqlDB, _ := db.DB()
|
||||
// sqlDB.SetMaxOpenConns(dbConfig.MaxOpenConns)
|
||||
// sqlDB.SetMaxIdleConns(dbConfig.MaxIdleConns)
|
||||
// sqlDB.SetConnMaxLifetime(time.Duration(dbConfig.ConnMaxLifetime) * time.Second)
|
||||
// }
|
||||
fmt.Println("Database connection example (commented out)")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user