package db import ( "errors" "strings" "th7/data/config" "th7/ports" "time" ) func NewAdapter(corePort ports.CorePort, cfg config.Config) (ports.DBPort, error) { var duration time.Duration var no_logging bool var adapter ports.DBPort var err error no_logging = cfg.Board.NoLogging duration = time.Duration(cfg.Board.Logfreq) * time.Second // if no DB is specified, or nolog=true then use a dummy db adapter if _, ok := cfg.DB["type"]; !ok || no_logging { 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 }