Files
trikotwaschliste/main.go
2020-10-12 00:16:23 +02:00

71 lines
1.7 KiB
Go

package main
import (
"context"
"fmt"
"github.com/caarlos0/env/v6"
"github.com/gin-gonic/gin"
"github.com/jackc/pgx/v4/pgxpool"
"log"
"time"
"trikotwaschliste/database/migrations"
"trikotwaschliste/logbuffer"
"trikotwaschliste/models"
"trikotwaschliste/routes"
)
func main() {
//gin.SetMode(gin.ReleaseMode)
r := gin.Default()
var err error
//get configuration
cfg := models.Config{}
if err := env.Parse(&cfg); err != nil {
log.Printf("%+v\n", err)
}
//Start postgres connection
pool := createDatabasePool(cfg)
// Init the logging buffer for online log view
logbuf := logbuffer.New()
r.Use(logbuffer.UseLogBuffer(logbuf))
r.LoadHTMLGlob("html/**/*")
r.Static("/static", "html/static")
//r.StaticFile("/favicon.ico", "html/favicon.ico")
//routes.RoutesInit(r, pool)
routes.RoutesInit(r, pool, &cfg, logbuf)
err = r.Run("0.0.0.0:8082")
if err != nil {
log.Println("Something went wrong!")
}
}
func createDatabasePool(cfg models.Config) *pgxpool.Pool {
log.Println("Checking for migration")
migrations.RunMigration(cfg)
//create the database url
dburl := "postgresql://" + cfg.DB_USER + ":" + cfg.DB_PASSWORD + "@" + cfg.DB_HOST + ":" + fmt.Sprint(cfg.DB_PORT) + "/" + cfg.DB_DATABASE
config, err := pgxpool.ParseConfig(dburl)
if err != nil {
log.Println("Can't parse pgx connection.")
return nil
}
//Set the max amount of database connections
config.MaxConns = int32(cfg.DB_MAXCONNECTIONS)
//create connection pool
pool, err := pgxpool.ConnectConfig(context.Background(), config)
for err != nil {
pool, err = pgxpool.ConnectConfig(context.Background(), config)
if err != nil {
log.Println("Can't establish postgres connection.")
}
time.Sleep(60 * time.Second)
}
return pool
}