Files
astra-events/main.go
kandrusyak 569d5ff7ed logs fix
2023-09-25 22:08:18 +03:00

69 lines
1.6 KiB
Go

package main
import (
"astra-events/config"
"astra-events/handler"
"astra-events/model"
"github.com/go-playground/validator/v10"
"github.com/labstack/echo/v4"
"github.com/labstack/echo/v4/middleware"
log2 "github.com/labstack/gommon/log"
"gorm.io/driver/postgres"
"gorm.io/gorm"
"gorm.io/gorm/logger"
"log"
"os"
"reflect"
"strings"
"time"
)
func main() {
newLogger := logger.New(
log.New(os.Stdout, "\r\n", log.LstdFlags), // io writer
logger.Config{
SlowThreshold: time.Second, // Slow SQL threshold
LogLevel: logger.Info, // Log level
IgnoreRecordNotFoundError: true, // Ignore ErrRecordNotFound error for logger
ParameterizedQueries: true, // Don't include params in the SQL log
Colorful: false, // Disable color
},
)
db, err := gorm.Open(postgres.Open(config.Env.Server.ConnectionString), &gorm.Config{
Logger: newLogger,
})
if err != nil {
panic("failed to connect database")
}
e := echo.New()
e.Use(middleware.Logger())
db.AutoMigrate(&model.Event{})
validate := validator.New()
validate.RegisterTagNameFunc(func(fld reflect.StructField) string {
name := strings.SplitN(fld.Tag.Get("json"), ",", 2)[0]
if name == "-" {
return ""
}
return name
})
var h = &handler.Handler{DB: db, Validator: validate}
e.POST("/", h.CreateEvent)
e.GET("/:id", h.GetEvent)
e.GET("/", h.GetEvents)
e.GET("/today", h.GetEventsToday)
e.DELETE("/", h.DeleteEvent)
e.GET("/health", handler.Health)
e.Debug = true
e.Logger.SetLevel(log2.DEBUG)
e.Logger.Fatal(e.Start(":" + config.Env.Server.Port))
}