// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package commands import ( "errors" "fmt" "github.com/spf13/cobra" ) var ResetCmd = &cobra.Command{ Use: "reset", Short: "Reset the database to initial state", Long: "Completely erases the database causing the loss of all data. This will reset Mattermost to its initial state.", RunE: resetCmdF, } func init() { ResetCmd.Flags().Bool("confirm", false, "Confirm you really want to delete everything and a DB backup has been performed.") RootCmd.AddCommand(ResetCmd) } func resetCmdF(command *cobra.Command, args []string) error { a, err := InitDBCommandContextCobra(command) if err != nil { return err } defer a.Shutdown() confirmFlag, _ := command.Flags().GetBool("confirm") if !confirmFlag { var confirm string CommandPrettyPrintln("Have you performed a database backup? (YES/NO): ") fmt.Scanln(&confirm) if confirm != "YES" { return errors.New("ABORTED: You did not answer YES exactly, in all capitals.") } CommandPrettyPrintln("Are you sure you want to delete everything? All data will be permanently deleted? (YES/NO): ") fmt.Scanln(&confirm) if confirm != "YES" { return errors.New("ABORTED: You did not answer YES exactly, in all capitals.") } } a.Srv.Store.DropAllTables() CommandPrettyPrintln("Database successfully reset") return nil }