before new parent check

This commit is contained in:
Hamed Masafi 2018-03-03 18:06:04 +03:30
parent 3bdf6f294d
commit f1e29ba0a4
7 changed files with 77 additions and 57 deletions

View File

@ -57,6 +57,10 @@ DatabaseModel::DatabaseModel(const QJsonObject &json) :
} }
} }
DatabaseModel::~DatabaseModel()
{
}
TableModel *DatabaseModel::tableByName(QString tableName) const TableModel *DatabaseModel::tableByName(QString tableName) const
{ {
for(int i = 0; i < size(); i++){ for(int i = 0; i < size(); i++){
@ -223,4 +227,10 @@ DatabaseModel *DatabaseModel::modelByName(const QString &name)
return Q_NULLPTR; return Q_NULLPTR;
} }
void DatabaseModel::deleteAllModels()
{
qDeleteAll(_models.values());
_models.clear();
}
NUT_END_NAMESPACE NUT_END_NAMESPACE

View File

@ -43,6 +43,7 @@ public:
DatabaseModel(const QString &name = QString::null); DatabaseModel(const QString &name = QString::null);
DatabaseModel(const DatabaseModel &other); DatabaseModel(const DatabaseModel &other);
DatabaseModel(const QJsonObject &json); DatabaseModel(const QJsonObject &json);
~DatabaseModel();
TableModel *tableByName(QString tableName) const; TableModel *tableByName(QString tableName) const;
TableModel *tableByClassName(QString className) const; TableModel *tableByClassName(QString className) const;
@ -69,6 +70,7 @@ public:
void fixRelations(); void fixRelations();
static DatabaseModel *modelByName(const QString &name); static DatabaseModel *modelByName(const QString &name);
static void deleteAllModels();
}; };
NUT_END_NAMESPACE NUT_END_NAMESPACE

View File

@ -33,7 +33,8 @@
#endif #endif
#define NUT_INFO(type, name, value) \ #define NUT_INFO(type, name, value) \
Q_CLASSINFO(__nut_NAME_PERFIX type #name #value, type "\n" #name "\n" #value) Q_CLASSINFO(__nut_NAME_PERFIX type #name #value, \
type "\n" #name "\n" #value)
// Database // Database
#define NUT_DB_VERSION(version) \ #define NUT_DB_VERSION(version) \
@ -48,7 +49,8 @@
public: \ public: \
static const type _##name; \ static const type _##name; \
type* name() const{ return m_##name; } \ type* name() const{ return m_##name; } \
NUT_WRAP_NAMESPACE(TableSet<type>) *name##Table() const { return m_##name##Table; } NUT_WRAP_NAMESPACE(TableSet<type>) *name##Table() const \
{ return m_##name##Table; }
//Table //Table
#define NUT_DECLARE_FIELD(type, name, read, write) \ #define NUT_DECLARE_FIELD(type, name, read, write) \
@ -57,7 +59,9 @@ public: \
type m_##name; \ type m_##name; \
public: \ public: \
static NUT_WRAP_NAMESPACE(FieldPhrase<type>) name ## Field(){ \ static NUT_WRAP_NAMESPACE(FieldPhrase<type>) name ## Field(){ \
static NUT_WRAP_NAMESPACE(FieldPhrase<type>) f = NUT_WRAP_NAMESPACE(FieldPhrase<type>)(staticMetaObject.className(), #name); \ static NUT_WRAP_NAMESPACE(FieldPhrase<type>) f = \
NUT_WRAP_NAMESPACE(FieldPhrase<type>) \
(staticMetaObject.className(), #name); \
return f; \ return f; \
} \ } \
type read() const{ \ type read() const{ \

View File

@ -157,11 +157,11 @@ AbstractFieldPhraseOperatorField(<=, PhraseData::LessEqual)
AbstractFieldPhraseOperatorField(> , PhraseData::Greater) AbstractFieldPhraseOperatorField(> , PhraseData::Greater)
AbstractFieldPhraseOperatorField(>=, PhraseData::GreaterEqual) AbstractFieldPhraseOperatorField(>=, PhraseData::GreaterEqual)
AbstractFieldPhrase &AbstractFieldPhrase::operator !() AbstractFieldPhrase AbstractFieldPhrase::operator !()
{ {
AbstractFieldPhrase *f = new AbstractFieldPhrase(new PhraseData(data)); AbstractFieldPhrase f(new PhraseData(data));
f->data->isNot = !data->isNot; f.data->isNot = !data->isNot;
return *f; return f;
} }
AssignmentPhrase AbstractFieldPhrase::operator =(const QVariant &other) AssignmentPhrase AbstractFieldPhrase::operator =(const QVariant &other)
@ -182,6 +182,7 @@ PhraseList::PhraseList() : isValid(false)
PhraseList::PhraseList(const PhraseList &other) : isValid(true) PhraseList::PhraseList(const PhraseList &other) : isValid(true)
{ {
data = qMove(other.data); data = qMove(other.data);
const_cast<PhraseList&>(other).data.clear();
} }
PhraseList::PhraseList(const AbstractFieldPhrase &other) : isValid(true) PhraseList::PhraseList(const AbstractFieldPhrase &other) : isValid(true)
@ -199,6 +200,8 @@ PhraseList::PhraseList(const AbstractFieldPhrase *left, const AbstractFieldPhras
PhraseList::PhraseList(PhraseList *left, PhraseList *right) : isValid(true) PhraseList::PhraseList(PhraseList *left, PhraseList *right) : isValid(true)
{ {
data = qMove(left->data + right->data); data = qMove(left->data + right->data);
left->data.clear();
right->data.clear();
} }
PhraseList::PhraseList(PhraseList *left, const AbstractFieldPhrase *right) PhraseList::PhraseList(PhraseList *left, const AbstractFieldPhrase *right)
@ -210,6 +213,7 @@ PhraseList::PhraseList(PhraseList *left, const AbstractFieldPhrase *right)
PhraseList::~PhraseList() PhraseList::~PhraseList()
{ {
qDeleteAll(data);
// data.clear(); // data.clear();
} }

View File

@ -253,7 +253,7 @@ public:
ConditionalPhrase operator <=(const AbstractFieldPhrase &other); ConditionalPhrase operator <=(const AbstractFieldPhrase &other);
ConditionalPhrase operator >=(const AbstractFieldPhrase &other); ConditionalPhrase operator >=(const AbstractFieldPhrase &other);
AbstractFieldPhrase &operator !(); AbstractFieldPhrase operator !();
AssignmentPhrase operator =(const QVariant &other); AssignmentPhrase operator =(const QVariant &other);
AssignmentPhrase operator <<(const QVariant &other); AssignmentPhrase operator <<(const QVariant &other);
}; };