diff --git a/data/actionsmap/yunohost.yml b/data/actionsmap/yunohost.yml index 774ce33fe..c65497f4c 100644 --- a/data/actionsmap/yunohost.yml +++ b/data/actionsmap/yunohost.yml @@ -495,6 +495,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 421e017d3..8906c0c69 100644 --- a/lib/yunohost/app.py +++ b/lib/yunohost/app.py @@ -863,6 +863,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 64cfd7b4e..d59bdd483 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...",