All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
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>
58 lines
1.8 KiB
Go
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()
|
|
}
|