Merge branch 'test' into HEAD

This commit is contained in:
liyp 2024-04-21 12:25:45 +08:00
commit 5a813bb45d
3 changed files with 115 additions and 5 deletions

2
.gitignore vendored Normal file
View file

@ -0,0 +1,2 @@
tools/data.db
test.json

13
main.go
View file

@ -43,10 +43,12 @@ func insertMessage(db *sql.DB, data map[string]interface{}) error {
sender_card = sender_nickname sender_card = sender_nickname
} }
sender_role := sender["role"].(string) sender_role := sender["role"].(string)
fmt.Println(post_type, message_time, group_id, message_id, raw_message, sender_user_id, sender_nickname, sender_card, sender_role) message_seq := data["message_seq"].(float64)
fmt.Println(post_type, message_time, group_id, message_id, raw_message, sender_user_id, sender_nickname, sender_card, sender_role, message_seq)
// Insert data into database // Insert data into database
_, err = db.Exec("INSERT INTO messages ( post_type, message_type, time, group_id, message_id, raw_message, sender_user_id, sender_nickname, sender_card, sender_role) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", _, err = db.Exec("INSERT INTO messages ( post_type, message_type, time, group_id, message_id, raw_message, sender_user_id, sender_nickname, sender_card, sender_role, message_seq) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
post_type, message_type, message_time, group_id, message_id, raw_message, sender_user_id, sender_nickname, sender_card, sender_role) post_type, message_type, message_time, group_id, message_id, raw_message, sender_user_id, sender_nickname, sender_card, sender_role, message_seq)
fmt.Println("Data inserted successfully!") fmt.Println("Data inserted successfully!")
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
@ -88,12 +90,13 @@ func handlePost(w http.ResponseWriter, r *http.Request) {
message_type TEXT, message_type TEXT,
time DATETIME, time DATETIME,
group_id INTEGER, group_id INTEGER,
message_id INTEGER, message_id INTEGER UNIQUE NOT NULL,
raw_message TEXT, raw_message TEXT,
sender_user_id INTEGER, sender_user_id INTEGER,
sender_nickname TEXT, sender_nickname TEXT,
sender_card TEXT, sender_card TEXT,
sender_role TEXT sender_role TEXT,
message_seq INTEGER
)`) )`)
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)

105
tools/update_message_seq.go Normal file
View file

@ -0,0 +1,105 @@
package main
import (
"database/sql"
"encoding/json"
"fmt"
"io"
"log"
"net/http"
_ "github.com/mattn/go-sqlite3"
)
func main() {
// Open SQLite database
db, err := sql.Open("sqlite3", "./data.db")
if err != nil {
log.Fatal(err)
}
defer db.Close()
// Create messages table if not exists
_, err = db.Exec(`
CREATE TABLE IF NOT EXISTS messages (
id INTEGER PRIMARY KEY AUTOINCREMENT,
message_id INTEGER UNIQUE NOT NULL,
message_seq INTEGER
)
`)
if err != nil {
log.Fatal(err)
}
// Fetch messageIDs from database
rows, err := db.Query("SELECT message_id FROM messages")
if err != nil {
log.Fatal(err)
}
defer rows.Close()
for rows.Next() {
var messageID int
err := rows.Scan(&messageID)
if err != nil {
log.Fatal(err)
}
// 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)
}
}
func fetchMessageSeq(messageID int) (int, error) {
url := fmt.Sprintf("http://47.92.132.159:5700/get_msg?message_id=%d", messageID)
resp, err := http.Get(url)
if err != nil {
return 0, err
}
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil {
return 0, err
}
var messageResp map[string]interface{}
err = json.Unmarshal(body, &messageResp)
if err != nil {
return 0, err
}
return messageResp["message_seq"].(int), nil
}
func insertOrUpdateMessageSeq(db *sql.DB, messageID, messageSeq int) error {
// Try to insert messageSeq
// _, err := db.Exec("INSERT INTO messages (message_id, message_seq) VALUES (?, ?)", messageID, messageSeq)
// if err != nil {
// If messageID already exists, update messageSeq
_, err := db.Exec("UPDATE messages SET message_seq = ? WHERE message_id = ?", messageSeq, messageID)
if err != nil {
return err
// }
}
return nil
}