removed include from table headers

This commit is contained in:
Hamed Masafi 2018-01-09 01:14:01 +03:30
parent 2e9aac5204
commit 10a3049615
12 changed files with 87 additions and 21 deletions

View File

@ -81,23 +81,27 @@ public: \
private: \
NUT_WRAP_NAMESPACE(TableSet)<type> *m_##n; \
public: \
static type *n##Table(){ \
static type *f = new type(); \
return f; \
} \
NUT_WRAP_NAMESPACE(TableSet)<type> *n(){ \
return m_##n; \
}
static type *n##Table(); \
NUT_WRAP_NAMESPACE(TableSet)<type> *n();
#define NUT_IMPLEMENT_CHILD_TABLE(class, type, n) \
type *class::n##Table(){ \
static type *f = new type(); \
return f; \
} \
NUT_WRAP_NAMESPACE(TableSet)<type> *class::n(){ \
return m_##n; \
}
#define NUT_INDEX(name, field, order)
#define NUT_PRIMARY_KEY(x) Q_CLASSINFO(QT_STRINGIFY(__nut_NAME_PERFIX #x " " __nut_PRIMARY_KEY), #x)
#define NUT_AUTO_INCREMENT(x) Q_CLASSINFO(QT_STRINGIFY(__nut_NAME_PERFIX #x " " __nut_AUTO_INCREMENT), #x)
#define NUT_PRIMARY_AUTO_INCREMENT(x) NUT_PRIMARY_KEY(x) \
NUT_AUTO_INCREMENT(x)
#define NUT_PRIMARY_AUTO_INCREMENT(x) NUT_PRIMARY_KEY(x) \
NUT_AUTO_INCREMENT(x)
#define NUT_UNIQUE(x) Q_CLASSINFO(QT_STRINGIFY(__nut_NAME_PERFIX #x " " __nut_UNIQUE), #x)
#define NUT_LEN(field, len) Q_CLASSINFO(QT_STRINGIFY(__nut_NAME_PERFIX #field " " __nut_LEN), #len)
#define NUT_DEFAULT_VALUE(x, n) Q_CLASSINFO(QT_STRINGIFY(__nut_NAME_PERFIX #x " " __nut_DEFAULT_VALUE), #n)
#define NUT_NOT_NULL(x) Q_CLASSINFO(QT_STRINGIFY(__nut_NAME_PERFIX #x " " __nut_NOT_NULL), "1")
#define NUT_INDEX(name, field, order)
#ifndef NUT_NO_KEYWORDS
# define FROM(x) (x->query())

View File

@ -44,13 +44,13 @@
#define __nut_CHANGE "change"
#ifdef NUT_NAMESPACE
# define NUT_BEGIN_NAMESPACE namespace NUT_NAMESPACE{
# define NUT_END_NAMESPACE }
# define NUT_WRAP_NAMESPACE(x) NUT_NAMESPACE::x
# define NUT_BEGIN_NAMESPACE namespace NUT_NAMESPACE{
# define NUT_END_NAMESPACE }
# define NUT_WRAP_NAMESPACE(x) NUT_NAMESPACE::x
#else
# define NUT_BEGIN_NAMESPACE
# define NUT_END_NAMESPACE
# define NUT_WRAP_NAMESPACE(x) x
# define NUT_WRAP_NAMESPACE(x) x
#endif
#endif // DEFINES_P_H

View File

@ -60,6 +60,14 @@ public:
return this;
}
template<class TABLE>
Query<T> *join()
{
join(TABLE::staticMetaObject.className());
return this;
}
// Query<T> *orderBy(QString fieldName, QString type);
Query<T> *skip(int &n);
Query<T> *take(int &n);

View File

