From 0b21a3d42cfcda7be187f59236cd5456d462f8fa Mon Sep 17 00:00:00 2001 From: Zachary Wasserman Date: Tue, 20 Nov 2018 17:41:55 -0800 Subject: [PATCH] Delete soft-deleted entities (#1959) Avoids potential bugs in which soft-deleted entities are returned from database queries (soft-deletion is now deprecated), but some records may still exist. Fixes #1956 --- ...0181119180000_DeleteSoftDeletedEntities.go | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 server/datastore/mysql/migrations/data/20181119180000_DeleteSoftDeletedEntities.go diff --git a/server/datastore/mysql/migrations/data/20181119180000_DeleteSoftDeletedEntities.go b/server/datastore/mysql/migrations/data/20181119180000_DeleteSoftDeletedEntities.go new file mode 100644 index 0000000000..68c60c7697 --- /dev/null +++ b/server/datastore/mysql/migrations/data/20181119180000_DeleteSoftDeletedEntities.go @@ -0,0 +1,54 @@ +package data + +import ( + "database/sql" + + "github.com/pkg/errors" +) + +func init() { + MigrationClient.AddMigration(Up20181119180000, Down20181119180000) +} + +func Up20181119180000(tx *sql.Tx) error { + sql := `DELETE FROM scheduled_queries WHERE deleted = 1` + if _, err := tx.Exec(sql); err != nil { + return errors.Wrap(err, "delete scheduled queries") + } + + sql = `DELETE FROM queries WHERE deleted = 1` + if _, err := tx.Exec(sql); err != nil { + return errors.Wrap(err, "delete queries") + } + + sql = `DELETE FROM labels WHERE deleted = 1` + if _, err := tx.Exec(sql); err != nil { + return errors.Wrap(err, "delete labels") + } + + sql = `DELETE FROM distributed_query_campaigns WHERE deleted = 1` + if _, err := tx.Exec(sql); err != nil { + return errors.Wrap(err, "delete campaigns") + } + + sql = `DELETE FROM hosts WHERE deleted = 1` + if _, err := tx.Exec(sql); err != nil { + return errors.Wrap(err, "delete hosts") + } + + sql = `DELETE FROM invites WHERE deleted = 1` + if _, err := tx.Exec(sql); err != nil { + return errors.Wrap(err, "delete invites") + } + + sql = `DELETE FROM users WHERE deleted = 1` + if _, err := tx.Exec(sql); err != nil { + return errors.Wrap(err, "delete users") + } + + return nil +} + +func Down20181119180000(tx *sql.Tx) error { + return nil +}