func init() { // database configuration mydb, err := sql.Open("mysql", "root:root@/gosql?parseTime=true") if err != nil { panic(err) } translator := trx.NewMySQL5Translator() // transaction manager TM = NewTransactionManager( // database mydb, // database context factory func(inTx *bool, c dbx.IConnection) IDb { return NewDb(inTx, c, translator) }, // statement cache 1000, ) }
func InitMySQL5() (ITransactionManager, *sql.DB) { logger.Infof("******* Using MySQL5 *******\n") common.RAW_SQL = "SELECT `NAME` FROM `BOOK` WHERE `NAME` LIKE ?" translator := trx.NewMySQL5Translator() /* registering custom function. A custom translator could be created instead. */ translator.RegisterTranslation( common.TOKEN_SECONDSDIFF, func(dmlType DmlType, token Tokener, tx Translator) string { m := token.GetMembers() return fmt.Sprintf( "TIME_TO_SEC(TIMEDIFF(%s, %s))", tx.Translate(dmlType, m[0]), tx.Translate(dmlType, m[1]), ) }, ) return common.InitDB("mysql", "root:root@/gosql?parseTime=true", translator) }
func init() { TaskBoardService = new(TaskBoardServiceImpl) c, err := goconfig.ReadConfigFile("taskboard.ini") if err != nil { panic(err) } /* * ======= * WEB * ======= */ ContentDir, _ = c.GetString("web", "dir") ContentDir = replaceOsEnv(ContentDir) fmt.Println("[web]dir=", ContentDir) IpPort, _ = c.GetString("web", "ip_port") IpPort = replaceOsEnv(IpPort) fmt.Println("[web]ip_port=", IpPort) HttpsOnly, _ = c.GetBool("web", "https_only") fmt.Println("[web]https_only=", HttpsOnly) postLimit, _ = c.GetInt64("web", "post_limit") fmt.Println("[web]post_limit=", postLimit) /* * ======= * LOG * ======= */ //// log configuration - its the same the default level, _ := c.GetString("log", "level") level = replaceOsEnv(level) fmt.Println("[log]level=", level) file, _ := c.GetString("log", "file") file = replaceOsEnv(file) fmt.Println("[log]file=", file) count, _ := c.GetInt64("log", "count") fmt.Println("[log]count=", count) size, _ := c.GetInt64("log", "size") fmt.Println("[log]size=", size) logToConsole, _ := c.GetBool("log", "console") fmt.Println("[log]console=", logToConsole) logLevel := log.ParseLevel(level, log.ERROR) if logLevel <= log.INFO { log.ShowCaller(true) } // setting root writers writers := make([]log.LogWriter, 0) writers = append(writers, log.NewRollingFileAppender(file, size, int(count), true)) if logToConsole { writers = append(writers, log.NewConsoleAppender(false)) } log.Register("/", logLevel, writers...) //log.Register("/", logLevel, log.NewRollingFileAppender(file, size, int(count), true)) //master.SetLevel("pqp", log.LogLevel(level)) logger = log.LoggerFor("taskboad/biz/impl") // smtp SmtpHost, _ = c.GetString("smtp", "host") SmtpHost = replaceOsEnv(SmtpHost) fmt.Println("[smtp]host=", SmtpHost) SmtpPort, _ = c.GetString("smtp", "port") SmtpPort = replaceOsEnv(SmtpPort) fmt.Println("[smtp]port=", SmtpPort) SmtpUser, _ = c.GetString("smtp", "user") SmtpUser = replaceOsEnv(SmtpUser) fmt.Println("[smtp]user="******"smtp", "pass") SmtpPass = replaceOsEnv(SmtpPass) SmtpFrom, _ = c.GetString("smtp", "from") SmtpFrom = replaceOsEnv(SmtpFrom) fmt.Println("[smtp]from=", SmtpFrom) /* * ======================= * BEGIN DATABASE CONFIG * ======================= */ // database configuration driverName, _ := c.GetString("database", "driver_name") driverName = replaceOsEnv(driverName) fmt.Println("[database]driver_name=", driverName) dataSourceName, _ := c.GetString("database", "data_source_name") dataSourceName = replaceOsEnv(dataSourceName) fmt.Println("[database]data_source_name=", dataSourceName) statementCache, _ := c.GetInt64("database", "statement_cache") fmt.Println("[database]statement_cache=", statementCache) idle, _ := c.GetInt64("database", "idle_connections") fmt.Println("[database]idle_connections=", idle) appDB, err := sql.Open(driverName, dataSourceName) if err != nil { panic(err) } if idle > 0 { appDB.SetMaxIdleConns(int(idle)) } // wake up the database pool err = appDB.Ping() if err != nil { panic(err) } var translator = trx.NewMySQL5Translator() TM = db.NewTransactionManager( // database appDB, // databse context factory - called for each transaction func(inTx *bool, c dbx.IConnection) db.IDb { return db.NewDb(inTx, c, translator) }, // statement cache int(statementCache), ) /* * ======================= * END DATABASE CONFIG * ======================= */ Poll = poller.NewPoller(30 * time.Second) }
func initDb() (db.ITransactionManager, *sql.DB) { translator := translators.NewMySQL5Translator() return common.InitDB("mysql", "tb:tb@/taskboard?parseTime=true", translator) }