修复获取message_seq问题

This commit is contained in:
liyp 2024-04-21 13:29:35 +08:00
parent 0a73231030
commit 0bab4ee3e4

View file

@ -3,6 +3,7 @@ package main
import (
"database/sql"
"encoding/json"
"errors"
"fmt"
"io"
"log"
@ -11,9 +12,10 @@ import (
_ "github.com/mattn/go-sqlite3"
)
// 这个工具用来修复旧数据库没有 message_seq 字段的问题
func main() {
// Open SQLite database
db, err := sql.Open("sqlite3", "./data.db")
db, err := sql.Open("sqlite3", "../data.db")
if err != nil {
log.Fatal(err)
}
@ -32,44 +34,45 @@ func main() {
}
// Fetch messageIDs from database
rows, err := db.Query("SELECT message_id FROM messages")
rows, err := db.Query("SELECT message_id FROM messages WHERE message_seq IS NULL")
if err != nil {
log.Fatal(err)
}
defer rows.Close()
var messageIDs []int
for rows.Next() {
var messageID int
err := rows.Scan(&messageID)
if err != nil {
log.Fatal(err)
}
messageIDs = append(messageIDs, messageID)
// Fetch message_seq from API
messageSeq, err := fetchMessageSeq(messageID)
if err != nil {
log.Println(err)
continue
}
// Insert or update message_seq in database
err = insertOrUpdateMessageSeq(db, messageID, messageSeq)
if err != nil {
log.Println(err)
continue
}
fmt.Printf("MessageSeq for message_id %d is %d\n", messageID, messageSeq)
}
if err := rows.Err(); err != nil {
log.Fatal(err)
}
for _, messageID := range messageIDs {
messageSeq, err := fetchMessageSeq(messageID)
if err != nil {
log.Fatal(err)
continue
}
err = insertOrUpdateMessageSeq(db, messageID, messageSeq)
if err != nil {
log.Fatal(err)
continue
}
fmt.Printf("MessageSeq for message_id %d is %d\n", messageID, messageSeq)
}
}
func fetchMessageSeq(messageID int) (int, error) {
url := fmt.Sprintf("http://47.92.132.159:5700/get_msg?message_id=%d", messageID)
fmt.Println("URL:", url)
resp, err := http.Get(url)
if err != nil {
return 0, err
@ -80,14 +83,20 @@ func fetchMessageSeq(messageID int) (int, error) {
if err != nil {
return 0, err
}
println("Body:", string(body))
var messageResp map[string]interface{}
err = json.Unmarshal(body, &messageResp)
if err != nil {
return 0, err
}
return messageResp["message_seq"].(int), nil
data, ok := messageResp["data"].(map[string]interface{})
if !ok {
return 0, errors.New("data is not a map")
}
message_seq := int(data["message_seq"].(float64))
// println(message_seq)
return message_seq, nil
}
func insertOrUpdateMessageSeq(db *sql.DB, messageID, messageSeq int) error {