introduce code table caching
This commit is contained in:
parent
5aae81b0f7
commit
fcb90c267a
39
bindata.go
39
bindata.go
File diff suppressed because one or more lines are too long
@ -1,66 +1,53 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"id": "1",
|
|
||||||
"intl_id": "user",
|
"intl_id": "user",
|
||||||
"name": "User"
|
"name": "User"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "2",
|
|
||||||
"intl_id": "guild",
|
"intl_id": "guild",
|
||||||
"name": "Guild"
|
"name": "Guild"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "3",
|
|
||||||
"intl_id": "msg",
|
"intl_id": "msg",
|
||||||
"name": "Message"
|
"name": "Message"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "4",
|
|
||||||
"intl_id": "war",
|
"intl_id": "war",
|
||||||
"name": "War"
|
"name": "War"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "5",
|
|
||||||
"intl_id": "war_report",
|
"intl_id": "war_report",
|
||||||
"name": "War Report"
|
"name": "War Report"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "6",
|
|
||||||
"intl_id": "job",
|
"intl_id": "job",
|
||||||
"name": "Job"
|
"name": "Job"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "7",
|
|
||||||
"intl_id": "item",
|
"intl_id": "item",
|
||||||
"name": "Item"
|
"name": "Item"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "8",
|
|
||||||
"intl_id": "castle",
|
"intl_id": "castle",
|
||||||
"name": "Castle"
|
"name": "Castle"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "9",
|
|
||||||
"intl_id": "fair",
|
"intl_id": "fair",
|
||||||
"name": "Fair"
|
"name": "Fair"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "10",
|
|
||||||
"intl_id": "union",
|
"intl_id": "union",
|
||||||
"name": "Trade Union"
|
"name": "Trade Union"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "11",
|
|
||||||
"intl_id": "tribute",
|
"intl_id": "tribute",
|
||||||
"name": "Tribute"
|
"name": "Tribute"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "12",
|
|
||||||
"intl_id": "xp",
|
"intl_id": "xp",
|
||||||
"name": "Experience"
|
"name": "Experience"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "13",
|
|
||||||
"intl_id": "quest",
|
"intl_id": "quest",
|
||||||
"name": "Quest"
|
"name": "Quest"
|
||||||
}
|
}
|
||||||
|
0
data/config.json
Normal file
0
data/config.json
Normal file
14
def.go
14
def.go
@ -17,6 +17,20 @@ type DataBackup struct {
|
|||||||
Messages []ChatWarsMessage `json:"messages"`
|
Messages []ChatWarsMessage `json:"messages"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ObjType struct {
|
||||||
|
ID64 int64
|
||||||
|
IntlId string `json:"intl_id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type ObjSubType struct {
|
||||||
|
ID64 int64
|
||||||
|
IntlId string `json:"intl_id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
ObjType string `json:"obj_type"`
|
||||||
|
ObjTypeID64 int64
|
||||||
|
}
|
||||||
|
|
||||||
type MQClient struct {
|
type MQClient struct {
|
||||||
User string
|
User string
|
||||||
Password string
|
Password string
|
||||||
|
19
main.go
19
main.go
@ -131,24 +131,7 @@ func main() {
|
|||||||
_, _ = addObjGuild(``, `No Guild`)
|
_, _ = addObjGuild(``, `No Guild`)
|
||||||
}
|
}
|
||||||
|
|
||||||
resetMsgParsingRules()
|
initCache()
|
||||||
msgParsingRules, err = loadMsgParsingRules()
|
|
||||||
logOnError(err, "Message parsing rules")
|
|
||||||
|
|
||||||
err = loadObjCastle()
|
|
||||||
logOnError(err, "Caching castles")
|
|
||||||
|
|
||||||
err = loadObjGuild()
|
|
||||||
logOnError(err, "Caching guilds")
|
|
||||||
|
|
||||||
err = loadObjUser()
|
|
||||||
logOnError(err, "Caching user")
|
|
||||||
|
|
||||||
err = loadObjItem()
|
|
||||||
logOnError(err, "Caching items")
|
|
||||||
|
|
||||||
err = loadObjMsg()
|
|
||||||
logOnError(err, "Caching msgs")
|
|
||||||
|
|
||||||
// Registering bot
|
// Registering bot
|
||||||
bot, err := tb.NewBot(tb.Settings{
|
bot, err := tb.NewBot(tb.Settings{
|
||||||
|
101
obj.go
101
obj.go
@ -16,12 +16,113 @@ var (
|
|||||||
cacheObjUser *sync.Map
|
cacheObjUser *sync.Map
|
||||||
cacheObjMsg *sync.Map
|
cacheObjMsg *sync.Map
|
||||||
|
|
||||||
|
cacheObjType map[string]int64
|
||||||
|
cacheObjSubType map[string]int64
|
||||||
|
|
||||||
cacheObjItem map[string]ChatWarsItem
|
cacheObjItem map[string]ChatWarsItem
|
||||||
cacheObjItemId map[int64]ChatWarsItem
|
cacheObjItemId map[int64]ChatWarsItem
|
||||||
muxObjItem sync.Mutex
|
muxObjItem sync.Mutex
|
||||||
muxObjItemId sync.Mutex
|
muxObjItemId sync.Mutex
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func initCache() {
|
||||||
|
|
||||||
|
resetMsgParsingRules()
|
||||||
|
msgParsingRules, err = loadMsgParsingRules()
|
||||||
|
logOnError(err, "initCache : message parsing rules")
|
||||||
|
|
||||||
|
err = loadObjCastle()
|
||||||
|
logOnError(err, "initCache : caching castles")
|
||||||
|
|
||||||
|
err = loadObjGuild()
|
||||||
|
logOnError(err, "initCache : caching guilds")
|
||||||
|
|
||||||
|
err = loadObjUser()
|
||||||
|
logOnError(err, "initCache : caching user")
|
||||||
|
|
||||||
|
err = loadObjItem()
|
||||||
|
logOnError(err, "initCache : caching items")
|
||||||
|
|
||||||
|
err = loadObjMsg()
|
||||||
|
logOnError(err, "initCache : caching msgs")
|
||||||
|
}
|
||||||
|
|
||||||
|
func loadObjType() error {
|
||||||
|
var obj []ObjType
|
||||||
|
|
||||||
|
b, err := Asset("data/code_obj_type.json")
|
||||||
|
logOnError(err, "loadObjType : load data/code_obj_type.json")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = json.Unmarshal(b, &obj)
|
||||||
|
logOnError(err, "loadObjType : Unmarshal")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
cacheObjType = make(map[string]int64)
|
||||||
|
|
||||||
|
for _, v := range obj {
|
||||||
|
id := codeObjTypeId(v.IntlId)
|
||||||
|
if id > 0 {
|
||||||
|
cacheObjType[v.IntlId] = id
|
||||||
|
} else {
|
||||||
|
err = insertObjType(v.IntlId, v.Name)
|
||||||
|
logOnError(err, "loadObjType : insertObjType")
|
||||||
|
if err == nil {
|
||||||
|
id = codeObjTypeId(v.IntlId)
|
||||||
|
if id > 0 {
|
||||||
|
cacheObjType[v.IntlId] = id
|
||||||
|
} else {
|
||||||
|
// issue inserting
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func loadObjSubType() error {
|
||||||
|
var obj []ObjSubType
|
||||||
|
|
||||||
|
b, err := Asset("data/code_obj_sub_type.json")
|
||||||
|
logOnError(err, "loadObjSubType : load data/code_obj_sub_type.json")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = json.Unmarshal(b, &obj)
|
||||||
|
logOnError(err, "loadObjSubType : Unmarshal")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
cacheObjSubType = make(map[string]int64)
|
||||||
|
|
||||||
|
for _, v := range obj {
|
||||||
|
id := codeObjSubTypeId(v.IntlId)
|
||||||
|
if id > 0 {
|
||||||
|
cacheObjSubType[v.IntlId] = id
|
||||||
|
} else {
|
||||||
|
err = insertObjSubType(v.IntlId, v.Name, v.ObjType)
|
||||||
|
logOnError(err, "loadObjSubType : insertObjSubType")
|
||||||
|
if err == nil {
|
||||||
|
id = codeObjSubTypeId(v.IntlId)
|
||||||
|
if id > 0 {
|
||||||
|
cacheObjSubType[v.IntlId] = id
|
||||||
|
} else {
|
||||||
|
// issue inserting
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
func codeObjTypeId(intlId string) (int64, error) {
|
func codeObjTypeId(intlId string) (int64, error) {
|
||||||
var objTypeId int64
|
var objTypeId int64
|
||||||
|
|
||||||
|
16
sql.go
16
sql.go
@ -620,6 +620,22 @@ func initDB() {
|
|||||||
log.Println("initDB : Database set up")
|
log.Println("initDB : Database set up")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func insertObjType(intlId string, name string) error {
|
||||||
|
stmt, err := db.Prepare(`INSERT INTO code_obj_type (intl_id, name)
|
||||||
|
VALUES (?, ?);`)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer stmt.Close()
|
||||||
|
|
||||||
|
_, err = stmt.Exec(intlId, name)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func insertMsgItem(objId int64, itemId int64, quantity int64) error {
|
func insertMsgItem(objId int64, itemId int64, quantity int64) error {
|
||||||
stmt, err := db.Prepare(`INSERT INTO obj_msg_item (obj_id, item_id, quantity)
|
stmt, err := db.Prepare(`INSERT INTO obj_msg_item (obj_id, item_id, quantity)
|
||||||
VALUES (?, ?, ?);`)
|
VALUES (?, ?, ?);`)
|
||||||
|
Loading…
Reference in New Issue
Block a user