-
Notifications
You must be signed in to change notification settings - Fork 0
/
time_keeper_options.go
104 lines (89 loc) · 2.68 KB
/
time_keeper_options.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
package timekeeper
import (
"github.com/go-redis/redis/v8"
"time"
)
// Options bundles all available configuration
// properties for a time keeper.
type Options struct {
RedisExecListName string
RedisLastExecName string
KeepTaskList bool
KeepLastTask bool
CleanUpTask *CleanUpOptions
}
// Option represents an option for a time keeper.
type Option func(*Options)
// RedisExecListName sets redis key for the list used to track
// all executions of tasks managed by the time keeper.
// The default is timekeeper.DefaultRedisExecListName.
func RedisExecListName(redisExecListName string) Option {
return func(c *Options) {
c.RedisExecListName = redisExecListName
}
}
// RedisLastExecName sets redis key for the set used to track
// the latest execution of tasks managed by the time keeper.
// The default is timekeeper.DefaultRedisLastExecName.
func RedisLastExecName(redisLastExecName string) Option {
return func(c *Options) {
c.RedisLastExecName = redisLastExecName
}
}
// KeepTaskList enables or disables the keeping of a list of all
// executions of tasks managed by the time keeper.
// The default is true.
func KeepTaskList(keepTaskList bool) Option {
return func(c *Options) {
c.KeepTaskList = keepTaskList
}
}
// KeepLastTask enables or disables the keeping of a set of the
// latest execution of tasks managed by the time keeper.
// The default is true.
func KeepLastTask(keepTaskList bool) Option {
return func(c *Options) {
c.KeepLastTask = keepTaskList
}
}
// CleanUpTask enables the clean up task, which discards old executions.
// The default is nil.
func CleanUpTask(client *redis.Client, setters ...CleanUpOption) Option {
return func(c *Options) {
if client != nil {
c.CleanUpTask = &CleanUpOptions{
Client: client,
TasksTimeOut: 30 * (24 * time.Hour),
TaskName: "timekeeper.cleanup",
}
for _, setter := range setters {
setter(c.CleanUpTask)
}
} else {
c.CleanUpTask = nil
}
}
}
// CleanUpOptions bundles all available configuration
// properties for a time keeper clean up task.
type CleanUpOptions struct {
Client *redis.Client
TasksTimeOut time.Duration
TaskName string
}
// CleanUpOption represents an option for a clean up task.
type CleanUpOption func(*CleanUpOptions)
// CleanUpTaskName sets the name of the cleanup task.
// The default is "timekeeper.cleanup".
func CleanUpTaskName(taskName string) CleanUpOption {
return func(c *CleanUpOptions) {
c.TaskName = taskName
}
}
// CleanUpTasksTimeOut sets the timeout after which tasks are cleaned up.
// The default is 30 days.
func CleanUpTasksTimeOut(tasksTimeOut time.Duration) CleanUpOption {
return func(c *CleanUpOptions) {
c.TasksTimeOut = tasksTimeOut
}
}