feat: allow enabling all plugins into a channel
This commit is contained in:
parent
899ac49336
commit
3b09a9dd47
10 changed files with 915 additions and 17 deletions
|
@ -10,6 +10,7 @@ func init() {
|
|||
Register(1, "Initial schema with bcrypt passwords", migrateInitialSchemaUp, migrateInitialSchemaDown)
|
||||
Register(2, "Add reminders table", migrateRemindersUp, migrateRemindersDown)
|
||||
Register(3, "Add cache table", migrateCacheUp, migrateCacheDown)
|
||||
Register(4, "Add enable_all_plugins column to channels", migrateEnableAllPluginsUp, migrateEnableAllPluginsDown)
|
||||
}
|
||||
|
||||
// Initial schema creation with bcrypt passwords - version 1
|
||||
|
@ -154,3 +155,60 @@ func migrateCacheDown(db *sql.DB) error {
|
|||
_, err := db.Exec(`DROP TABLE IF EXISTS cache`)
|
||||
return err
|
||||
}
|
||||
|
||||
// Add enable_all_plugins column to channels table - version 4
|
||||
func migrateEnableAllPluginsUp(db *sql.DB) error {
|
||||
_, err := db.Exec(`
|
||||
ALTER TABLE channels ADD COLUMN enable_all_plugins BOOLEAN NOT NULL DEFAULT 0
|
||||
`)
|
||||
return err
|
||||
}
|
||||
|
||||
func migrateEnableAllPluginsDown(db *sql.DB) error {
|
||||
// SQLite doesn't support DROP COLUMN, so we need to recreate the table
|
||||
tx, err := db.Begin()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer func() {
|
||||
_ = tx.Rollback() // Ignore rollback errors
|
||||
}()
|
||||
|
||||
// Create backup table
|
||||
_, err = tx.Exec(`
|
||||
CREATE TABLE channels_backup (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
platform TEXT NOT NULL,
|
||||
platform_channel_id TEXT NOT NULL,
|
||||
enabled BOOLEAN NOT NULL DEFAULT 0,
|
||||
channel_raw TEXT NOT NULL,
|
||||
UNIQUE(platform, platform_channel_id)
|
||||
)
|
||||
`)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Copy data excluding enable_all_plugins column
|
||||
_, err = tx.Exec(`
|
||||
INSERT INTO channels_backup (id, platform, platform_channel_id, enabled, channel_raw)
|
||||
SELECT id, platform, platform_channel_id, enabled, channel_raw FROM channels
|
||||
`)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Drop original table
|
||||
_, err = tx.Exec(`DROP TABLE channels`)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Rename backup table
|
||||
_, err = tx.Exec(`ALTER TABLE channels_backup RENAME TO channels`)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return tx.Commit()
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue