fix foreign key

This commit is contained in:
Zhang Minghan 2023-08-13 08:15:02 +08:00
parent 9c6244bb19
commit f07d22bdbb
7 changed files with 31 additions and 16 deletions

View File

@ -62,7 +62,7 @@ func ChatAPI(c *gin.Context) {
}
db := c.MustGet("db").(*sql.DB)
instance := conversation.NewConversation(db, user.ID)
instance := conversation.NewConversation(db, user.GetID(db))
for {
_, message, err = conn.ReadMessage()

View File

@ -19,9 +19,9 @@ func ChatWithWeb(message []types.ChatGPTMessage, long bool) (string, []types.Cha
data := web.SearchBing(keyword)
if long {
data = data[:6000]
data = utils.GetSegmentString(data, 6000)
} else {
data = data[:3000]
data = utils.GetSegmentString(data, 3000)
}
return keyword, utils.Insert(message, 0, types.ChatGPTMessage{
Role: "system",

View File

@ -41,7 +41,7 @@ function toggle(n: boolean) {
<span>GPT-4</span>
</div>
</div>
<a class="donate-container" target="_blank" href="https://zmh-program.site/donate">
<a class="donate-container" target="_blank" href="https://zmh-program.site/donate" v-if="!auth">
<heart />
捐助我们
</a>

View File

@ -57,6 +57,16 @@ func (u *User) GenerateToken() string {
return token
}
func (u *User) GetID(db *sql.DB) int64 {
if u.ID > 0 {
return u.ID
}
if err := db.QueryRow("SELECT id FROM auth WHERE username = ?", u.Username).Scan(&u.ID); err != nil {
return 0
}
return u.ID
}
func IsUserExist(db *sql.DB, username string) bool {
var count int
if err := db.QueryRow("SELECT COUNT(*) FROM auth WHERE username = ?", username).Scan(&count); err != nil {

View File

@ -98,7 +98,7 @@ func CreateConversationTable(db *sql.DB) {
CREATE TABLE IF NOT EXISTS conversation (
id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT,
conversation_id INT,
conversation_id INT UNIQUE,
conversation_name VARCHAR(255),
data TEXT,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,

View File

@ -8,17 +8,8 @@ import (
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 = VALUES(conversation_name),
data = VALUES(data)
`, c.GetUserID(), c.GetId(), c.GetName(), data)
_, 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)
if err != nil {
return false
}

View File

@ -65,6 +65,20 @@ func UnmarshalJson[T any](value string) T {
}
}
func GetSegment[T any](arr []T, length int) []T {
if length > len(arr) {
return arr
}
return arr[:length]
}
func GetSegmentString(arr string, length int) string {
if length > len(arr) {
return ""
}
return arr[:length]
}
func GetLatestSegment[T any](arr []T, length int) []T {
if length > len(arr) {
return arr