From 00fd3697713c99da03b457215203f0a49aaa516f Mon Sep 17 00:00:00 2001 From: Ymnuk Date: Wed, 28 Jun 2023 15:55:54 +0300 Subject: [PATCH] Generate main.go --- lib/backend.go | 13 +++++-- lib/tmpl/backend/go-list-module.txt | 4 +- lib/tmpl/backend/lib/config.tmpl | 21 +++++++++++ lib/tmpl/backend/main.tmpl | 58 +++++++++++++++++++++++++++++ 4 files changed, 92 insertions(+), 4 deletions(-) create mode 100644 lib/tmpl/backend/lib/config.tmpl create mode 100644 lib/tmpl/backend/main.tmpl diff --git a/lib/backend.go b/lib/backend.go index 522c875..354a21d 100644 --- a/lib/backend.go +++ b/lib/backend.go @@ -42,6 +42,10 @@ func generateStaticTmpl() { FileIn: "tmpl/backend/lib/salt/generate-salt.tmpl", FileOut: filepath.Join(AppConfig.OutdirBackend, "lib", "salt", "generate-salt.go"), }, + { + FileIn: "tmpl/backend/lib/config.tmpl", + FileOut: filepath.Join(AppConfig.OutdirBackend, "lib", "config.go"), + }, { FileIn: "tmpl/backend/structs/filter-request.tmpl", FileOut: filepath.Join(AppConfig.OutdirBackend, "structs", "filter-request.go"), @@ -85,12 +89,15 @@ func generateStaticTmpl() { } func generateModelBase() { + // main + if err := PrepareTmplFile("tmpl/backend/main.tmpl", Project, filepath.Join(AppConfig.OutdirBackend, "main.go")); err != nil { + log.Fatal(err) + } + + // db if err := PrepareTmplFile("tmpl/backend/db/model/user.tmpl", Project, filepath.Join(AppConfig.OutdirBackend, "db", "model", "user.go")); err != nil { log.Fatal(err) } - /*if err := PrepareTmplFile("tmpl/backend/go.tmpl", Project, filepath.Join(AppConfig.OutdirBackend, "go.mod")); err != nil { - log.Fatal(err) - }*/ if err := PrepareTmplFile("tmpl/backend/db/db.tmpl", Project, filepath.Join(AppConfig.OutdirBackend, "db", "db.go")); err != nil { log.Fatal(err) } diff --git a/lib/tmpl/backend/go-list-module.txt b/lib/tmpl/backend/go-list-module.txt index d6e80cc..afa01bd 100644 --- a/lib/tmpl/backend/go-list-module.txt +++ b/lib/tmpl/backend/go-list-module.txt @@ -3,4 +3,6 @@ gorm.io/gorm gorm.io/driver/mysql gorm.io/driver/postgres gorm.io/gorm/logger -github.com/golang-jwt/jwt \ No newline at end of file +github.com/golang-jwt/jwt +github.com/alexflint/go-arg +github.com/labstack/echo/v4 \ No newline at end of file diff --git a/lib/tmpl/backend/lib/config.tmpl b/lib/tmpl/backend/lib/config.tmpl new file mode 100644 index 0000000..e6cc329 --- /dev/null +++ b/lib/tmpl/backend/lib/config.tmpl @@ -0,0 +1,21 @@ +package lib + +var AppConfig struct { + Env string + MigrateDB bool + DBInstance string + DbName string + DbAddress string + DbPort string + DbLogin string + DbPassword string + Port string + + LdapURL string + LdapBind string + LdapPassword string + LdapSearchBase string + + Nominatim string + TileServer string +} \ No newline at end of file diff --git a/lib/tmpl/backend/main.tmpl b/lib/tmpl/backend/main.tmpl new file mode 100644 index 0000000..fabb287 --- /dev/null +++ b/lib/tmpl/backend/main.tmpl @@ -0,0 +1,58 @@ +package main + +import ( + "context" + "fmt" + "os" + "os/signal" + "syscall" + "time" + + "{{ .Name }}/db" + "{{ .Name }}/lib" + "{{ .Name }}/middlewares" + "{{ .Name }}/routes" + + "github.com/go-co-op/gocron" + "github.com/labstack/echo/v4" +) + +var args struct { + RootPath string `arg:"env:ROOT_PATH"` + RootPathAbs string `arg:"-"` + Upload bool `arg:"env:UPLOAD"` +} + +var e *echo.Echo + +func main() { + arg.MustParse(&args) + + sigs := make(chan os.Signal, 1) + signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM) + + + go func() { + + e = echo.New() + + middlewares.Init(e) + + routes.Init(e) + + e.Logger.Fatal(e.Start(fmt.Sprintf(":%s", lib.Config.Port))) + }() + + <-sigs + + fmt.Println("Shutdown server") + + _, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + if err := e.Shutdown(); err != nil { + fmt.Println(err) + } + fmt.Println("exiting") + + +}