package main import ( "astra-users/config" "astra-users/handler" "astra-users/model" "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.GetUsers) e.PATCH("/:id", h.UpdateUser) e.DELETE("/:id", h.DeleteUser) e.GET("/health", h.Health) e.GET("/positions/:id", h.GetPositionHandler) e.POST("/positions", h.CreatePosition) e.GET("/organizations", h.GetOrganizations) e.POST("/organizations", h.CreateOrganization) e.Logger.Fatal(e.Start(":" + config.Env.Server.Port)) }