From 226f56126df932cb77a0e5aa486f84793004ce58 Mon Sep 17 00:00:00 2001 From: shoopea Date: Mon, 6 May 2019 18:43:42 +0800 Subject: [PATCH] incomplete --- sql.go | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 59 insertions(+), 8 deletions(-) diff --git a/sql.go b/sql.go index 71d5096..75715da 100644 --- a/sql.go +++ b/sql.go @@ -1,6 +1,7 @@ package main import ( + "errors" "log" "strconv" ) @@ -103,15 +104,15 @@ func initDB() { failOnError(err, "initDB : create table obj_msg") _, err = db.Exec(`CREATE TABLE obj_msg_report ( - obj_id BIGINT UNSIGNED NOT NULL - ,war_date TIMESTAMP NOT NULL - ,attack SMALLINT UNSIGNED NOT NULL - ,defense SMALLINT UNSIGNED NOT NULL - ,gold SMALLINT UNSIGNED NOT NULL - ,stock SMALLINT UNSIGNED NOT NULL + obj_id BIGINT UNSIGNED NOT NULL + ,war_date TIMESTAMP NOT NULL + ,attack SMALLINT UNSIGNED NOT NULL + ,defense SMALLINT UNSIGNED NOT NULL + ,gold SMALLINT UNSIGNED NOT NULL + ,stock MALLINT UNSIGNED NOT NULL ,exp SMALLINT UNSIGNED NOT NULL - ,stamina BOOLEAN NOT NULL - ,crit BOOLEAN NOT NULL + ,stamina TINYINT NOT NULL + ,crit TINYINT NOT NULL ,FOREIGN KEY (obj_id) REFERENCES obj(id) ON DELETE CASCADE ) ENGINE = InnoDB CHARSET=utf8 COLLATE utf8_unicode_ci;`) failOnError(err, "initDB : create table obj_msg_report") @@ -180,3 +181,53 @@ func getMsg(objId int64) (ChatWarsMessage, error) { return m, nil } + +func getObjSubTypeId(objId int64) (int64, error) { + var objSubTypeId int64 + stmt, err := db.Prepare(`SELECT o.sub_type_id FROM obj o WHERE o.id = ?`) + if err != nil { + return 0, err + } + defer stmt.Close() + + err = stmt.QueryRow(1).Scan(&objSubTypeId) + if err != nil { + return 0, err + } + + return objSubTypeId, nil +} + +func insertMsgReport(objId int64, war_date int32, atk int32, def int32, exp int32, gold int32, stock int32, crit bool, stamina bool) error { + objSubTypeId, err := getObjSubTypeId(objId) + if err != nil { + return err + } + if objSubTypeId != objSubTypeMessageUnprocess { + return errors.New("Message is not of type Unknown") + } + + obj_id BIGINT UNSIGNED NOT NULL + ,war_date TIMESTAMP NOT NULL + ,attack SMALLINT UNSIGNED NOT NULL + ,defense SMALLINT UNSIGNED NOT NULL + ,gold SMALLINT UNSIGNED NOT NULL + ,stock MALLINT UNSIGNED NOT NULL + ,exp SMALLINT UNSIGNED NOT NULL + ,stamina TINYINT NOT NULL + ,crit TINYINT NOT NULL + + stmt, err := db.Prepare(`INSERT INTO obj_msg_report (obj_id, war_date, attack, defense, gold, stock, exp, stamina, crit) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?FROM_UNIXTIME(?), ?);`) + if err != nil { + return err + } + defer stmt.Close() + + _, err = stmt.Exec(objId, m.ID64, m.ChatID64, m.UserID64, m.SenderUserID64, m.Date, m.Text) + if err != nil { + return err + } + + return nil +}