Files
go-common/examples/factory_example.go

96 lines
2.4 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package main
import (
"context"
"fmt"
"log"
"git.toowon.com/jimmy/go-common/factory"
"github.com/redis/go-redis/v9"
)
func main() {
// 方式1直接从配置文件创建工厂推荐
fac, err := factory.NewFactoryFromFile("./config/example.json")
if err != nil {
log.Fatal("Failed to create factory:", err)
}
// 直接获取数据库对象(已初始化,可直接使用)
db, err := fac.GetDatabase()
if err != nil {
log.Printf("Database not available: %v", err)
} else {
// 直接使用数据库
var count int64
if err := db.Table("users").Count(&count).Error; err != nil {
log.Printf("Failed to count users: %v", err)
} else {
fmt.Printf("User count: %d\n", count)
}
}
// 直接获取Redis客户端已初始化可直接使用
redisClient, err := fac.GetRedisClient()
if err != nil {
log.Printf("Redis not available: %v", err)
} else {
// 直接使用Redis客户端
ctx := context.Background()
val, err := redisClient.Get(ctx, "test_key").Result()
if err != nil && err != redis.Nil {
log.Printf("Redis error: %v", err)
} else if err == redis.Nil {
fmt.Println("Redis key not found")
} else {
fmt.Printf("Redis value: %s\n", val)
}
}
// 获取邮件客户端(已初始化,可直接使用)
emailClient, err := fac.GetEmailClient()
if err != nil {
log.Printf("Email client not available: %v", err)
} else {
// 直接使用
err = emailClient.SendSimple(
[]string{"recipient@example.com"},
"测试邮件",
"这是测试内容",
)
if err != nil {
log.Printf("Failed to send email: %v", err)
} else {
fmt.Println("Email sent successfully")
}
}
// 获取短信客户端(已初始化,可直接使用)
smsClient, err := fac.GetSMSClient()
if err != nil {
log.Printf("SMS client not available: %v", err)
} else {
// 直接使用
resp, err := smsClient.SendSimple(
[]string{"13800138000"},
map[string]string{"code": "123456"},
)
if err != nil {
log.Printf("Failed to send SMS: %v", err)
} else {
fmt.Printf("SMS sent: %s\n", resp.RequestID)
}
}
// 获取日志记录器(已初始化,可直接使用)
logger, err := fac.GetLogger()
if err != nil {
log.Printf("Logger not available: %v", err)
} else {
logger.Info("Application started")
logger.Debug("Debug message")
logger.Warn("Warning message")
logger.Error("Error message")
}
}