func NewMySQL(conString string, maxIdleCon int) *MySQL { myDB, dbError := sql.Open("mysql", conString) app.Chk(dbError) /* test connection */ app.Chk(myDB.Ping()) myDB.SetMaxIdleConns(maxIdleCon) pg := MySQL{db: myDB} return &pg }
func main() { //Profiling // go func() { // log.Println(http.ListenAndServe(":6060", nil)) // }() var ( config *app.Config ) envParser := env_parser.NewEnvParser() envParser.Name(appName) envParser.Separator("_") envSrc := app.Envs{} envParseError := envParser.Map(&envSrc) app.Chk(envParseError) app.PrintWelcome() switch envSrc.Mode { case app.MODE_DEV: logr.Level = logrus.InfoLevel case app.MODE_PROD: logr.Level = logrus.WarnLevel case app.MODE_DEBUG: logr.Level = logrus.DebugLevel } config = app.NewConfig(envSrc.AssetsUrl, envSrc.UploadPath) logFile, fileError := os.OpenFile(envSrc.LogPath, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0660) defer logFile.Close() if fileError == nil { logr.Out = logFile } else { fmt.Println("invalid log file; \n, Error : ", fileError, "\nopting standard output..") } redisService, reErr := services.NewRedis(envSrc.RedisUrl) reErr = reErr sqlConnectionStringFormat := "%s:%s@tcp(%s:%s)/%s" sqlConnectionString := fmt.Sprintf(sqlConnectionStringFormat, envSrc.MysqlUser, envSrc.MysqlPassword, envSrc.MysqlHost, envSrc.MysqlPort, envSrc.MysqlDbName) mySqlService := services.NewMySQL(sqlConnectionString, 10) //TODO check baseHandler := handlers.NewBaseHandler(logr, config) userHandler := handlers.NewUserHandler(baseHandler, redisService, mySqlService) reqHandler := handlers.NewRequestHandler(baseHandler, redisService, mySqlService) goji.Post("/register", baseHandler.Route(userHandler.DoRegistration)) goji.Post("/login", baseHandler.Route(userHandler.DoLogin)) goji.Get("/bloodReq", baseHandler.Route(reqHandler.RemoveBloodRequest)) goji.Post("/bloodReq", baseHandler.Route(reqHandler.MakeBloodRequest)) goji.Delete("/bloodReq", baseHandler.Route(reqHandler.RemoveBloodRequest)) goji.NotFound(baseHandler.NotFound) goji.Serve() }