sp4-debug-1770477266/services/chat-svc/cmd/server/main.go
rdev-worker 5a877ca1a1
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
feat: implement mesh-interop service communication
Add auth-svc /validate endpoint for token checking
Add chat-svc with auth client and Redis task queue
Add worker-svc chat handler for task processing

Co-Authored-By: Claude Code <claude@anthropic.com>
2026-02-07 16:45:22 +00:00

58 lines
1.8 KiB
Go

// Package main is the entry point for the chat-svc service.
package main
import (
"context"
"os"
"git.threesix.ai/jordan/sp4-debug-1770477266/pkg/app"
"git.threesix.ai/jordan/sp4-debug-1770477266/pkg/database"
"git.threesix.ai/jordan/sp4-debug-1770477266/pkg/logging"
"git.threesix.ai/jordan/sp4-debug-1770477266/pkg/queue"
"git.threesix.ai/jordan/sp4-debug-1770477266/services/chat-svc/internal/adapter/memory"
"git.threesix.ai/jordan/sp4-debug-1770477266/services/chat-svc/internal/api"
"git.threesix.ai/jordan/sp4-debug-1770477266/services/chat-svc/internal/config"
"git.threesix.ai/jordan/sp4-debug-1770477266/services/chat-svc/internal/service"
"git.threesix.ai/jordan/sp4-debug-1770477266/services/chat-svc/internal/taskqueue"
)
func main() {
// Create logger
logger := logging.Default()
// Load config
cfg := config.Load()
// Create adapters (repositories)
exampleRepo := memory.NewExampleRepository()
// Create services (business logic)
exampleService := service.NewExampleService(exampleRepo, logger)
// Connect to database for queue producer (shared with worker-svc)
var producer *taskqueue.Producer
if cfg.Database.URL != "" {
pool, err := database.Connect(context.Background(), cfg.Database.URL, database.Options{})
if err != nil {
logger.Error("failed to connect to database for queue", "error", err)
os.Exit(1)
}
defer pool.Close()
jobQueue := queue.NewPostgresQueue(pool.DB, logger)
producer = taskqueue.NewProducer(jobQueue, logger)
logger.Info("task queue producer initialized")
} else {
logger.Warn("DATABASE_URL not set, chat task queue disabled")
}
// Create application
application := app.New("chat-svc", app.WithDefaultPort(8001))
// Register routes with dependency injection
api.RegisterRoutes(application, exampleService, producer)
// Start server
application.Run()
}