Show SQL for database

Also improvements to the SQL for tables and views.
This commit is contained in:
eelke 2022-01-20 20:13:56 +01:00
parent b5a706a2a2
commit 3158a4364b
12 changed files with 172 additions and 58 deletions

View file

@ -1,8 +1,11 @@
#include "DatabasesPage.h"
#include "DatabasesTableModel.h"
#include "SqlCodePreview.h"
#include "SqlFormattingUtils.h"
#include "catalog/PgDatabaseCatalog.h"
#include "PgLabTableView.h"
#include <QStringBuilder>
DatabasesPage::DatabasesPage(std::shared_ptr<OpenDatabase> opendatabase, QWidget * parent)
@ -12,10 +15,18 @@ DatabasesPage::DatabasesPage(std::shared_ptr<OpenDatabase> opendatabase, QWidget
auto tv = m_databasesTableView.tableView();
tv->setSelectionMode(QAbstractItemView::SingleSelection);
m_detailsTabs = new QTabWidget(this);
// m_detailsTabs = new QTabWidget(this);
addWidget(tv);
addWidget(m_detailsTabs);
// addWidget(m_detailsTabs);
m_tableSql = new SqlCodePreview(this);
// m_detailsTabs->addTab(m_tableSql, "");
addWidget(m_tableSql);
connect(m_databasesTableView.tableView()->selectionModel(), &QItemSelectionModel::currentRowChanged,
this, &DatabasesPage::databaseSelectionChanged);
}
void DatabasesPage::setCatalog(std::shared_ptr<PgDatabaseCatalog> cat)
@ -25,6 +36,34 @@ void DatabasesPage::setCatalog(std::shared_ptr<PgDatabaseCatalog> cat)
m_databasesTableView.tableView()->resizeColumnsToContents();
}
void DatabasesPage::updateDatabaseDetails(const PgDatabase &db)
{
updateSqlTab(db);
}
void DatabasesPage::updateSqlTab(const PgDatabase &db)
{
QString drop_sql = db.dropSql();
QString create_sql = db.createSql();
create_sql += "\n\n-- set Privileges\n";
create_sql += db.grantSql() % "\n";
create_sql += "-- set comment\n";
create_sql += db.commentSql() % "\n";
m_tableSql->setPlainText(drop_sql % "\n\n" % create_sql);
}
void DatabasesPage::databaseSelectionChanged(const QModelIndex &current, const QModelIndex &previous)
{
if (current.row() == previous.row())
return;
auto db = m_databasesTableView.rowItemForProxyIndex(current);
updateDatabaseDetails(db);
}

View file

@ -6,9 +6,11 @@
#include "PgLabTableViewHelper.h"
#include "DatabasesTableModel.h"
class PgDatabase;
class PgDatabaseCatalog;
class PgLabTableView;
class QSortFilterProxyModel;
class SqlCodePreview;
class DatabasesPage: public QSplitter {
public:
@ -20,9 +22,16 @@ public:
private:
PgLabTableViewHelper<DatabasesTableModel> m_databasesTableView;
QTabWidget *m_detailsTabs = nullptr;
// QTabWidget *m_detailsTabs = nullptr;
SqlCodePreview *m_tableSql = nullptr;
std::shared_ptr<PgDatabaseCatalog> m_catalog;
void updateDatabaseDetails(const PgDatabase &db);
void updateSqlTab(const PgDatabase &db);
private slots:
void databaseSelectionChanged(const QModelIndex &current, const QModelIndex &previous);
};