diff --git a/service/sync/pubsub.go b/service/sync/pubsub.go new file mode 100644 index 00000000..b85c8e65 --- /dev/null +++ b/service/sync/pubsub.go @@ -0,0 +1,13 @@ +package sync + +type PubSubPayload struct { +} + +type PubSub interface { + Send(msg *PubSubPayload) error + Listen(chan *PubSubPayload) error +} + +func NewPubSub(topic string) PubSub { + return nil +} diff --git a/service/sync/service.go b/service/sync/service.go new file mode 100644 index 00000000..e26d54eb --- /dev/null +++ b/service/sync/service.go @@ -0,0 +1,44 @@ +package sync + +import ( + "context" + "github.com/anytypeio/go-anytype-infrastructure-experiments/app" +) + +type service struct { + pubSub PubSub +} + +const CName = "SyncService" + +func (s *service) Init(ctx context.Context, a *app.App) (err error) { + return nil +} + +func (s *service) Name() (name string) { + return CName +} + +func (s *service) Run(ctx context.Context) (err error) { + ch := make(chan *PubSubPayload) + err = s.pubSub.Listen(ch) + if err != nil { + return + } + return nil +} + +func (s *service) Close(ctx context.Context) (err error) { + return nil +} + +func (s *service) listen(ctx context.Context, ch chan *PubSubPayload) { + for { + select { + case <-ctx.Done(): + return + case payload := <-ch: + // TODO: get object from object service and try to perform sync + } + } +}