diff --git a/models/setup.go b/models/setup.go index 8094e68..38d70ba 100644 --- a/models/setup.go +++ b/models/setup.go @@ -304,7 +304,25 @@ func CreateTables() { // Remove RoleId column from secrets table secretsRoleIdCheck, _ := CheckColumnExists("secrets", "RoleId") if secretsRoleIdCheck { - _, err := db.Exec("ALTER TABLE secrets DROP COLUMN RoleId;") + _, err := db.Exec(` + PRAGMA foreign_keys=off; + BEGIN TRANSACTION; + ALTER TABLE secrets RENAME TO _secrets_old; + CREATE TABLE secrets + ( + SecretId INTEGER PRIMARY KEY ASC, + SafeId INTEGER, + DeviceName VARCHAR, + DeviceCategory VARCHAR, + UserName VARCHAR, + Secret VARCHAR, + FOREIGN KEY (SafeId) REFERENCES safes(SafeId) + ); + INSERT INTO secrets SELECT * FROM _secrets_old; + COMMIT; + PRAGMA foreign_keys=on; + DROP TABLE _secrets_old; + `) if err != nil { log.Printf("Error altering secrets table to renmove RoleId column : '%s'\n", err) os.Exit(1)