43 lines
1.3 KiB
Go
43 lines
1.3 KiB
Go
package cmd
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
"go.uber.org/dig"
|
|
|
|
"github.com/moasq/go-b2b-starter/app/example_cognitive"
|
|
"github.com/moasq/go-b2b-starter/app/example_cognitive/app/services"
|
|
docEvents "github.com/moasq/go-b2b-starter/app/example_documents/domain/events"
|
|
"github.com/moasq/go-b2b-starter/pkg/eventbus"
|
|
)
|
|
|
|
// Init initializes the cognitive module
|
|
func Init(container *dig.Container) error {
|
|
module := cognitive.NewModule(container)
|
|
if err := module.RegisterDependencies(); err != nil {
|
|
return fmt.Errorf("failed to register cognitive dependencies: %w", err)
|
|
}
|
|
|
|
// Wire up event listener for document uploads
|
|
if err := container.Invoke(func(
|
|
bus eventbus.EventBus,
|
|
listener services.DocumentListener,
|
|
) error {
|
|
// Subscribe to DocumentUploaded events
|
|
return bus.Subscribe(docEvents.DocumentUploadedEventType, func(ctx context.Context, event eventbus.Event) error {
|
|
// Type assert to get the specific event
|
|
docEvent, ok := event.(*docEvents.DocumentUploaded)
|
|
if !ok {
|
|
return fmt.Errorf("unexpected event type: %T", event)
|
|
}
|
|
|
|
// Handle the event
|
|
return listener.HandleDocumentUploaded(ctx, docEvent.DocumentID, docEvent.OrganizationID, docEvent.ExtractedText)
|
|
})
|
|
}); err != nil {
|
|
return fmt.Errorf("failed to wire document event listener: %w", err)
|
|
}
|
|
|
|
return nil
|
|
}
|