Files
astra-users/main.go
2023-07-14 16:54:49 +03:00

62 lines
1.6 KiB
Go

package main
import (
"astra-users/config"
"astra-users/handler"
"astra-users/model"
"astra-users/mw"
"github.com/labstack/echo/v4"
"github.com/labstack/echo/v4/middleware"
"gorm.io/driver/sqlite"
"gorm.io/gorm"
"gorm.io/gorm/logger"
"log"
"os"
"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(sqlite.Open(config.Env.Server.ConnectionString), &gorm.Config{
Logger: newLogger,
})
if err != nil {
panic("failed to connect database")
}
e := echo.New()
db.AutoMigrate(&model.User{}, &model.Organization{}, &model.Position{})
e.Use(middleware.Logger())
var h = &handler.Handler{DB: db}
e.POST("/login", h.Login)
e.GET("/me", h.GetCurrentUser)
e.POST("/", h.CreateUser)
e.GET("/", h.GetUsers)
e.GET("/:id", h.GetUser)
e.GET("/batch/:ids", h.GetUserBatch)
e.PATCH("/:id", h.UpdateUser)
e.DELETE("/:id", h.DeleteUser)
e.GET("/health", h.Health)
e.GET("/positions/:id", h.GetPositionHandler, mw.CheckAdminRole)
e.POST("/positions", h.CreatePosition, mw.CheckAdminRole)
e.GET("/organizations", h.GetOrganizations, mw.CheckAdminRole)
e.POST("/organizations", h.CreateOrganization, mw.CheckAdminRole)
e.Logger.Fatal(e.Start(":" + config.Env.Server.Port))
}