Files
astra-events/main.go
kandrusyak 2916a50336 swagger
2023-07-16 23:32:02 +03:00

66 lines
1.5 KiB
Go

package main
import (
"astra-events/config"
_ "astra-events/docs"
"astra-events/handler"
"astra-events/model"
"github.com/labstack/echo/v4"
"github.com/labstack/echo/v4/middleware"
"github.com/swaggo/echo-swagger"
"gorm.io/driver/postgres"
"gorm.io/gorm"
"gorm.io/gorm/logger"
"log"
"os"
"time"
)
// @title Astra Events
// @version 1.0
// @description This is an astra-events service.
// @contact.name Kirill Andrusyak
// @contact.email andrusyakka@dopcore.com
// @host api.astra.dev.dop
// @BasePath /events
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{})
var h = &handler.Handler{DB: db}
e.POST("/", h.CreateEvent)
e.GET("/:id", h.GetEvent)
e.GET("/", h.GetEvents)
e.DELETE("/", h.DeleteEvent)
e.GET("/health", handler.Health)
e.GET("/swagger/*", echoSwagger.WrapHandler)
e.Logger.Fatal(e.Start(":" + config.Env.Server.Port))
}