This commit is contained in:
wood chen 2024-09-28 15:37:48 +08:00
parent 8661f5c774
commit 190155ff5b

View File

@ -44,12 +44,12 @@ func NewDatabase() (*Database, error) {
func (d *Database) createTables() error { func (d *Database) createTables() error {
queries := []string{ queries := []string{
`CREATE TABLE IF NOT EXISTS keywords_new ( `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_new(keyword)`, `CREATE INDEX IF NOT EXISTS idx_keyword ON keywords_new(keyword)`,
`CREATE INDEX IF NOT EXISTS idx_added_at ON keywords_new(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 (
@ -359,24 +359,24 @@ func (d *Database) Close() error {
func (d *Database) MigrateExistingKeywords() error { func (d *Database) MigrateExistingKeywords() error {
// 检查是否已经执行过迁移 // 检查是否已经执行过迁移
var migrationDone bool var migrationDone string
err := d.db.QueryRow("SELECT value FROM config WHERE key = 'keywords_migrated'").Scan(&migrationDone) err := d.db.QueryRow("SELECT value FROM config WHERE key = 'keywords_migrated'").Scan(&migrationDone)
if err != nil && err != sql.ErrNoRows { if err != nil && err != sql.ErrNoRows {
return err return err
} }
if migrationDone { if migrationDone == "true" {
return nil // 迁移已经完成,无需再次执行 return nil // 迁移已经完成,无需再次执行
} }
// 检查旧表是否存在 // 检查旧表是否存在
var oldTableExists bool var oldTableName string
err = d.db.QueryRow("SELECT name FROM sqlite_master WHERE type='table' AND name='keywords'").Scan(&oldTableExists) err = d.db.QueryRow("SELECT name FROM sqlite_master WHERE type='table' AND name='keywords'").Scan(&oldTableName)
if err != nil && err != sql.ErrNoRows { if err != nil && err != sql.ErrNoRows {
return err return err
} }
if oldTableExists { if oldTableName == "keywords" {
// 迁移数据 // 迁移数据
_, err = d.db.Exec(`INSERT OR IGNORE INTO keywords_new (keyword, is_link, is_auto_added, added_at) _, err = d.db.Exec(`INSERT OR IGNORE INTO keywords_new (keyword, is_link, is_auto_added, added_at)
SELECT keyword, SELECT keyword,