-
Notifications
You must be signed in to change notification settings - Fork 1
/
base.go
83 lines (68 loc) · 1.5 KB
/
base.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
package scheduling
import (
log "github.com/sirupsen/logrus"
"github.com/go-co-op/gocron"
"github.com/vishhvaan/lab-bot/logging"
"github.com/vishhvaan/lab-bot/slack"
)
type scheduleRecord struct {
ID string
Name string
CronExp string
Command slack.CommandInfo
}
type Schedule struct {
scheduleRecord
scheduler *gocron.Scheduler
logger *log.Entry
schedule
}
var schedChan chan *Schedule
// // type SchedJobs struct {
// // name string
// // status string
// // desc string
// // frequency string
// // sched *gocron.Scheduler
// // logger *log.Entry
// // }
// // type SchedBirthdays struct {
// // enabled bool
// // }
type schedule interface {
init()
enable()
disable()
commandProcessor(c slack.CommandInfo)
}
type ScheduleTracker struct {
schedules map[string]*Schedule
messenger chan slack.MessageInfo
logger *log.Entry
}
func CreateScheduleTracker() (st *ScheduleTracker) {
schedules := make(map[string]*Schedule)
schedLogger := logging.CreateNewLogger("scheduling", "scheduling")
return &ScheduleTracker{
schedules: schedules,
logger: schedLogger,
}
}
// func (jh *SchedHandler) InitScheds() {
// for job := range jh.jobs {
// jh.jobs[job].init()
// switch j := jh.jobs[job].(type) {
// case *controllerJob:
// j.customInit()
// }
// }
// }
func (st *ScheduleTracker) Reciever() {
for sched := range schedChan {
if sched.scheduler.IsRunning() {
st.schedules[sched.ID] = sched
} else {
delete(st.schedules, sched.ID)
}
}
}