package ops
import (
"github.com/kcotugno/tacitus"
)
type Registrar struct {
Database tacitus.DatabaseClientService
Listener tacitus.ListenerService
logger tacitus.Logger
}
func (r *Registrar) Record(products ...string) error {
if err := r.Listener.Open(); err != nil {
return err
r.record()
r.Listener.Subscribe(products...)
return nil
func (r *Registrar) SetLogger(logger tacitus.Logger) {
r.Listener.SetLogger(logger)
r.logger = logger
func (r *Registrar) record() {
go func() {
for t := range r.Listener.Stream() {
go func(trade tacitus.Trade) {
_, err := r.Database.TradeService().CreateTrade(trade)
if err != nil {
r.logger.Info("Error inserting trade: %v", err)
}(t)
}()
for err := range r.Listener.Error() {
r.logger.Info("Registrar received error: %v", err)