summaryrefslogtreecommitdiffstats
path: root/SQLiteStudio3/sqlitestudiocli/commands/clicommanddblist.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'SQLiteStudio3/sqlitestudiocli/commands/clicommanddblist.cpp')
-rw-r--r--SQLiteStudio3/sqlitestudiocli/commands/clicommanddblist.cpp86
1 files changed, 86 insertions, 0 deletions
diff --git a/SQLiteStudio3/sqlitestudiocli/commands/clicommanddblist.cpp b/SQLiteStudio3/sqlitestudiocli/commands/clicommanddblist.cpp
new file mode 100644
index 0000000..cbc16b6
--- /dev/null
+++ b/SQLiteStudio3/sqlitestudiocli/commands/clicommanddblist.cpp
@@ -0,0 +1,86 @@
+#include "clicommanddblist.h"
+#include "cli.h"
+#include "services/dbmanager.h"
+#include "common/unused.h"
+#include "common/utils.h"
+#include <QList>
+
+void CliCommandDbList::execute()
+{
+ if (!cli->getCurrentDb())
+ {
+ println(tr("No current working database defined."));
+ return;
+ }
+
+ QString currentName = cli->getCurrentDb()->getName();
+
+ println(tr("Databases:"));
+ QList<Db*> dbList = DBLIST->getDbList();
+ QString path;
+ QString msg;
+
+ int maxNameLength = tr("Name", "CLI db name column").length();
+ int lgt = 0;
+ foreach (Db* db, dbList)
+ {
+ lgt = db->getName().length() + 1;
+ maxNameLength = qMax(maxNameLength, lgt);
+ }
+
+ int connStateLength = qMax(tr("Open", "CLI connection state column").length(), tr("Closed", "CLI connection state column").length());
+ connStateLength = qMax(connStateLength, tr("Connection", "CLI connection state column").length());
+
+ msg = pad(tr("Name", "CLI db name column"), maxNameLength, ' ');
+ msg += "|";
+ msg += pad(tr("Connection", "CLI connection state column"), connStateLength, ' ');
+ msg += "|";
+ msg += tr("Database file path");
+ println(msg);
+
+ msg = QString("-").repeated(maxNameLength);
+ msg += "+";
+ msg += QString("-").repeated(connStateLength);
+ msg += "+";
+ msg += QString("-").repeated(tr("Database file path").length() + 1);
+ println(msg);
+
+ QString name;
+ foreach (Db* db, dbList)
+ {
+ bool open = db->isOpen();
+ path = db->getPath();
+ name = db->getName();
+ if (name == currentName)
+ name.prepend("*");
+ else
+ name.prepend(" ");
+
+ msg = pad(name, maxNameLength, ' ');
+ msg += "|";
+ msg += pad((open ? tr("Open") : tr("Closed")), connStateLength, ' ');
+ msg += "|";
+ msg += path;
+ println(msg);
+ }
+}
+
+QString CliCommandDbList::shortHelp() const
+{
+ return tr("prints list of registered databases");
+}
+
+QString CliCommandDbList::fullHelp() const
+{
+ return tr(
+ "Prints list of databases registered in the SQLiteStudio. Each database on the list can be in open or closed state "
+ "and .dblist tells you that. The current working database (aka default database) is also marked on the list with '*' at the start of its name. "
+ "See help for %1 command to learn about the default database."
+ ).arg(cmdName("use"));
+}
+
+void CliCommandDbList::defineSyntax()
+{
+ syntax.setName("dblist");
+ syntax.addAlias("databases");
+}