package main import ( "context" "gotemplate/api/queue" "gotemplate/internal/database" "gotemplate/internal/database/repository" "gotemplate/internal/document" "gotemplate/internal/env" "gotemplate/internal/otel" queueSVC "gotemplate/internal/queue" "log" "github.com/aws/aws-sdk-go-v2/config" "github.com/aws/aws-sdk-go-v2/service/sqs" "github.com/go-playground/validator/v10" ) func main() { ctx := context.Background() closeTracer := otel.Init(ctx) defer closeTracer() database.RunMigrations() cfg, err := config.LoadDefaultConfig(ctx) if err != nil { log.Fatalf("Unable to load SDK config: %v", err) } queueURL := env.GetFatal("QUEUE_URL") sqsClient := sqs.NewFromConfig(cfg) conn := database.GetDBConn(ctx) db := repository.New(conn) valid := validator.New() controllers := queue.Controllers{ Document: *queue.NewDocumentController(*document.New(db), valid), } config := queue.Queue{ Controllers: &controllers, Config: &queueSVC.QueueConfig{ URL: queueURL, Client: sqsClient, }, } queue.PollMessages(ctx, &config) }