package app import ( "time" db "git.ego.freeddns.org/egommerce/go-api-pkg/database" redis "github.com/go-redis/redis/v8" ) type ( Plugin struct { name string fn PluginFn } PluginFn func() any ) func CachePlugin(cArr map[string]string) Plugin { // fmt.Println(cArr["cacheAddr"], cArr["cacheUsername"], cArr["cachePassword"]) return Plugin{ name: "cache", fn: func() any { // FIXME: return type return redis.NewClient(&redis.Options{ Addr: cArr["cacheAddr"], Username: cArr["cacheUsername"], Password: cArr["cachePassword"], DB: 0, DialTimeout: 100 * time.Millisecond, }) }, } } func DatabasePlugin(cArr map[string]string) Plugin { return Plugin{ name: "database", fn: func() any { // FIXME: return type dbConn, _ := db.Connect(cArr["dbURL"]) // if err != nil { // log.Fatalf("Failed to connect to the Database: %s. Err: %v\n", cArr["dbURL"], err) // os.Exit(1) // } return dbConn }, } } // func EventbusPlugin(cArr map[string]string) Plugin { // return Plugin{ // name: "eventbus", // fn: func() any { // FIXME: return type // conn, err := amqp.Dial(cArr["eventBusURL"]) // if err != nil { // log.Fatalf("Failed to connect to the EventBus: %s. Err: %v\n", cArr["eventBusURL"], err) // os.Exit(1) // TODO: retry in background... // } // chn, err := conn.Channel() // if err != nil { // log.Fatalf("Failed to open new EventBus channel. Err: %v\n", err) // os.Exit(1) // TODO: retry in background... // } // return chn // }, // } // }