package db import ( "errors" "strings" "th7/data/config" "th7/ports" "time" ) const ( DB_LOGGER_DEFAULT_DUR = 300 ) func NewAdapter(corePort ports.CorePort, cfg config.Config) (ports.DBPort, error) { var duration time.Duration var adapter ports.DBPort var err error // if `freq' is not present in the DB map, use default of 5 minutes (300 sec) if _, ok := cfg.DB["freq"]; !ok { duration = time.Duration(DB_LOGGER_DEFAULT_DUR) * time.Second } else { duration = time.Duration(cfg.DB["freq"].(int64)) * time.Second } // if no DB is specified, or nolog=true then use a dummy db adapter if _, ok := cfg.DB["type"]; !ok || cfg.Board.NoLog { adapter, _ = NewDummyAdapter(cfg) go startLoggingProcess(adapter, corePort, duration) return adapter, nil } db := cfg.DB["type"].(string) switch strings.ToLower(db) { case "sqlite3": adapter, err = NewSQLite3Adapter(cfg) case "influxdb": adapter, err = NewInfluxDBAdapter(cfg) default: return &DummyAdapter{cfg: cfg}, errors.New("unknown db type") } if err != nil { return &DummyAdapter{cfg: cfg}, err } go startLoggingProcess(adapter, corePort, duration) return adapter, nil }