mirror of
https://github.com/sqlitebrowser/sqlitebrowser.git
synced 2026-01-20 11:00:44 -06:00
Keep field information in sqlb::Table object rather than DBBrowserObject
Keep all the table and field information in a sqlb::Table object (which itself is stored in DBBrowserObject) rather than storing field information in DBBrowserObject and sqlb::Table objects at the same time.
This commit is contained in:
@@ -169,12 +169,12 @@ void DbStructureModel::reloadData(DBBrowserDB* db)
|
||||
// If it is a table or view add the field Nodes
|
||||
if((*it).gettype() == "table" || (*it).gettype() == "view")
|
||||
{
|
||||
for(int i=0; i < it->fldmap.size(); ++i)
|
||||
for(int i=0; i < (*it).table.fields().size(); ++i)
|
||||
{
|
||||
QTreeWidgetItem *fldItem = new QTreeWidgetItem(tableItem);
|
||||
fldItem->setText(0, (*it).fldmap.at(i)->name());
|
||||
fldItem->setText(0, (*it).table.fields().at(i)->name());
|
||||
fldItem->setText(1, "field");
|
||||
fldItem->setText(2, (*it).fldmap.at(i)->type());
|
||||
fldItem->setText(2, (*it).table.fields().at(i)->type());
|
||||
fldItem->setIcon(0, QIcon(":/icons/field"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -91,7 +91,7 @@ void ImportCsvDialog::accept()
|
||||
{
|
||||
if(i.value().gettype() == "table" && i.value().getname() == ui->editName->text())
|
||||
{
|
||||
if(i.value().fldmap.size() != numfields)
|
||||
if(i.value().table.fields().size() != numfields)
|
||||
{
|
||||
QMessageBox::warning(this, QApplication::applicationName(),
|
||||
tr("There is already a table of that name and an import into an existing table is only possible if the number of columns match."));
|
||||
|
||||
@@ -268,13 +268,13 @@ void MainWindow::populateStructure()
|
||||
if((*it).gettype() == "table" || (*it).gettype() == "view")
|
||||
{
|
||||
QStandardItemModel* tablefieldmodel = new QStandardItemModel();
|
||||
tablefieldmodel->setRowCount((*it).fldmap.count());
|
||||
tablefieldmodel->setRowCount((*it).table.fields().count());
|
||||
tablefieldmodel->setColumnCount(1);
|
||||
|
||||
int fldrow = 0;
|
||||
for(int i=0; i < (*it).fldmap.size(); ++i, ++fldrow)
|
||||
for(int i=0; i < (*it).table.fields().size(); ++i, ++fldrow)
|
||||
{
|
||||
QString fieldname = (*it).fldmap.at(i)->name();
|
||||
QString fieldname = (*it).table.fields().at(i)->name();
|
||||
QStandardItem* fldItem = new QStandardItem(fieldname);
|
||||
fldItem->setIcon(QIcon(":/icons/field"));
|
||||
tablefieldmodel->setItem(fldrow, 0, fldItem);
|
||||
|
||||
@@ -750,8 +750,8 @@ QStringList DBBrowserDB::getTableFields(const QString & tablename) const
|
||||
{
|
||||
if((*it).getname() == tablename)
|
||||
{
|
||||
for(int i=0;i<(*it).fldmap.size();i++)
|
||||
res.append((*it).fldmap.at(i)->name());
|
||||
for(int i=0;i<(*it).table.fields().size();i++)
|
||||
res.append((*it).table.fields().at(i)->name());
|
||||
}
|
||||
}
|
||||
return res;
|
||||
@@ -834,8 +834,7 @@ void DBBrowserDB::updateSchema( )
|
||||
// pragma SQLite offers.
|
||||
if((*it).gettype() == "table")
|
||||
{
|
||||
sqlb::Table t((*it).getname());
|
||||
(*it).fldmap = t.parseSQL((*it).getsql()).first.fields();
|
||||
(*it).table = sqlb::Table::parseSQL((*it).getsql()).first;
|
||||
} else if((*it).gettype() == "view") {
|
||||
statement = QString("PRAGMA TABLE_INFO(`%1`);").arg((*it).getname());
|
||||
logSQL(statement, kLogMsg_App);
|
||||
@@ -849,7 +848,7 @@ void DBBrowserDB::updateSchema( )
|
||||
QString val_type = QString::fromUtf8((const char *)sqlite3_column_text(vm, 2));
|
||||
|
||||
sqlb::FieldPtr f(new sqlb::Field(val_name, val_type));
|
||||
(*it).addField(f);
|
||||
(*it).table.addField(f);
|
||||
}
|
||||
}
|
||||
sqlite3_finalize(vm);
|
||||
|
||||
@@ -20,25 +20,24 @@ typedef QMultiMap<QString, class DBBrowserObject> objectMap;
|
||||
class DBBrowserObject
|
||||
{
|
||||
public:
|
||||
DBBrowserObject() : name( "" ) { }
|
||||
DBBrowserObject() : table(""), name( "" ) { }
|
||||
DBBrowserObject( const QString& wname,const QString& wsql, const QString& wtype, const QString& tbl_name )
|
||||
: name( wname), sql( wsql ), type(wtype), table_name(tbl_name)
|
||||
: table(wname), name( wname), sql( wsql ), type(wtype), table_name(tbl_name)
|
||||
{ }
|
||||
|
||||
void addField(sqlb::FieldPtr field) { fldmap.push_back(field); }
|
||||
|
||||
QString getname() const { return name; }
|
||||
QString getsql() const { return sql; }
|
||||
QString gettype() const { return type; }
|
||||
QString getTableName() const { return table_name; }
|
||||
sqlb::FieldPtr getField(const QString& name) const
|
||||
sqlb::FieldPtr getField(const QString& name)
|
||||
{
|
||||
for(int i=0;i<fldmap.size();i++)
|
||||
if(fldmap.at(i)->name() == name)
|
||||
return fldmap.at(i);
|
||||
return sqlb::FieldPtr();
|
||||
int id = table.findField(name);
|
||||
if(id == -1)
|
||||
return sqlb::FieldPtr();
|
||||
else
|
||||
return table.fields().at(id);
|
||||
}
|
||||
sqlb::FieldVector fldmap;
|
||||
sqlb::Table table;
|
||||
private:
|
||||
QString name;
|
||||
QString sql;
|
||||
|
||||
Reference in New Issue
Block a user