Skip to content

Commit

Permalink
fix: query all db data, not one by one query
Browse files Browse the repository at this point in the history
  • Loading branch information
gsxhnd committed Aug 7, 2024
1 parent 89599ec commit f900d69
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 11 deletions.
12 changes: 12 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,18 @@
"output": "${workspaceRoot}/build/main",
"trace": "verbose",
"cwd": "${workspaceRoot}"
},
{
"name": "Run recent_html_to_db",
"type": "go",
"request": "launch",
"mode": "auto",
"showLog": true,
"program": "${workspaceRoot}/cmd",
"args": ["recent_html_to_db"],
"output": "${workspaceRoot}/build/main",
"trace": "verbose",
"cwd": "${workspaceRoot}"
}
]
}
58 changes: 47 additions & 11 deletions cmd/html2db.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,10 @@ import (
"fmt"
"io/fs"
"path/filepath"
"time"

"github.com/gsxhnd/tenhou/db"
"github.com/gsxhnd/tenhou/model"
"github.com/gsxhnd/tenhou/utils"
"github.com/urfave/cli/v2"
)
Expand Down Expand Up @@ -59,31 +61,65 @@ var recentHtml2DB = &cli.Command{
return nil
})

var startDate, endDate time.Time
var fullData = make([]Paifu, 0)
var dbData = make([]model.Log, 0)
var notExistData = make([]Paifu, 0)

for _, v := range htmlList {
data, _ := ReadSingleFile(v)
for _, d := range data {
t, _ := time.Parse(time.RFC3339, d.Date)
if startDate.IsZero() {
startDate = t
}
if endDate.IsZero() {
endDate = t
}

if startDate.After(t) {
startDate = t
}
if endDate.Before(t) {
endDate = t
}
}
fullData = append(fullData, data...)
}

fmt.Println(len(fullData))
rows, err := db.TenhouDB.Query(
"select id, log_id,game_type,game_date from tenhou where game_date >= ? and game_date <= ?",
startDate.Format(time.RFC3339), endDate.Format(time.RFC3339),
)
if err != nil {
fmt.Println(err)
}

for _, p := range fullData {
var exist bool
rows, err := db.TenhouDB.Query("SELECT EXISTS (SELECT 1 FROM tenhou WHERE log_id = ?) as exist", p.LogID)
if err != nil {
fmt.Println(err)
for rows.Next() {
var data = model.Log{}
if err := rows.Scan(&data.Id, &data.LogId, &data.GameType, &data.GameDate); err != nil {
logger.Errorw("GetLogInfo scan row error", "error", err)
return err
}
if rows.Next() {
rows.Scan(&exist)
dbData = append(dbData, data)
}

for _, v := range fullData {
var exist bool = false
for _, e := range dbData {
if v.LogID == e.LogId {
exist = true
}
}

if !exist {
// logger.Infof("log id not exist in db, logid: %v", p.LogID)
notExistData = append(notExistData, p)
notExistData = append(notExistData, v)
}
}

fmt.Println(len(notExistData))
if len(notExistData) == 0 {
return nil
}

tx, _ := db.TenhouDB.Begin()
stmt, _ := tx.Prepare("insert into tenhou(log_id, game_type, game_date) values(?, ?,?)")
Expand Down

0 comments on commit f900d69

Please sign in to comment.