hugo-cms/main.go

75 lines
1.7 KiB
Go
Raw Normal View History

package main
import (
"context"
2025-01-26 23:19:31 +00:00
"github.com/gofiber/fiber/v2"
"github.com/gofiber/template/html/v2"
2025-01-26 22:26:15 +00:00
"lmika.dev/lmika/hugo-crm/config"
2025-01-26 23:19:31 +00:00
"lmika.dev/lmika/hugo-crm/handlers"
"lmika.dev/lmika/hugo-crm/providers/db"
2025-01-26 22:26:15 +00:00
"lmika.dev/lmika/hugo-crm/providers/git"
"lmika.dev/lmika/hugo-crm/providers/hugo"
"lmika.dev/lmika/hugo-crm/providers/themes"
2025-01-26 23:19:31 +00:00
"lmika.dev/lmika/hugo-crm/services/jobs"
"lmika.dev/lmika/hugo-crm/services/sitebuilder"
2025-01-26 22:26:15 +00:00
"lmika.dev/lmika/hugo-crm/services/sites"
2025-01-26 23:19:31 +00:00
"lmika.dev/lmika/hugo-crm/templates"
"log"
2025-01-26 23:19:31 +00:00
"net/http"
)
func main() {
2025-01-26 22:26:15 +00:00
cfg, err := config.Load()
if err != nil {
log.Fatal(err)
}
dbp, err := db.New(cfg.DatabaseURL)
if err != nil {
log.Fatal(err)
}
defer dbp.Close()
2025-01-26 22:26:15 +00:00
hugoProvider, err := hugo.New(cfg.StagingDir())
if err != nil {
log.Fatal(err)
}
gitProvider := git.New()
themesProvider := themes.New()
2025-01-26 23:19:31 +00:00
jobService := jobs.New()
siteBuilderService := sitebuilder.New(themesProvider, gitProvider, hugoProvider)
siteService := sites.NewService(cfg, dbp, themesProvider, siteBuilderService, jobService)
siteHandlers := handlers.Site{Site: siteService}
2025-01-26 22:26:15 +00:00
log.Println("Connected to database")
if err := dbp.Migrate(context.Background()); err != nil {
log.Fatal(err)
}
log.Println("Database migrated")
2025-01-26 23:19:31 +00:00
tmplEngine := html.NewFileSystem(http.FS(templates.FS), ".html")
app := fiber.New(fiber.Config{
Views: tmplEngine,
})
app.Get("/", func(c *fiber.Ctx) error {
return c.Render("index", fiber.Map{}, "layouts/main")
})
app.Post("/sites", siteHandlers.Create())
app.Get("/sites/:siteId", siteHandlers.Show())
jobService.Start()
defer jobService.Stop()
if err := app.Listen(":3000"); err != nil {
log.Println(err)
}
2025-01-26 23:19:31 +00:00
log.Println("Shutting down...")
}