test
This commit is contained in:
parent
bca3777f2e
commit
c3cb74a705
8
main.go
8
main.go
@ -51,8 +51,9 @@ var (
|
||||
|
||||
db *sql.DB
|
||||
|
||||
cfg Config
|
||||
MQCWMsgQueue chan ChatWarsMessage
|
||||
cfg Config
|
||||
MQCWMsgQueue chan ChatWarsMessage
|
||||
SQLMsgIdQueue chan int64
|
||||
)
|
||||
|
||||
func PrintText(m *tb.Message) {
|
||||
@ -103,6 +104,9 @@ func main() {
|
||||
for w := 1; w <= 6; w++ {
|
||||
go SQLCWMsgWorker(w, MQCWMsgQueue)
|
||||
}
|
||||
for w := 1; w <= 6; w++ {
|
||||
go SQLIdentifyMsgWorker(w, SQLMsgIdQueue)
|
||||
}
|
||||
|
||||
fmt.Println("Started !")
|
||||
|
||||
|
94
sql.go
94
sql.go
@ -62,6 +62,18 @@ func initDB() {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
_, err = db.Exec(`CREATE TABLE code_obj_sub_type (
|
||||
id SMALLINT(5) UNSIGNED NOT NULL
|
||||
,intl_id VARCHAR(32) NOT NULL
|
||||
,name VARCHAR(80) NOT NULL
|
||||
,obj_type_id SMALLINT UNSIGNED NOT NULL
|
||||
,PRIMARY KEY (id)
|
||||
,FOREIGN KEY (obj_type_id) REFERENCES code_obj_type(id) ON DELETE CASCADE
|
||||
) ENGINE = InnoDB CHARSET=utf8 COLLATE utf8_unicode_ci;`)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
_, err = db.Exec(`CREATE TABLE obj (
|
||||
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT
|
||||
,obj_type_id SMALLINT UNSIGNED NOT NULL
|
||||
@ -112,6 +124,23 @@ func initDB() {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
_, 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
|
||||
,exp SMALLINT UNSIGNED NOT NULL
|
||||
,stamina BOOLEAN NOT NULL
|
||||
,crit BOOLEAN NOT NULL
|
||||
,FOREIGN KEY (obj_id) REFERENCES obj(id) ON DELETE CASCADE
|
||||
,UNIQUE KEY (msg_id, chat_id, sender_user_id)
|
||||
) ENGINE = InnoDB CHARSET=utf8 COLLATE utf8_unicode_ci;`)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
_, err = db.Exec(`INSERT INTO code_obj_type (id, intl_id, name)
|
||||
VALUES (1, "user", "User")
|
||||
,(2, "guild", "Guild")
|
||||
@ -120,40 +149,63 @@ func initDB() {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
log.Println("Database set up")
|
||||
}
|
||||
|
||||
func SQLCWMsgWorker(id int, msgs <-chan ChatWarsMessage) {
|
||||
for m := range msgs {
|
||||
err := putMsg(m)
|
||||
if err != nil {
|
||||
logOnError(err, "SQLCWMsgWorker["+strconv.Itoa(id)+"] : Inserting message.")
|
||||
}
|
||||
}
|
||||
|
||||
log.Printf("SQLCWMsgWorker[" + strconv.Itoa(id) + "] : Closing.")
|
||||
|
||||
}
|
||||
|
||||
func putMsg(m ChatWarsMessage) error {
|
||||
res, err := db.Exec(`INSERT INTO obj (obj_type_id)
|
||||
VALUES (3);`)
|
||||
_, err = db.Exec(`INSERT INTO code_obj_sub_type (id, intl_id, name, obj_type_id)
|
||||
VALUES (1, "unprocessed", "Unprocessed", 3)
|
||||
,(2, "unknown", "Unknown", 3)
|
||||
,(3, "report", "War report", 3)
|
||||
,(4, "g_report", "Guild War report", 3)
|
||||
,(5, "quest", "Quest result", 3)
|
||||
,(6, "fight", "Fight result", 3)
|
||||
,(7, "hero", "Hero summary", 3)
|
||||
,(8, "me", "Hero short summary", 3)
|
||||
,(9, "inv", "Inventory", 3);`)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
log.Println("Database set up")
|
||||
}
|
||||
|
||||
func putUnprocessedMsg(m ChatWarsMessage) (int64, error) {
|
||||
res, err := db.Exec(`INSERT INTO obj (obj_type_id, obj_sub_type_id)
|
||||
VALUES (3 , 1);`)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
objId, err := res.LastInsertId()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
stmt, err := db.Prepare(`INSERT INTO obj_msg (obj_id, msg_id, chat_id, sender_user_id, date , text)
|
||||
VALUES (?, ?, ?, ?, FROM_UNIXTIME(?), ?);`)
|
||||
if err != nil {
|
||||
return err
|
||||
return nil, err
|
||||
}
|
||||
defer stmt.Close()
|
||||
|
||||
_, err = stmt.Exec(objId, m.ID64, m.ChatID64, m.SenderUserID64, m.Date, m.Text)
|
||||
if err != nil {
|
||||
return err
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return nil
|
||||
return objId, nil
|
||||
}
|
||||
|
||||
func getMsg(objId int64) (ChatWarsMessage, error) {
|
||||
var m ChatWarsMessage
|
||||
|
||||
stmt, err := db.Prepare(`SELECT om.msg_id, om.chat_id, om.sender_user_id, UNIX_TIMESTAMP(om.date), om.text FROM obj_msg om WHERE om.id = ?`)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer stmt.Close()
|
||||
|
||||
err = stmtOut.QueryRow(objId).Scan(&m.ID64, &m.ChatID64, &m.SenderUserID64, &m.Date, &m.Text)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return m, nil
|
||||
}
|
||||
|
29
workers.go
Normal file
29
workers.go
Normal file
@ -0,0 +1,29 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"log"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
func SQLCWMsgWorker(id int, msgs <-chan ChatWarsMessage) {
|
||||
log.Printf("SQLCWMsgWorker[" + strconv.Itoa(id) + "] : Starting.")
|
||||
for m := range msgs {
|
||||
objId, err := putUnprocessedMsg(m)
|
||||
if err != nil {
|
||||
logOnError(err, "SQLCWMsgWorker["+strconv.Itoa(id)+"] : Inserting message.")
|
||||
} else {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
log.Printf("SQLCWMsgWorker[" + strconv.Itoa(id) + "] : Closing.")
|
||||
|
||||
}
|
||||
|
||||
func SQLIdentifyMsgWorker(id int, objIds <-chan int64) {
|
||||
log.Printf("SQLIdentifyMsgWorker[" + strconv.Itoa(id) + "] : Starting.")
|
||||
for objId := range objIds {
|
||||
|
||||
}
|
||||
log.Printf("SQLIdentifyMsgWorker[" + strconv.Itoa(id) + "] : Closing.")
|
||||
}
|
Loading…
Reference in New Issue
Block a user