package main import ( "fmt" "log" "git.toowon.com/jimmy/go-common/factory" ) 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配置(用于创建Redis客户端) redisConfig := fac.GetRedisConfig() if redisConfig != nil { fmt.Printf("Redis config: %s:%d\n", redisConfig.Host, redisConfig.Port) // 使用go-redis创建客户端示例: // import "github.com/redis/go-redis/v9" // rdb := redis.NewClient(&redis.Options{ // Addr: fmt.Sprintf("%s:%d", redisConfig.Host, redisConfig.Port), // Password: redisConfig.Password, // DB: redisConfig.Database, // }) } // 获取邮件客户端(已初始化,可直接使用) 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") } }