Software / code / prosody
Comparison
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 |
comparison
equal
deleted
inserted
replaced
| 6755:b80202ad47e8 | 6756:2e75b94e3a1e |
|---|---|
| 403 end | 403 end |
| 404 end); | 404 end); |
| 405 | 405 |
| 406 module:provides("storage", driver); | 406 module:provides("storage", driver); |
| 407 end | 407 end |
| 408 | |
| 409 function module.command(arg) | |
| 410 local config = require "core.configmanager"; | |
| 411 local prosodyctl = require "util.prosodyctl"; | |
| 412 local command = table.remove(arg, 1); | |
| 413 if command == "upgrade" then | |
| 414 -- We need to find every unique dburi in the config | |
| 415 local uris = {}; | |
| 416 for host in pairs(prosody.hosts) do | |
| 417 local params = config.get(host, "sql") or default_params; | |
| 418 uris[sql.db2uri(params)] = params; | |
| 419 end | |
| 420 print("We will check and upgrade the following databases:\n"); | |
| 421 for _, params in pairs(uris) do | |
| 422 print("", "["..params.driver.."] "..params.database..(params.host and " on "..params.host or "")); | |
| 423 end | |
| 424 print(""); | |
| 425 print("Ensure you have working backups of the above databases before continuing! "); | |
| 426 if not prosodyctl.show_yesno("Continue with the database upgrade? [yN]") then | |
| 427 print("Ok, no upgrade. But you do have backups, don't you? ...don't you?? :-)"); | |
| 428 return; | |
| 429 end | |
| 430 -- Upgrade each one | |
| 431 for _, params in pairs(uris) do | |
| 432 print("Checking "..params.database.."..."); | |
| 433 engine = sql:create_engine(params); | |
| 434 upgrade_table(params, true); | |
| 435 end | |
| 436 print("All done!"); | |
| 437 else | |
| 438 print("Unknown command: "..command); | |
| 439 end | |
| 440 end |