package main import ( "encoding/json" "fmt" "time" ) func jobRescan(j Job) { var r JobPayloadRescanMsg err := setJobStart(j.ID64) logOnError(err, "jobRescan : setJobStart") err = json.Unmarshal(j.Payload, &r) logOnError(err, "jobRescan : Unmarshal payload") ids := getSQLListID64(r.Query) if len(ids) > 1 { for _, id := range ids { p := JobPayloadRescanMsg{ Query: fmt.Sprintf("SELECT %id id FROM DUAL;", id), MsgID64: 0, ChatID64: 0, } b, _ := json.Marshal(p) err := createJob(objSubTypeJobRescanMsg, objJobPriorityRescanChildMsg, j.UserID64, time.Now(), b) logOnError(err, "jobRescan : createJob(objSubTypeJobRescanMsg)") } p := JobPayloadSetDone{ JobID64: j.ID64, MsgID64: r.MsgID64, ChatID64: r.ChatID64, Text: fmt.Sprintf("%d messages processed.", len(ids)), } b, _ := json.Marshal(p) err := createJob(objSubTypeJobSetJobDone, objJobPriority, j.UserID64, time.Now(), b) logOnError(err, "jobRescan : createJob(objSubTypeJobSetJobDone)") } else if len(ids) == 1 { SQLMsgIdentifyQueue <- ids[0] err = setJobDone(j.ID64) logOnError(err, "jobRescan : setJobDone(1)") if r.MsgID64 != 0 || r.ChatID64 != 0 { m := TGCommand{ Type: commandReplyMsg, Text: "One message processed.", FromMsgID64: r.MsgID64, FromChatID64: r.ChatID64, } TGCmdQueue <- m } } else { err = setJobDone(j.ID64) logOnError(err, "jobRescan : setJobDone(0)") if r.MsgID64 != 0 || r.ChatID64 != 0 { m := TGCommand{ Type: commandReplyMsg, Text: "No message processed.", FromMsgID64: r.MsgID64, FromChatID64: r.ChatID64, } TGCmdQueue <- m } } return } func jobSetDone(j Job) { var r JobPayloadSetDone err := setJobStart(j.ID64) logOnError(err, "jobSetDone : setJobStart") err = json.Unmarshal(j.Payload, &r) logOnError(err, "jobSetDone : Unmarshal payload") err = setJobDone(r.JobID64) logOnError(err, "jobSetDone : setJobDone(child)") err = setJobDone(j.ID64) logOnError(err, "jobSetDone : setJobDone") m := TGCommand{ Type: commandReplyMsg, Text: r.Text, FromMsgID64: r.MsgID64, FromChatID64: r.ChatID64, } TGCmdQueue <- m return }