diff --git a/bundle/app/app.go b/bundle/app/app.go index 145d230..c967a20 100644 --- a/bundle/app/app.go +++ b/bundle/app/app.go @@ -12,6 +12,7 @@ import ( cml04eventer "git.espin.casa/albert/cml04-eventer" "git.espin.casa/albert/cml04-falcon-system/internal/publisher" "git.espin.casa/albert/cml04-falcon-system/internal/storage" + "git.espin.casa/albert/cml04-falcon-system/internal/types" "git.espin.casa/albert/logger" "github.com/nats-io/nats.go" "github.com/spf13/cobra" @@ -120,6 +121,31 @@ func ProcessNewBarcodeMessage(ctx context.Context, msg *nats.Msg, storage storag } func ProcessNewBundleMessage(ctx context.Context, msg *nats.Msg, storage storage.Storager, log logger.LoggerAdapter) error { + // event holder + event := &cml04eventer.Event{} + // create new buffer based on message data + buff := bytes.NewBuffer(msg.Data) + // decode message + if err := json.NewDecoder(buff).Decode(event); err != nil { + return err + } + // info banner + log.Info("received event bus message", logger.LogFields{ + "event_id": event.EventID, + "event_topic": event.EventTopic, + }) + // bundle holder + bundle := &types.BundleData{} + // create new buffer based on message event data + buff = bytes.NewBuffer(event.EventData) + // decode message + if err := json.NewDecoder(buff).Decode(bundle); err != nil { + return err + } + // store bundle + if err := storage.StoreBundle(ctx, bundle); err != nil { + return err + } return nil } diff --git a/internal/storage/storage.go b/internal/storage/storage.go index fc9c968..b291c35 100644 --- a/internal/storage/storage.go +++ b/internal/storage/storage.go @@ -17,6 +17,7 @@ type Storager interface { StoreBeamCutPattern(ctx context.Context, in *types.BeamCutPattern) error StoreLayerCutPattern(ctx context.Context, in *types.LayerCutPattern) error StoreBeamGroup(ctx context.Context, in *types.BeamGroup) error + StoreBundle(ctx context.Context, in *types.BundleData) error ConfirmBundle(ctx context.Context, barcode string) error } @@ -33,6 +34,11 @@ type DBConfig struct { Name string } +// StoreBundle implements Storager. +func (s *storage) StoreBundle(ctx context.Context, in *types.BundleData) error { + return s.db.Save(in).Error +} + // StoreBeamGroup implements Storager. func (s *storage) StoreBeamGroup(ctx context.Context, in *types.BeamGroup) error { return s.db.Save(in).Error