Software /
code /
prosody
Diff
plugins/mod_storage_sql2.lua @ 6756:2e75b94e3a1e
mod_storage_sql2: Add prosodyctl command to upgrade tables from the command-line
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Tue, 07 Jul 2015 17:41:09 +0100 |
parent | 6755:b80202ad47e8 |
child | 6757:fc9c1a566a19 |
line wrap: on
line diff
--- a/plugins/mod_storage_sql2.lua Tue Jul 07 17:40:23 2015 +0100 +++ b/plugins/mod_storage_sql2.lua Tue Jul 07 17:41:09 2015 +0100 @@ -405,3 +405,36 @@ module:provides("storage", driver); end + +function module.command(arg) + local config = require "core.configmanager"; + local prosodyctl = require "util.prosodyctl"; + local command = table.remove(arg, 1); + if command == "upgrade" then + -- We need to find every unique dburi in the config + local uris = {}; + for host in pairs(prosody.hosts) do + local params = config.get(host, "sql") or default_params; + uris[sql.db2uri(params)] = params; + end + print("We will check and upgrade the following databases:\n"); + for _, params in pairs(uris) do + print("", "["..params.driver.."] "..params.database..(params.host and " on "..params.host or "")); + end + print(""); + print("Ensure you have working backups of the above databases before continuing! "); + if not prosodyctl.show_yesno("Continue with the database upgrade? [yN]") then + print("Ok, no upgrade. But you do have backups, don't you? ...don't you?? :-)"); + return; + end + -- Upgrade each one + for _, params in pairs(uris) do + print("Checking "..params.database.."..."); + engine = sql:create_engine(params); + upgrade_table(params, true); + end + print("All done!"); + else + print("Unknown command: "..command); + end +end