package sync import ( "time" "go.unistack.org/micro/v3/store" ) // Options represents Sync options type Options struct { // Stores represents layers in the sync in ascending order. L0, L1, L2, etc Stores []store.Store // SyncInterval is the duration between syncs from L0 to L1 SyncInterval time.Duration // SyncMultiplier is the multiplication factor between each store. SyncMultiplier int64 } // Option sets Sync Options type Option func(o *Options) // Stores sets the layers that make up the sync func Stores(stores ...store.Store) Option { return func(o *Options) { o.Stores = make([]store.Store, len(stores)) for i, s := range stores { o.Stores[i] = s } } } // nolint: golint,revive // SyncInterval sets the duration between syncs from L0 to L1 func SyncInterval(d time.Duration) Option { return func(o *Options) { o.SyncInterval = d } } // nolint: golint,revive // SyncMultiplier sets the multiplication factor for time to wait each sync layer func SyncMultiplier(i int64) Option { return func(o *Options) { o.SyncMultiplier = i } }