Skip to content

Commit

Permalink
#10 add environment variables and command line arguments to DB tool
Browse files Browse the repository at this point in the history
  • Loading branch information
David Rauh committed Feb 1, 2023
1 parent d75c80e commit 3abf011
Show file tree
Hide file tree
Showing 5 changed files with 74 additions and 10 deletions.
60 changes: 57 additions & 3 deletions cmd/mb3dbtool/main.go
Original file line number Diff line number Diff line change
@@ -1,12 +1,66 @@
package main

import "github.com/MassBank/MassBank3/pkg/database"
import (
"errors"
"flag"
"github.com/MassBank/MassBank3/pkg/database"
"os"
"strconv"
)

type config struct {
database.DBConfig
gitRepo string
dataDir string
}

func main() {
database, err := database.NewMongoDB()
var userConfig = getConfig()
var db database.MB3Database
var err error
db, err = database.NewMongoDB(userConfig.DBConfig)
if err != nil {
panic(err)
}
err = db.Connect()
if err != nil {
panic(err)
}
database.Connect()
}

func getEnv(name string, fallback string) string {
if value, ok := os.LookupEnv(name); ok {
return value
}
return fallback
}

func getConfig() config {
var c = config{}
c.DbUser = getEnv("DB_USER", "massbank3")
c.DbPwd = getEnv("DB_PASSWORD", "massbank3password")
c.DbHost = getEnv("DB_HOST", "localhost")
c.DbName = getEnv("DB_NAME", "massbank3")
c.DbConnStr = getEnv("DB_CONN_STRING", "")
c.gitRepo = getEnv("MB_GIT_REPO", "https://github.com/MassBank/MassBank-data.git")
c.dataDir = getEnv("MB_DATA_DIRECTORY", "")
var dbPortEnv = getEnv("DB_PORT", "27017")
dbPort, err := strconv.ParseUint(dbPortEnv, 10, 16)
if err != nil {
panic(errors.New("Could not read port variable: DB_PORT=" + dbPortEnv))
}
c.DbPort = uint(dbPort)
flag.StringVar(&c.DbUser, "user", c.DbUser, "database user name")
flag.StringVar(&c.DbPwd, "pwd", c.DbPwd, "database user password")
flag.StringVar(&c.DbHost, "host", c.DbHost, "database host")
flag.StringVar(&c.DbName, "db", c.DbName, "database name")
flag.UintVar(&c.DbPort, "port", c.DbPort, "database port")
flag.StringVar(&c.DbConnStr, "connstr", c.DbConnStr, "database connection string")
flag.StringVar(&c.gitRepo, "git", c.gitRepo, "git host")
flag.StringVar(&c.dataDir, "dir", c.dataDir, "data directory")
flag.Parse()
if len(c.gitRepo) > 0 && len(c.dataDir) > 0 {
println("Git repo and data directory are set. Using data directory as default and git repo as fallback.")
}
return c
}
1 change: 1 addition & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ require github.com/go-chi/chi/v5 v5.0.3
require (
github.com/go-chi/cors v1.2.0
go.mongodb.org/mongo-driver v1.11.1
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2
)

require (
Expand Down
1 change: 1 addition & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ go.mongodb.org/mongo-driver v1.11.1 h1:QP0znIRTuL0jf1oBQoAoM0C6ZJfBK4kx0Uumtv1A7
go.mongodb.org/mongo-driver v1.11.1/go.mod h1:s7p5vEtfbeR1gYi6pnj3c3/urpbLv2T5Sfd6Rp2HBB8=
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d h1:sK3txAijHtOK88l68nt020reeT1ZdKLIYetKl95FzVY=
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2 h1:CIJ76btIcR3eFI5EgSo6k1qKw9KJexJuRLI9G7Hp5wE=
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ=
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
Expand Down
9 changes: 9 additions & 0 deletions pkg/database/db_interface.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,15 @@ import "github.com/MassBank/MassBank3/pkg/massbank"
type Filters struct {
}

type DBConfig struct {
DbUser string
DbPwd string
DbHost string
DbName string
DbPort uint
DbConnStr string
}

type MB3Database interface {
Connect() error
Disconnect() error
Expand Down
13 changes: 6 additions & 7 deletions pkg/database/mongodb.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,17 +50,16 @@ func (self *Mb3MongoDB) UpdateRecord(record massbank.Massbank, add bool) error {
panic("implement me")
}

func NewMongoDB() (*Mb3MongoDB, error) {
func NewMongoDB(config DBConfig) (*Mb3MongoDB, error) {
return &Mb3MongoDB{
user: "massbank3",
pwd: "massbank3password",
host: "localhost",
dbname: "massbank3",
port: 27017,
user: config.DbUser,
pwd: config.DbPwd,
host: config.DbHost,
dbname: config.DbName,
port: uint16(config.DbPort),
database: nil,
dirty: true,
}, nil

}

func (self *Mb3MongoDB) SetUser(user string) *Mb3MongoDB {
Expand Down

0 comments on commit 3abf011

Please sign in to comment.