Files
blog/cmd/main.go

54 lines
1.3 KiB
Go

package main
import (
"blog/internal/cache"
"blog/internal/config"
"blog/internal/database"
"blog/internal/echo/logger"
"blog/internal/echo/routes"
"blog/internal/services"
"fmt"
"github.com/charmbracelet/log"
"github.com/labstack/echo/v5"
)
func main() {
// Server config
server_config := config.NewServerConfig()
server_config.LoadConfig()
// Database Config
db_config := config.NewDatabaseConfig()
db_config.LoadConfig()
// Connect to database
db, err := database.Connect(db_config.GetDSN())
if err != nil {
log.Error("Error", "error", err)
}
defer db.Close()
// Create Redis caches
strapi_cache := cache.CreateCache(server_config.RedisHost, server_config.RedisPort, 0)
// analytics_cache := cache.CreateCache(server_config.RedisHost, server_config.RedisPort, 1)
// Create Strapi service
strapi_service := services.NewStrapiService(server_config.StrapiEndpoint+"/graphql", server_config.StrapiToken, strapi_cache)
// Setup echo server
e := echo.New()
e.Logger = logger.NewCharmSlog()
// Setup routes
routes.SetupRoutes(e, routes.Sources{
StrapiService: strapi_service,
})
// Start server
host := fmt.Sprintf("%s:%d", server_config.Host, server_config.Port)
if err := e.Start(host); err != nil {
log.Fatal("Failed to start server", "error", err)
}
}