cacheopt.go 693 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package cache
  2. import "time"
  3. const (
  4. defaultExpiry = time.Hour * 24 * 7
  5. defaultNotFoundExpiry = time.Minute
  6. )
  7. type (
  8. Options struct {
  9. Expiry time.Duration
  10. NotFoundExpiry time.Duration
  11. }
  12. Option func(o *Options)
  13. )
  14. func newOptions(opts ...Option) Options {
  15. var o Options
  16. for _, opt := range opts {
  17. opt(&o)
  18. }
  19. if o.Expiry <= 0 {
  20. o.Expiry = defaultExpiry
  21. }
  22. if o.NotFoundExpiry <= 0 {
  23. o.NotFoundExpiry = defaultNotFoundExpiry
  24. }
  25. return o
  26. }
  27. func WithExpiry(expiry time.Duration) Option {
  28. return func(o *Options) {
  29. o.Expiry = expiry
  30. }
  31. }
  32. func WithNotFoundExpiry(expiry time.Duration) Option {
  33. return func(o *Options) {
  34. o.NotFoundExpiry = expiry
  35. }
  36. }