54 lines
1.3 KiB
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)
|
|
}
|
|
}
|