diff --git a/declare.go b/declare.go index 7379d4c..5b7dd2c 100644 --- a/declare.go +++ b/declare.go @@ -1,9 +1,46 @@ package rabbitmq import ( + "errors" + "fmt" + "github.com/DizoftTeam/go-rabbitmq/internal/channelmanager" ) +type Declarator struct { + chanManager *channelmanager.ChannelManager +} + +func NewDeclarator(conn *Conn) (*Declarator, error) { + defaultOptions := getDefaultPublisherOptions() + options := &defaultOptions + + if conn.connectionManager == nil { + return nil, errors.New("connection manager can't be nil") + } + + chanManager, err := channelmanager.NewChannelManager(conn.connectionManager, options.Logger, conn.connectionManager.ReconnectInterval) + if err != nil { + return nil, err + } + + result := &Declarator{ + chanManager: chanManager, + } + + return result, nil +} + +func (d *Declarator) Declare(options ConsumerOptions) error { + err := declareBindings(d.chanManager, options) + + if err != nil { + return fmt.Errorf("declare bindings failed: %w", err) + } + + return nil +} + func declareQueue(chanManager *channelmanager.ChannelManager, options QueueOptions) error { if !options.Declare { return nil