mirror of
https://github.com/woodchen-ink/Q58Bot.git
synced 2025-07-18 13:52:07 +08:00
修复
This commit is contained in:
parent
20594715d2
commit
8661f5c774
@ -43,15 +43,15 @@ func NewDatabase() (*Database, error) {
|
|||||||
|
|
||||||
func (d *Database) createTables() error {
|
func (d *Database) createTables() error {
|
||||||
queries := []string{
|
queries := []string{
|
||||||
`CREATE TABLE IF NOT EXISTS keywords (
|
`CREATE TABLE IF NOT EXISTS keywords_new (
|
||||||
id INTEGER PRIMARY KEY,
|
id INTEGER PRIMARY KEY,
|
||||||
keyword TEXT UNIQUE,
|
keyword TEXT UNIQUE,
|
||||||
is_link BOOLEAN DEFAULT FALSE,
|
is_link BOOLEAN DEFAULT FALSE,
|
||||||
is_auto_added BOOLEAN DEFAULT FALSE,
|
is_auto_added BOOLEAN DEFAULT FALSE,
|
||||||
added_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
added_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||||
)`,
|
)`,
|
||||||
`CREATE INDEX IF NOT EXISTS idx_keyword ON keywords(keyword)`,
|
`CREATE INDEX IF NOT EXISTS idx_keyword ON keywords_new(keyword)`,
|
||||||
`CREATE INDEX IF NOT EXISTS idx_added_at ON keywords(added_at)`,
|
`CREATE INDEX IF NOT EXISTS idx_added_at ON keywords_new(added_at)`,
|
||||||
`CREATE TABLE IF NOT EXISTS whitelist (
|
`CREATE TABLE IF NOT EXISTS whitelist (
|
||||||
id INTEGER PRIMARY KEY,
|
id INTEGER PRIMARY KEY,
|
||||||
domain TEXT UNIQUE
|
domain TEXT UNIQUE
|
||||||
@ -370,55 +370,36 @@ func (d *Database) MigrateExistingKeywords() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 检查旧表是否存在
|
// 检查旧表是否存在
|
||||||
var tableExists bool
|
var oldTableExists bool
|
||||||
err = d.db.QueryRow("SELECT name FROM sqlite_master WHERE type='table' AND name='keywords'").Scan(&tableExists)
|
err = d.db.QueryRow("SELECT name FROM sqlite_master WHERE type='table' AND name='keywords'").Scan(&oldTableExists)
|
||||||
if err != nil && err != sql.ErrNoRows {
|
if err != nil && err != sql.ErrNoRows {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if tableExists {
|
if oldTableExists {
|
||||||
// 检查 added_at 列是否存在
|
// 迁移数据
|
||||||
var columnExists bool
|
_, err = d.db.Exec(`INSERT OR IGNORE INTO keywords_new (keyword, is_link, is_auto_added, added_at)
|
||||||
err = d.db.QueryRow("SELECT 1 FROM pragma_table_info('keywords') WHERE name='added_at'").Scan(&columnExists)
|
SELECT keyword,
|
||||||
if err != nil && err != sql.ErrNoRows {
|
COALESCE(is_link, FALSE),
|
||||||
|
COALESCE(is_auto_added, FALSE),
|
||||||
|
COALESCE(added_at, CURRENT_TIMESTAMP)
|
||||||
|
FROM keywords`)
|
||||||
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if !columnExists {
|
// 删除旧表
|
||||||
// 如果 added_at 列不存在,添加它
|
_, err = d.db.Exec("DROP TABLE keywords")
|
||||||
_, err = d.db.Exec("ALTER TABLE keywords ADD COLUMN added_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 检查 is_link 和 is_auto_added 列是否存在
|
// 重命名新表
|
||||||
err = d.db.QueryRow("SELECT 1 FROM pragma_table_info('keywords') WHERE name='is_link'").Scan(&columnExists)
|
_, err = d.db.Exec("ALTER TABLE keywords_new RENAME TO keywords")
|
||||||
if err != nil && err != sql.ErrNoRows {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
if !columnExists {
|
|
||||||
// 如果 is_link 列不存在,添加它
|
|
||||||
_, err = d.db.Exec("ALTER TABLE keywords ADD COLUMN is_link BOOLEAN DEFAULT FALSE")
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
err = d.db.QueryRow("SELECT 1 FROM pragma_table_info('keywords') WHERE name='is_auto_added'").Scan(&columnExists)
|
|
||||||
if err != nil && err != sql.ErrNoRows {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
if !columnExists {
|
|
||||||
// 如果 is_auto_added 列不存在,添加它
|
|
||||||
_, err = d.db.Exec("ALTER TABLE keywords ADD COLUMN is_auto_added BOOLEAN DEFAULT FALSE")
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 更新配置,标记迁移已完成
|
// 更新配置,标记迁移已完成
|
||||||
_, err = d.db.Exec("INSERT OR REPLACE INTO config (key, value) VALUES ('keywords_migrated', 'true')")
|
_, err = d.db.Exec("INSERT OR REPLACE INTO config (key, value) VALUES ('keywords_migrated', 'true')")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user