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