-
Notifications
You must be signed in to change notification settings - Fork 75
Create table class
Hamed Masafi edited this page Feb 23, 2018
·
7 revisions
The class must inherits from Table class
Primary key can be auto increment
NUT_PRIMARY_AUTO_INCREMENT(id)
NUT_DECLARE_FIELD(int, id, id, setId)
for declaring primary key use NUT_PRIMARY_KEY macro, if primary key is auto increment use NUT_PRIMARY_AUTO_INCREMENT
Macro | Description |
---|---|
NUT_PRIMARY_KEY(x) | The field x is primary key |
NUT_AUTO_INCREMENT(x) | The field x is auto increment |
NUT_PRIMARY_AUTO_INCREMENT(x) | The field x is primary key and auto increment |
NUT_DECLARE_FIELD(type, property_name, read_method_name, write_method_name)
Macro | Description |
---|---|
NUT_NOT_NULL(x) | The field x is not allowed to store NULL value |
NUT_LEN(x, len) | Max length of x is len in string types and in numeric typed field x will be store in len bytes |
NUT_DEFAULT_VALUE(x, def) | Default value of x is def |
NUT_UNIQUE(x) | Field x is unique (Not imlemented yet!) |
NUT_DISPLAY_NAME(field, name) | Sets display name for field (used in model creation |
class Post : public Table
{
Q_OBJECT
NUT_PRIMARY_AUTO_INCREMENT(id)
NUT_DECLARE_FIELD(int, id, id, setId)
NUT_NOT_NULL(title)
NUT_LEN(title, 50)
NUT_DECLARE_FIELD(QString, title, title, setTitle)
NUT_DECLARE_FIELD(QDateTime, saveDate, saveDate, setSaveDate)
NUT_LEN(body, 200)
NUT_DECLARE_FIELD(QString, body, body, setBody)
public:
explicit Post(QObject *tableSet = 0);
};
If current table has one-to-many relation ship it must be declared. For example post table has a slave table named comment, every post has many comment:
NUT_DECLARE_CHILD_TABLE(Comment, comments)
First argument id table name and second is field name, m_comments must be initalized in constructor:
Post::Post(QObject *parent) : Table(parent),
m_comments(new TableSet<Comment>(this)), m_id(0), m_title("")
{
}
For more example take a look at tests/common folder
Table of contents