chirpnest/job.go

89 lines
2.1 KiB
Go
Raw Normal View History

2019-05-11 06:54:12 +02:00
package main
import (
2019-05-11 06:55:05 +02:00
"encoding/json"
2019-05-11 06:54:12 +02:00
"fmt"
2019-05-11 06:55:05 +02:00
"time"
2019-05-11 06:54:12 +02:00
)
2019-05-11 06:54:49 +02:00
func jobRescan(j Job) {
2019-05-11 07:06:40 +02:00
var r JobPayloadRescanMsg
2019-05-11 06:54:12 +02:00
err := setJobStart(j.ID64)
logOnError(err, "jobRescan : setJobStart")
2019-05-11 07:06:40 +02:00
2019-05-11 06:56:48 +02:00
err = json.Unmarshal(j.Payload, &r)
2019-05-11 07:06:40 +02:00
logOnError(err, "jobRescan : Unmarshal payload")
2019-05-11 06:54:12 +02:00
ids := getSQLListID64(r.Query)
2019-05-11 07:06:40 +02:00
2019-05-11 06:54:12 +02:00
if len(ids) > 1 {
for _, id := range ids {
2019-05-11 07:20:44 +02:00
p := JobPayloadRescanMsg{
Query: fmt.Sprintf("SELECT o.id FROM obj o WHERE o.id = %d AND o.obj_type_id = %d AND o.obj_sub_type_id = %d;", id, objTypeMessage, objSubTypeMessageUnknown),
}
2019-05-11 06:54:12 +02:00
b, _ := json.Marshal(p)
2019-05-16 04:49:34 +02:00
err := createJob(objSubTypeJobRescanMsg, objJobPriorityRescanChildMsg, j.UserID64, time.Now(), b)
2019-05-11 06:54:12 +02:00
logOnError(err, "jobRescan : createJob(objSubTypeJobRescanMsg)")
}
p := JobPayloadSetDone{
2019-05-16 04:49:34 +02:00
JobID64: j.ID64,
2019-05-16 04:52:30 +02:00
MsgID64: r.MsgID64,
ChatID64: r.ChatID64,
2019-05-16 04:49:34 +02:00
Text: fmt.Sprintf("%d messages processed.", len(ids)),
2019-05-11 06:54:12 +02:00
}
b, _ := json.Marshal(p)
2019-05-16 04:49:34 +02:00
err := createJob(objSubTypeJobSetJobDone, objJobPriority, j.UserID64, time.Now(), b)
2019-05-11 06:54:12 +02:00
logOnError(err, "jobRescan : createJob(objSubTypeJobSetJobDone)")
} else if len(ids) == 1 {
SQLMsgIdentifyQueue <- ids[0]
err = setJobDone(j.ID64)
2019-05-11 07:06:40 +02:00
logOnError(err, "jobRescan : setJobDone(1)")
2019-05-16 04:49:34 +02:00
m := TGCommand{
2019-05-16 04:52:30 +02:00
Type: commandReplyMsg,
Text: "One message processed.",
2019-05-16 04:53:10 +02:00
FromMsgID64: r.MsgID64,
2019-05-16 04:52:30 +02:00
FromChatID64: r.ChatID64,
2019-05-16 04:49:34 +02:00
}
TGCmdQueue <- m
2019-05-11 07:06:40 +02:00
} else {
err = setJobDone(j.ID64)
logOnError(err, "jobRescan : setJobDone(0)")
2019-05-16 04:49:34 +02:00
m := TGCommand{
2019-05-16 04:52:30 +02:00
Type: commandReplyMsg,
Text: "No message processed.",
FromMsgID64: r.MsgID64,
FromChatID64: r.ChatID64,
2019-05-16 04:49:34 +02:00
}
TGCmdQueue <- m
2019-05-11 06:54:12 +02:00
}
return
}
2019-05-11 06:54:49 +02:00
func jobSetDone(j Job) {
2019-05-11 07:06:40 +02:00
var r JobPayloadSetDone
2019-05-11 06:54:12 +02:00
err := setJobStart(j.ID64)
logOnError(err, "jobSetDone : setJobStart")
2019-05-11 07:06:40 +02:00
2019-05-11 06:56:48 +02:00
err = json.Unmarshal(j.Payload, &r)
2019-05-11 07:06:40 +02:00
logOnError(err, "jobSetDone : Unmarshal payload")
2019-05-11 06:54:12 +02:00
err = setJobDone(r.JobID64)
logOnError(err, "jobSetDone : setJobDone(child)")
2019-05-11 07:06:40 +02:00
2019-05-11 06:54:12 +02:00
err = setJobDone(j.ID64)
logOnError(err, "jobSetDone : setJobDone")
2019-05-11 07:06:40 +02:00
2019-05-16 04:52:30 +02:00
m := TGCommand{
Type: commandReplyMsg,
Text: r.Text,
FromMsgID64: r.MsgID64,
FromChatID64: r.ChatID64,
}
TGCmdQueue <- m
2019-05-11 06:54:12 +02:00
return
}