sync.go raw

   1  // Package sync provides backward compatibility facade for sync services
   2  // New code should import the specific subpackages directly:
   3  //   - next.orly.dev/pkg/sync/distributed
   4  //   - next.orly.dev/pkg/sync/cluster
   5  //   - next.orly.dev/pkg/sync/relaygroup
   6  //   - next.orly.dev/pkg/sync/negentropy
   7  package sync
   8  
   9  import (
  10  	"context"
  11  	"time"
  12  
  13  	"next.orly.dev/pkg/nostr/encoders/event"
  14  	"next.orly.dev/pkg/database"
  15  	"next.orly.dev/pkg/sync/cluster"
  16  	"next.orly.dev/pkg/sync/common"
  17  	"next.orly.dev/pkg/sync/distributed"
  18  	"next.orly.dev/pkg/sync/relaygroup"
  19  )
  20  
  21  // Re-export types for backward compatibility
  22  
  23  // Manager is the distributed sync manager
  24  type Manager = distributed.Manager
  25  
  26  // ClusterManager is the cluster replication manager
  27  type ClusterManager = cluster.Manager
  28  
  29  // RelayGroupManager is the relay group configuration manager
  30  type RelayGroupManager = relaygroup.Manager
  31  
  32  // RelayGroupConfig is the relay group configuration
  33  type RelayGroupConfig = relaygroup.Config
  34  
  35  // NIP11Cache is the NIP-11 relay info cache
  36  type NIP11Cache = common.NIP11Cache
  37  
  38  // NewNIP11Cache creates a new NIP-11 cache
  39  func NewNIP11Cache(ttl time.Duration) *NIP11Cache {
  40  	return common.NewNIP11Cache(ttl)
  41  }
  42  
  43  // NewManager creates a new distributed sync manager with backward compatible signature
  44  func NewManager(ctx context.Context, db *database.D, nodeID, relayURL string, peers []string, relayGroupMgr *RelayGroupManager, policyManager interface{ CheckPolicy(action string, ev *event.E, pubkey []byte, remote string) (bool, error) }) *Manager {
  45  	cfg := &distributed.Config{
  46  		NodeID:        nodeID,
  47  		RelayURL:      relayURL,
  48  		Peers:         peers,
  49  		SyncInterval:  5 * time.Second,
  50  		NIP11CacheTTL: 30 * time.Minute,
  51  	}
  52  	return distributed.NewManager(ctx, db, cfg, policyManager)
  53  }
  54  
  55  // NewClusterManager creates a new cluster manager with backward compatible signature
  56  func NewClusterManager(ctx context.Context, db *database.D, adminNpubs []string, propagatePrivilegedEvents bool, publisher interface{ Deliver(*event.E) }) *ClusterManager {
  57  	cfg := &cluster.Config{
  58  		AdminNpubs:                adminNpubs,
  59  		PropagatePrivilegedEvents: propagatePrivilegedEvents,
  60  		PollInterval:              5 * time.Second,
  61  		NIP11CacheTTL:             30 * time.Minute,
  62  	}
  63  	return cluster.NewManager(ctx, db, cfg, publisher)
  64  }
  65  
  66  // NewRelayGroupManager creates a new relay group manager with backward compatible signature
  67  func NewRelayGroupManager(db *database.D, adminNpubs []string) *RelayGroupManager {
  68  	cfg := &relaygroup.ManagerConfig{
  69  		AdminNpubs: adminNpubs,
  70  	}
  71  	return relaygroup.NewManager(db, cfg)
  72  }
  73