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") } }