fix multi-user unique fields

This commit is contained in:
Zhang Minghan 2023-08-14 14:57:18 +08:00
parent f2be2ba82a
commit dff51128d9
2 changed files with 17 additions and 4 deletions

View File

@ -98,10 +98,11 @@ func CreateConversationTable(db *sql.DB) {
CREATE TABLE IF NOT EXISTS conversation (
id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT,
conversation_id INT UNIQUE,
conversation_id INT,
conversation_name VARCHAR(255),
data TEXT,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
UNIQUE KEY (user_id, conversation_id)
);
`)
if err != nil {

View File

@ -4,18 +4,30 @@ import (
"chat/types"
"chat/utils"
"database/sql"
"log"
)
func (c *Conversation) SaveConversation(db *sql.DB) bool {
data := utils.ToJson(c.GetMessage())
_, err := db.Exec("INSERT INTO conversation (user_id, conversation_id, conversation_name, data) VALUES (?, ?, ?, ?) ON DUPLICATE KEY UPDATE conversation_name = ?, data = ?", c.UserID, c.Id, c.Name, data, c.Name, data)
query := "INSERT INTO conversation (user_id, conversation_id, conversation_name, data) VALUES (?, ?, ?, ?) ON DUPLICATE KEY UPDATE conversation_name = VALUES(conversation_name), data = VALUES(data)"
stmt, err := db.Prepare(query)
if err != nil {
return false
}
defer func(stmt *sql.Stmt) {
err := stmt.Close()
if err != nil {
log.Println(err)
}
}(stmt)
_, err = stmt.Exec(c.UserID, c.Id, c.Name, data)
if err != nil {
return false
}
return true
}
func GetConversationLengthByUserID(db *sql.DB, userId int64) int64 {
var length int64
err := db.QueryRow("SELECT COUNT(*) FROM conversation WHERE user_id = ?", userId).Scan(&length)