mirror of
https://github.com/woodchen-ink/Q58Bot.git
synced 2025-07-19 14:22:05 +08:00
修复
This commit is contained in:
parent
190155ff5b
commit
bb6447e975
@ -3,6 +3,7 @@ package core
|
|||||||
//数据库处理
|
//数据库处理
|
||||||
import (
|
import (
|
||||||
"database/sql"
|
"database/sql"
|
||||||
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
@ -377,13 +378,46 @@ func (d *Database) MigrateExistingKeywords() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if oldTableName == "keywords" {
|
if oldTableName == "keywords" {
|
||||||
|
// 获取旧表的列信息
|
||||||
|
rows, err := d.db.Query("PRAGMA table_info(keywords)")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer rows.Close()
|
||||||
|
|
||||||
|
var columns []string
|
||||||
|
for rows.Next() {
|
||||||
|
var cid int
|
||||||
|
var name, type_ string
|
||||||
|
var notnull, pk int
|
||||||
|
var dflt_value interface{}
|
||||||
|
err = rows.Scan(&cid, &name, &type_, ¬null, &dflt_value, &pk)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
columns = append(columns, name)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 构建插入语句
|
||||||
|
insertColumns := []string{"keyword"}
|
||||||
|
selectColumns := []string{"keyword"}
|
||||||
|
for _, col := range []string{"is_link", "is_auto_added", "added_at"} {
|
||||||
|
if contains(columns, col) {
|
||||||
|
insertColumns = append(insertColumns, col)
|
||||||
|
selectColumns = append(selectColumns, col)
|
||||||
|
} else {
|
||||||
|
selectColumns = append(selectColumns, "FALSE")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 迁移数据
|
// 迁移数据
|
||||||
_, err = d.db.Exec(`INSERT OR IGNORE INTO keywords_new (keyword, is_link, is_auto_added, added_at)
|
query := fmt.Sprintf(`INSERT OR IGNORE INTO keywords_new (%s)
|
||||||
SELECT keyword,
|
SELECT %s
|
||||||
COALESCE(is_link, FALSE),
|
FROM keywords`,
|
||||||
COALESCE(is_auto_added, FALSE),
|
strings.Join(insertColumns, ", "),
|
||||||
COALESCE(added_at, CURRENT_TIMESTAMP)
|
strings.Join(selectColumns, ", "))
|
||||||
FROM keywords`)
|
|
||||||
|
_, err = d.db.Exec(query)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -409,3 +443,13 @@ func (d *Database) MigrateExistingKeywords() error {
|
|||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 辅助函数:检查切片中是否包含特定字符串
|
||||||
|
func contains(slice []string, str string) bool {
|
||||||
|
for _, v := range slice {
|
||||||
|
if v == str {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user