From 1cf6c6b9a0c453e74c8b1213387f59803f8c8513 Mon Sep 17 00:00:00 2001 From: edwinvautier Date: Mon, 29 Mar 2021 12:13:12 +0200 Subject: [PATCH 1/2] feat(env): Read db config from .env file, default variables set to DBMS default port. --- config/create_command.go | 13 +++++++++++++ templates/.env.dist.template | 8 +++++++- templates/main.go.template | 12 +++++++----- templates/shared/database/connector.go.template | 2 +- 4 files changed, 28 insertions(+), 7 deletions(-) diff --git a/config/create_command.go b/config/create_command.go index cdcf55c..d926493 100644 --- a/config/create_command.go +++ b/config/create_command.go @@ -72,3 +72,16 @@ type CreateCmdConfig struct { ProjectPath string AuthModule bool } + +// Lorsque l'on appelle la CLI, il faut déterminer si on est dans un projet ou non +// être dans un projet = avoir un fichier de config dans le workdir + +// Lorsque l'on utilise le go-cli create, il faut sauvegarder les choix de l'utilisateur dans la config du projet + +// Voir comment gérer plusieurs fichiers de config avec viper + +// Ainsi quand on va par exemple vouloir utiliser go-cli install auth-module, on pourra modifier la config du projet +// pour que les prochaines générations de templates ne suppriment pas certains fichiers + +// Les commandes n'ont pas toutes besoin du même contexte, en effet seule la commande de création a besoin du git username etc.. +// En revanche ces éléments (project name, dbms...) peuvent être stockés dans la config du nouveau projet \ No newline at end of file diff --git a/templates/.env.dist.template b/templates/.env.dist.template index 984e15b..283c7af 100644 --- a/templates/.env.dist.template +++ b/templates/.env.dist.template @@ -3,4 +3,10 @@ TOKEN_VALID_DURATION=60 RSA_PUBLIC_PATH=../public.pem RSA_PRIVATE_PATH=../private.pem RSA_PASSWORD=password -DOMAIN=localhost{{end}} \ No newline at end of file +DOMAIN=localhost{{end}} + +DB_USER=root +DB_PASSWORD=root +DB_NAME=db +DB_HOST={{.DBMS}} +DB_PORT={{if eq .DBMS "postgres"}}5432{{else}}3306{{end}} \ No newline at end of file diff --git a/templates/main.go.template b/templates/main.go.template index c346f1b..a9cd5e5 100644 --- a/templates/main.go.template +++ b/templates/main.go.template @@ -5,11 +5,12 @@ import ( "os" "os/signal" "syscall" + "strconv" "time" - "github.com/caarlos0/env" "{{.GoPackageFullPath}}/shared/database" + "{{.GoPackageFullPath}}/shared/env" "{{.GoPackageFullPath}}/shared/helpers" "{{.GoPackageFullPath}}/api/routes" "github.com/gin-gonic/gin" @@ -21,10 +22,11 @@ func main() { // Connect to database and execute migrations cfg := database.Config{} - if err := env.Parse(&cfg); err != nil { - log.Fatal(err) - } - + cfg.User = env.GoDotEnvVariable("DB_USER") + cfg.Password = env.GoDotEnvVariable("DB_PASSWORD") + cfg.Port, _ = strconv.ParseInt(env.GoDotEnvVariable("DB_PORT"), 10, 0) + cfg.Name = env.GoDotEnvVariable("DB_NAME") + cfg.Host = env.GoDotEnvVariable("DB_HOST") err := database.Init(cfg) helpers.DieOnError("database connection failed", err) database.Migrate() diff --git a/templates/shared/database/connector.go.template b/templates/shared/database/connector.go.template index afa5790..7da38c5 100644 --- a/templates/shared/database/connector.go.template +++ b/templates/shared/database/connector.go.template @@ -20,7 +20,7 @@ var Db *gorm.DB type Config struct { User string `env:"DB_USER"` Password string `env:"DB_PASSWORD"` - Port int `env:"DB_PORT" envDefault:"5432"` + Port int64 `env:"DB_PORT" envDefault:"5432"` Host string `env:"DB_HOST"` Name string `env:"DB_NAME"` } From 73980bbc7ea15c9d523498e87241df4bf248720d Mon Sep 17 00:00:00 2001 From: edwinvautier Date: Mon, 29 Mar 2021 12:18:30 +0200 Subject: [PATCH 2/2] fix: remove forgotten comments. --- config/create_command.go | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/config/create_command.go b/config/create_command.go index d926493..cdcf55c 100644 --- a/config/create_command.go +++ b/config/create_command.go @@ -72,16 +72,3 @@ type CreateCmdConfig struct { ProjectPath string AuthModule bool } - -// Lorsque l'on appelle la CLI, il faut déterminer si on est dans un projet ou non -// être dans un projet = avoir un fichier de config dans le workdir - -// Lorsque l'on utilise le go-cli create, il faut sauvegarder les choix de l'utilisateur dans la config du projet - -// Voir comment gérer plusieurs fichiers de config avec viper - -// Ainsi quand on va par exemple vouloir utiliser go-cli install auth-module, on pourra modifier la config du projet -// pour que les prochaines générations de templates ne suppriment pas certains fichiers - -// Les commandes n'ont pas toutes besoin du même contexte, en effet seule la commande de création a besoin du git username etc.. -// En revanche ces éléments (project name, dbms...) peuvent être stockés dans la config du nouveau projet \ No newline at end of file