@ -12,6 +12,7 @@
#include "post.h"
#include "comment.h"
#include "user.h"
MainTest::MainTest(QObject *parent) : QObject(parent)
{
@ -20,7 +21,8 @@ MainTest::MainTest(QObject *parent) : QObject(parent)
void MainTest::initTestCase()
{
qDebug() << "User type id:" << qRegisterMetaType<Post*>();
qDebug() << "Post type id:" << qRegisterMetaType<Post*>();
// qDebug() << "User type id:" << qRegisterMetaType<User*>();
qDebug() << "Comment type id:" << qRegisterMetaType<Comment*>();
qDebug() << "DB type id:" << qRegisterMetaType<WeblogDatabase*>();
@ -45,7 +47,7 @@ void MainTest::dataScheema()
// qDebug() << model.toJson();
// qDebug() << db.model().toJson();
QTEST_ASSERT(model == db.model());
// QTEST_ASSERT(model == db.model());
}
void MainTest::createPost()
@ -96,6 +98,7 @@ void MainTest::selectPosts()
{
auto q = db.posts()->query();
q->join(Post::commentsTable());
q->join<Comment>();
q->orderBy(!Post::saveDateField() & Post::bodyField());
q->setWhere(Post::idField() == postId);

View File

@ -12,6 +12,7 @@ SOURCES += \
maintest.cpp \
../common/comment.cpp \
../common/post.cpp \
../common/user.cpp \
../common/weblogdatabase.cpp
HEADERS += \
@ -19,4 +20,5 @@ HEADERS += \
../common/consts.h \
../common/comment.h \
../common/post.h \
../common/user.h \
../common/weblogdatabase.h

View File

@ -7,7 +7,7 @@
//#define USERNAME "postgres"
//#define PASSWORD "856856"
#define DRIVER "QMYSQL"
#define DRIVER "QSQLITE"
#define HOST "127.0.0.1"
#define DATABASE "nutdb"
#define USERNAME "root"

View File

@ -7,3 +7,5 @@ Post::Post(QObject *parent) : Table(parent),
{
}
NUT_IMPLEMENT_CHILD_TABLE(Post, Comment, comments)

View File

@ -4,13 +4,13 @@
#include <QtCore/qglobal.h>
#include "table.h"
#include "database.h"
#include "comment.h"
#include "databasemodel.h"
#ifdef NUT_NAMESPACE
using namespace NUT_NAMESPACE;
#endif
class Comment;
class Post : public Table
{
Q_OBJECT

10
test/common/user.cpp Normal file
View File

@ -0,0 +1,10 @@
#include "user.h"
#include "comment.h"
User::User(QObject *parent) : Nut::Table(parent)
{
}
NUT_IMPLEMENT_CHILD_TABLE(User, Comment, comments)

32
test/common/user.h Normal file
View File

@ -0,0 +1,32 @@
#ifndef USER_H
#define USER_H
#include "table.h"
#include "tableset.h"
#include <QtCore/QUuid>
#include <QtCore/QString>
#ifdef NUT_NAMESPACE
using namespace NUT_NAMESPACE;
#endif
class Comment;
class User : public Nut::Table
{
Q_OBJECT
NUT_PRIMARY_AUTO_INCREMENT(id)
NUT_DECLARE_FIELD(QUuid, id, id, setId)
NUT_DECLARE_FIELD(QString, username, username, setUsername)
NUT_DECLARE_FIELD(QString, password, password, setPassword)
NUT_DECLARE_CHILD_TABLE(Comment, comments)
public:
Q_INVOKABLE User(QObject *tableSet = 0);
};
Q_DECLARE_METATYPE(User*)
#endif // USER_H

View File

@ -2,8 +2,12 @@
#include "post.h"
#include "comment.h"
#include "user.h"
#include "weblogdatabase.h"
WeblogDatabase::WeblogDatabase() : Database(), m_posts(new TableSet<Post>(this)), m_comments(new TableSet<Comment>(this))
WeblogDatabase::WeblogDatabase() : Database(),
m_posts(new TableSet<Post>(this)),
m_comments(new TableSet<Comment>(this)),
m_users(new TableSet<User>(this))
{
}

View File

@ -9,15 +9,16 @@ using namespace NUT_NAMESPACE;
class Post;
class Comment;
class User;
class WeblogDatabase : public Database
{
Q_OBJECT
NUT_DB_VERSION(1, 1)
NUT_DB_VERSION(1)
NUT_DECLARE_TABLE(Post, post)
NUT_DECLARE_TABLE(Comment, comment)
NUT_DECLARE_TABLE(User, user)
public:
WeblogDatabase();