diff --git a/job.go b/job.go index bb97e55..89f104e 100644 --- a/job.go +++ b/job.go @@ -107,10 +107,12 @@ func loadCurrentJobs() ([]Job, error) { jobs []Job ) - _, err := db.Exec("UPDATE obj_job j SET j.pulled = ?, j.in_work = 1 WHERE j.is_done = 0 AND j.in_work = 0 AND j.schedule <= ? ORDER BY j.priority ASC, j.obj_id ASC LIMIT ?;", time.Now(), time.Now(), SQLJobSliceSize) + t := time.Now() + + _, err := db.Exec("UPDATE obj_job j SET j.pulled = ?, j.in_work = 1 WHERE j.is_done = 0 AND j.in_work = 0 AND j.schedule <= ? ORDER BY j.priority ASC, j.obj_id ASC LIMIT ?;", t, t, SQLJobSliceSize) logOnError(err, "loadCurrentJobs : update intial rows") - stmt, err := db.Prepare("SELECT o.id, o.obj_sub_type_id, j.status, j.user_id, j.payload FROM obj_job j, obj o WHERE j.obj_id = o.id AND j.is_done = 0 AND j.in_work = 1 ORDER BY j.priority ASC, j.obj_id ASC;") + stmt, err := db.Prepare("SELECT o.id, o.obj_sub_type_id, j.status, j.user_id, j.payload FROM obj_job j, obj o WHERE j.obj_id = o.id AND j.is_done = 0 AND j.in_work = 1 AND j.pulled = ? ORDER BY j.priority ASC, j.obj_id ASC;") logOnError(err, "loadCurrentJobs : prepare select statement") rows, err := stmt.Query() @@ -118,7 +120,7 @@ func loadCurrentJobs() ([]Job, error) { logOnError(err, "loadCurrentJobs : query select statement") for rows.Next() { - err = rows.Scan(&objId, &jobTypeId, &status, &userID64, &payload) + err = rows.Scan(&objId, &jobTypeId, &status, &userID64, &payload, &t) logOnError(err, "loadCurrentJobs : scan query rows") job := Job{ ID64: objId, diff --git a/msg.go b/msg.go index 505e70e..886e7cc 100644 --- a/msg.go +++ b/msg.go @@ -32,12 +32,23 @@ func parseSubTypeMessageReportAck(m *ChatWarsMessage, r *regexp.Regexp) (*ChatWa func parseSubTypeMessageGStockAnyAck(m *ChatWarsMessage, r *regexp.Regexp) (*ChatWarsMessageStock, error) { cwm := ChatWarsMessageStock{} - log.Printf("parseSubTypeMessageGStockAnyAck : GStock Any Ack identified\n") - // log.Printf("parseSubTypeMessageGStockAnyAck : Stock : %s\n", r.ReplaceAllString(m.Text, "${Stock}")) + items := make([]ChatWarsItems) re := regexp.MustCompile(`\n([0-9a-z]+) (.*) x ([0-9]+)`) for _, l := range re.FindAllStringSubmatch(r.ReplaceAllString(m.Text, "${Stock}"), -1) { - log.Printf("parseSubTypeMessageGStockAnyAck : %q\n", l) + i := getObjItemID(l[1]) + if i == 0 { + getObjItemID(l[2]) + } + q, _ := strconv.ParseInt(l[3], 10, 64) + if i != 0 { + item := ChatWarsItems{ + ItemID64: i, + Quantity: q, + } + items.Append(item) + } } + cwm.ItemList = items return &cwm, nil } diff --git a/workers.go b/workers.go index f6b82c8..4cd551e 100644 --- a/workers.go +++ b/workers.go @@ -220,6 +220,8 @@ func SQLJobWorker() { } if len(jobs) < SQLJobSliceSize { time.Sleep(100 * time.Millisecond) + } else { + time.Sleep(1 * time.Millisecond) } } log.Printf("SQLJobWorker : Closing.")