-
Notifications
You must be signed in to change notification settings - Fork 0
/
schedule_dao_log.go
66 lines (57 loc) · 1.14 KB
/
schedule_dao_log.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
package group
import (
"fmt"
"net"
"strings"
"github.com/rafaeljusto/druns/core/db"
"github.com/rafaeljusto/druns/core/dblog"
"github.com/rafaeljusto/druns/core/errors"
)
type scheduleDAOLog struct {
sqler db.SQLer
ip net.IP
agent int
tableName string
tableFields []string
}
func newScheduleDAOLog(sqler db.SQLer, ip net.IP, agent int) scheduleDAOLog {
return scheduleDAOLog{
sqler: sqler,
ip: ip,
agent: agent,
tableName: "client_group_schedule_log",
tableFields: []string{
"id",
"client_group_id",
"weekday",
"time",
"duration",
"log_id",
},
}
}
func (dao *scheduleDAOLog) save(s *Schedule, groupID int, operation dblog.Operation) error {
dbLog, err := dblog.NewService(dao.sqler).Create(dao.agent, dao.ip, operation)
if err != nil {
return err
}
query := fmt.Sprintf(
"INSERT INTO %s (%s) VALUES (%s)",
dao.tableName,
strings.Join(dao.tableFields, ", "),
db.Placeholders(dao.tableFields),
)
_, err = dao.sqler.Exec(
query,
s.Id,
groupID,
s.Weekday,
s.Time,
s.Duration,
dbLog.Id,
)
if err != nil {
return errors.New(err)
}
return nil
}