From 8f451118cb12709cd093d14972c21bb536d1c8a5 Mon Sep 17 00:00:00 2001 From: shoopea Date: Sat, 27 Jun 2020 11:54:13 +0200 Subject: [PATCH] test --- def.go | 1 + msg.go | 2 +- sql.go | 32 ++++++++++++++++++++++++++++++++ workers.go | 3 ++- 4 files changed, 36 insertions(+), 2 deletions(-) diff --git a/def.go b/def.go index 554b4b7..d31c82b 100644 --- a/def.go +++ b/def.go @@ -375,6 +375,7 @@ type ChatWarsMessageUnionWar struct { } type ChatWarsMessageTimeAck struct { + ObjID64 int64 `json:"obj_id"` RealTime time.Time `json:"real_time"` TimeOfDay string `json:"time_of_day"` Hour int64 `json:"hour"` diff --git a/msg.go b/msg.go index 6d591d7..f576965 100644 --- a/msg.go +++ b/msg.go @@ -619,6 +619,7 @@ func parseSubTypeMessageDuelFight(m *ChatWarsMessage, r *regexp.Regexp) (*ChatWa func parseSubTypeMessageTimeAck(m *ChatWarsMessage, r *regexp.Regexp) (*ChatWarsMessageTimeAck, error) { cwm := ChatWarsMessageTimeAck{} + cwm.ObjID64 = m.ObjID64 t, err := fromChatWarsDate(r.ReplaceAllString(m.Text, "${Day}") + " " + r.ReplaceAllString(m.Text, "${Month}") + " " + r.ReplaceAllString(m.Text, "${Year}") + " " + r.ReplaceAllString(m.Text, "${Hour}") + ":" + r.ReplaceAllString(m.Text, "${Minute}")) logOnError(err, "parseSubTypeMessageTimeAck : fromChatWarsDate") cwm.RealTime = t @@ -630,7 +631,6 @@ func parseSubTypeMessageTimeAck(m *ChatWarsMessage, r *regexp.Regexp) (*ChatWars cwm.Year, _ = strconv.ParseInt(r.ReplaceAllString(m.Text, "${Year}"), 10, 64) cwm.Weather = r.ReplaceAllString(m.Text, "${Weather}") cwm.WeatherNext = r.ReplaceAllString(m.Text, "${WeatherNext}") - log.Printf("parseSubTypeMessageTimeAck : drift %v", m.Date.Sub(cwm.RealTime)) return &cwm, nil } diff --git a/sql.go b/sql.go index b28b5d5..c06e7fb 100644 --- a/sql.go +++ b/sql.go @@ -383,6 +383,14 @@ func initDB() { failOnError(err, "initDB : create table obj_msg_shop_main") log.Println("initDB : obj_msg_shop_main created ...") + _, err = db.Exec(`CREATE TABLE obj_msg_time ( + obj_id BIGINT UNSIGNED NOT NULL + ,date DATETIME NOT NULL + ,FOREIGN KEY (obj_id) REFERENCES obj(id) ON DELETE CASCADE + ) ENGINE = InnoDB CHARSET=utf8mb4 COLLATE utf8mb4_bin;`) + failOnError(err, "initDB : create table obj_msg_time") + log.Println("initDB : obj_msg_time created ...") + _, err = db.Exec(`CREATE TABLE obj_tribute ( tg_user_id BIGINT UNSIGNED NOT NULL ,item_id BIGINT UNSIGNED NOT NULL @@ -879,6 +887,30 @@ func insertMsgAuctionAnnounce(m *ChatWarsMessageAuctionAnnounce) error { return nil } +func insertMsgTimeAck(m *ChatWarsMessageTimeAck) error { + objSubTypeId, err := getObjSubTypeId(m.ObjID64) + if err != nil { + return err + } + if objSubTypeId != cacheObjSubType[`msg`] && objSubTypeId != cacheObjSubType[`msg_time_ack`] { + return errors.New("Message type mismatch") + } + + stmt, err := db.Prepare(`INSERT INTO obj_msg_time (obj_id, date) + VALUES (?, ?);`) + if err != nil { + return err + } + defer stmt.Close() + + _, err = stmt.Exec(m.ObjID64, m.RealTime) + if err != nil { + return err + } + + return nil +} + func insertMsgPillageInc(m *ChatWarsMessagePillageInc) error { objSubTypeId, err := getObjSubTypeId(m.ObjID64) if err != nil { diff --git a/workers.go b/workers.go index f60cab5..2ee9e63 100644 --- a/workers.go +++ b/workers.go @@ -497,8 +497,9 @@ func SQLIdentifyMsgWorker(id int, objIds <-chan int64) { */ } case cacheObjSubType[`msg_time_ack`]: - _, err := parseSubTypeMessageTimeAck(m, rule.re) + cwm, err := parseSubTypeMessageTimeAck(m, rule.re) logOnError(err, "SQLIdentifyMsgWorker["+strconv.Itoa(id)+"] : Parsing cacheObjSubType[`msg_time_ack`]") + err = insertMsgTimeAck(cwm) case cacheObjSubType[`msg_orderbook_acl`]: _, err := parseSubTypeMessageOrderbookAck(m, rule.re) logOnError(err, "SQLIdentifyMsgWorker["+strconv.Itoa(id)+"] : Parsing cacheObjSubType[`msg_orderbook_acl`]")