micrach/main.go
2022-04-06 01:08:53 +03:00

151 lines
3.5 KiB
Go

package main
import (
"log"
"micrach/build"
"micrach/config"
"micrach/db"
"micrach/repositories"
"micrach/templates"
"micrach/utils"
"strconv"
"github.com/gofiber/fiber/v2"
"github.com/gofiber/template/html"
_ "github.com/joho/godotenv/autoload"
)
// import (
// "html/template"
// "log"
// "strconv"
// "time"
// "github.com/gin-gonic/gin"
// _ "github.com/joho/godotenv/autoload"
// limiter "github.com/ulule/limiter/v3"
// mgin "github.com/ulule/limiter/v3/drivers/middleware/gin"
// memory "github.com/ulule/limiter/v3/drivers/store/memory"
// Build "micrach/build"
// Config "micrach/config"
// Controllers "micrach/controllers"
// Db "micrach/db"
// Gateway "micrach/gateway"
// Repositories "micrach/repositories"
// Templates "micrach/templates"
// Utils "micrach/utils"
// )
// func main() {
// Config.Init()
// Db.Init()
// Db.Migrate()
// defer Db.Pool.Close()
// gin.SetMode(Config.App.Env)
// if Config.App.IsDbSeeded {
// Repositories.Seed()
// }
// if Config.App.Env == "release" {
// Build.RenameCss()
// }
// err := Utils.CreateUploadsFolder()
// if err != nil {
// log.Panicln(err)
// }
// rate := limiter.Rate{
// Period: 1 * time.Hour,
// Limit: 1000,
// }
// rateLimiterStore := memory.NewStore()
// instance := limiter.New(rateLimiterStore, rate)
// middleware := mgin.NewMiddleware(instance)
// router := gin.New()
// router.Use(gin.Recovery())
// router.SetFuncMap(template.FuncMap{
// "Iterate": Templates.Iterate,
// "NotNil": Templates.NotNil,
// })
// router.LoadHTMLGlob("templates/**/*")
// router.ForwardedByClientIP = true
// if Config.App.IsRateLimiterEnabled {
// router.Use(middleware)
// }
// router.Static("/uploads", "./uploads")
// router.Static("/static", "./static")
// if Config.App.Gateway.Url != "" {
// router.GET("/api/ping", Gateway.Ping)
// Gateway.Connect()
// }
// router.GET("/", Controllers.GetThreads)
// router.POST("/", Controllers.CreateThread)
// router.GET("/:threadID", Controllers.GetThread)
// router.POST("/:threadID", Controllers.UpdateThread)
// router.GET("/captcha/:captchaID", Controllers.GetCaptcha)
// log.Println("port", Config.App.Port, "- online")
// log.Println("all systems nominal")
// router.Run(":" + strconv.Itoa(Config.App.Port))
// }
func main() {
config.Init()
db.Init()
db.Migrate()
defer db.Pool.Close()
if config.App.IsDbSeeded {
repositories.Seed()
}
if config.App.Env == "production" {
build.RenameCss()
}
err := utils.CreateUploadsFolder()
if err != nil {
log.Panicln(err)
}
engine := html.New("./templates", ".html")
engine.AddFunc("Iterate", templates.Iterate)
engine.AddFunc("NotNil", templates.NotNil)
engine.Debug(true)
app := fiber.New(fiber.Config{
Views: engine,
})
app.Static("/uploads", "./uploads")
app.Static("/static", "./static")
app.Get("/", func(c *fiber.Ctx) error {
// return c.Render("components/index", fiber.Map{})
return c.SendString("get threads")
})
app.Post("/", func(c *fiber.Ctx) error {
return c.SendString("create thread")
})
app.Get("/:threadID", func(c *fiber.Ctx) error {
return c.SendString("get thread by id")
})
app.Post("/threadID", func(c *fiber.Ctx) error {
return c.SendString("create post in thread")
})
app.Get("/captcha/:captchaID", func(c *fiber.Ctx) error {
return c.SendString("get captcha by id")
})
log.Println("app - online, port -", strconv.Itoa(config.App.Port))
log.Println("all systems nominal")
err = app.Listen(":" + strconv.Itoa(config.App.Port))
if err != nil {
log.Println("app - ofline")
log.Panicln(err)
}
}