diff --git a/data/actionsmap/yunohost.yml b/data/actionsmap/yunohost.yml index 9dfb4a499..bb0339c69 100644 --- a/data/actionsmap/yunohost.yml +++ b/data/actionsmap/yunohost.yml @@ -505,6 +505,21 @@ app: full: --sql help: Initial SQL file + ### app_dropdb() + dropdb: + action_help: Drop database + # api: POST /tools/dropdb + arguments: + db: + help: Name of the database + -k: + full: --keep-user + help: Do not drop corresponding user + action: store_true + -u: + full: --user + help: DB user name (db unless set) + ### app_makedefault() makedefault: action_help: Redirect domain root to an app diff --git a/lib/yunohost/app.py b/lib/yunohost/app.py index 688f8a4f7..3e65de68d 100644 --- a/lib/yunohost/app.py +++ b/lib/yunohost/app.py @@ -917,6 +917,29 @@ def app_initdb(user, password=None, db=None, sql=None): msignals.display(m18n.n('mysql_db_initialized'), 'success') +def app_dropdb(db, keep_user=False, user=None): + """ + Drop database + + Keyword argument: + db -- DB name + + """ + mysql_root_pwd = open('/etc/yunohost/mysql').read().rstrip() + mysql_command = 'mysql -u root -p%s -e "DROP DATABASE %s ;"' % (mysql_root_pwd, db) + if os.system(mysql_command) != 0: + raise MoulinetteError(errno.EIO, m18n.n('mysql_db_drop_failed')) + if not keep_user: + if user is None: + user=db + mysql_command = 'mysql -u root -p%s -e "DROP USER \'%s\'@localhost ;"' % (mysql_root_pwd, user) + if os.system(mysql_command) != 0: + raise MoulinetteError(errno.EIO, m18n.n('mysql_dbuser_drop_failed')) + msignals.display(m18n.n('mysql_dbuser_dropped'), 'success') + + msignals.display(m18n.n('mysql_db_dropped'), 'success') + + def app_ssowatconf(auth): """ Regenerate SSOwat configuration file diff --git a/locales/en.json b/locales/en.json index 6838c7ddb..66e12c1b1 100644 --- a/locales/en.json +++ b/locales/en.json @@ -35,6 +35,10 @@ "mysql_db_creation_failed" : "MySQL database creation failed", "mysql_db_init_failed" : "MySQL database init failed", "mysql_db_initialized" : "MySQL database successfully initialized", + "mysql_db_drop_failed" : "MySQL drop database failed", + "mysql_db_dropped" : "MySQL drop database successfully", + "mysql_dbuser_drop_failed" : "MySQL drop user failed", + "mysql_dbuser_dropped" : "MySQL drop user successfully", "extracting" : "Extracting...", "downloading" : "Downloading...", "executing_script": "Executing script...",