Heart 1.3.848.aa44c26
Heart is base back end library for your c++ Qt projects.
|
The DBObject class- main class for work with data base. More...
#include <dbobject.h>
Public Member Functions | |
DBObject () | |
~DBObject () override | |
bool | isValid () const override |
isValid This method check current object to valid. | |
bool | isHaveAPrimaryKey () const |
isHaveAPrimaryKey This method return true if this object has a primary key. If you want to cache this database object then primary key must be not null. | |
virtual void | clear () |
clear This method clear all data of database object. Override This method for remove or reset your own members of class. | |
virtual DBObject * | createDBObject () const =0 |
createDBObject This method should be create a object with the some type as the object called this method. Example of override: | |
virtual PrepareResult | prepareSelectQuery (QSqlQuery &q) const |
prepareSelectQuery This method should be prepare a query for selected data. Override this method for get item from database. The default implementation generate default select: | |
virtual bool | fromSqlRecord (const QSqlRecord &q)=0 |
fromSqlRecord This method should be initialize this object from the executed sqlRecord. The Default implementation get general dbObject information ( id and table name ). Override This method for initialize this object from sql query. | |
virtual PrepareResult | prepareInsertQuery (QSqlQuery &q, bool replace) const |
prepareInsertQuery This method should be prepare a query for insert object into database. You need to create a own insert sql query for this object into database. Override this method for insert item into database. By Default This method prepare a insert query using the data that returned from the variantMap method. | |
virtual PrepareResult | prepareUpdateQuery (QSqlQuery &q) const |
prepareUpdateQuery this method should be prepare a insert data query. | |
virtual PrepareResult | prepareRemoveQuery (QSqlQuery &q) const |
prepareRemoveQuery This method should be prepare a query for remove this object from a database. Override this method for remove this item from database. The default implementation remove item from id or primaryKey for more information see DBObject::condition method. | |
virtual bool | isCached () const |
isCached This method sholud be return status of object. If this method return true then this object can be saved into cache of database. Override this method and set this value to false for composite objects (objects for which a select query can return several objects or an object that does not have a direct representation in the database but contains common characteristics of several objects). | |
virtual bool | isBundle () const |
isBundle This method definef determines whether the object will be abstract (composite objects) or single object If this function return true then SqlDBWriter create only one object after invoked selectquery. And if the selectquery function return a list of more 1 elements then a method fromSqlRecord must be invoked for each all elements of list. | |
DbAddress | dbAddress () const |
dbAddress This method return address of the database object. IF the object is not valid then this method return an invalid database address. | |
QString | toString () const override |
virtual DBVariantMap | variantMap () const |
variantMap This method should be create a DBVariantMap implementation of this database object. | |
virtual QString | table () const =0 |
table This method should be return name of the database table that should be contains objects with this type. | |
Public Member Functions inherited from QH::PKG::AbstractData | |
~AbstractData () override | |
virtual unsigned short | cmd () const =0 |
cmd - This is command of this object, (for generate cmd use macross QH_PACKAGE) | |
virtual QString | cmdString () const =0 |
cmdString - This is command string of this object, (for generate cmd use macross QH_PACKAGE) | |
virtual bool | toPackage (Package &package, const DistVersion &reqVersion, unsigned int triggerHash=0) const |
toPackage This method convert this class object to the package. For more info see Package class. | |
QString | toString () const override |
toString - Return a string implementation for this object. | |
template<class C , class... Args> | |
C * | create (Args &&... args) const |
create - This is factory method for create a new object. | |
void | fromPakcage (const Package &pkg) |
fromPakcage - This method initialize the current object from a package class object. | |
Public Member Functions inherited from QH::StreamBase | |
StreamBase () | |
virtual | ~StreamBase () |
bool | fromBytes (const QByteArray &data) |
fromBytes This method provide initialization of object from byte array. | |
QByteArray | toBytes () const |
toBytes This method convert a current object to bytes array. | |
bool | fromBase64 (const QString &data) |
fromBase64 This method provide initialization of object from the base64 string. | |
bool | fromBase64 (const QByteArray &data) |
fromBase64 This method provide initialization of object from the base64 string. | |
QByteArray | toBase64 () const |
toBase64 This method convert a current object to the base64 string. | |
template<class T > | |
T & | copy (const StreamBase &right) |
copy This is base copy method for all StreamBase structures. Default implementation it is copy from byteArray. | |
template<class T > | |
bool | compare (const T &right) |
compare This method compare array signatures of this and right objects. | |
Protected Member Functions | |
QDataStream & | fromStream (QDataStream &stream) override |
fromStream This method should be read all bytes from the stream object and full the current object. | |
QDataStream & | toStream (QDataStream &stream) const override |
fromStream This method should be write all members of the current object to the stream object. | |
virtual std::pair< QString, QMap< QString, QVariant > > | condition () const |
condition This method must to return a condition of the WHERE block of the sql query. This method using on default implementation of DBObject::prepareSelectQuery and DBObject::prepareRemoveQuery methods. The default implementation generate when block by map for more information see the variantMap nethod. Override this method for customize your select or delete query. | |
virtual QString | primaryKey () const |
primaryKey This method must be return the name of primary key of this object table. If you want to create data object without primary key just return empty string. | |
virtual QVariant | primaryValue () const |
primaryValue This method is wraper of DBAddress::id. If This object do not contains a id value then return invalid value. | |
bool | isInsertPrimaryKey () const |
isInsertPrimaryKey This method check primaryKeys type. If the primary key have a type MemberType::Insert then return true. | |
Protected Member Functions inherited from QH::PKG::AbstractData | |
AbstractData () | |
AbstractData - Base constructor of this object. | |
Protected Member Functions inherited from QH::StreamBase | |
virtual int | parsingVersion () const |
parsingVersion this method return parsing version of Qt. By Default is 0 (last available parsing). see https://doc.qt.io/qt-6/qdatastream.html#Version-enum | |
virtual unsigned int | typeId () const |
typeId This method return id of type. | |
Additional Inherited Members | |
Static Public Member Functions inherited from QH::PKG::AbstractData | |
static unsigned int | command () |
command This static method that return glaball code of this object. | |
static QString | commandText () |
commandText This method return text of package command | |
The DBObject class- main class for work with data base.
Definition at line 93 of file dbobject.h.
QH::PKG::DBObject::DBObject | ( | ) |
|
override |
Definition at line 26 of file dbobject.cpp.
|
virtual |
clear This method clear all data of database object. Override This method for remove or reset your own members of class.
Reimplemented in QH::PKG::DBObjectsRequest< T >.
Definition at line 309 of file dbobject.cpp.
|
protectedvirtual |
condition This method must to return a condition of the WHERE block of the sql query. This method using on default implementation of DBObject::prepareSelectQuery and DBObject::prepareRemoveQuery methods. The default implementation generate when block by map for more information see the variantMap nethod. Override this method for customize your select or delete query.
Example of overriding:
Reimplemented in QH::PKG::DBObjectsRequest< T >.
Definition at line 206 of file dbobject.cpp.
|
pure virtual |
createDBObject This method should be create a object with the some type as the object called this method. Example of override:
Implemented in QH::PKG::DBObjectsRequest< T >, QH::PKG::DeleteObject, QH::PKG::GetMaxIntegerId, QH::PKG::GetSingleValue, and QH::PKG::SetSingleValue.
DbAddress QH::PKG::DBObject::dbAddress | ( | ) | const |
dbAddress This method return address of the database object. IF the object is not valid then this method return an invalid database address.
Definition at line 234 of file dbobject.cpp.
|
pure virtual |
fromSqlRecord This method should be initialize this object from the executed sqlRecord. The Default implementation get general dbObject information ( id and table name ). Override This method for initialize this object from sql query.
q | This is query object. |
Exampel of override fromSqlRecord method:
Implemented in QH::PKG::DBObjectsRequest< T >, QH::PKG::DeleteObject, QH::PKG::GetMaxIntegerId, QH::PKG::GetSingleValue, and QH::PKG::SetSingleValue.
|
overrideprotectedvirtual |
fromStream This method should be read all bytes from the stream object and full the current object.
stream | This is Qt stream object. |
Examle of base simple implementation:
Implements QH::StreamBase.
Reimplemented in QH::PKG::DBObjectsRequest< T >, QH::PKG::DBObjectsRequestWithStream< T >, and QH::PKG::DeleteObject.
Definition at line 243 of file dbobject.cpp.
|
virtual |
isBundle This method definef determines whether the object will be abstract (composite objects) or single object If this function return true then SqlDBWriter create only one object after invoked selectquery. And if the selectquery function return a list of more 1 elements then a method fromSqlRecord must be invoked for each all elements of list.
Reimplemented in QH::PKG::DBObjectSet.
Definition at line 202 of file dbobject.cpp.
|
virtual |
isCached This method sholud be return status of object. If this method return true then this object can be saved into cache of database. Override this method and set this value to false for composite objects (objects for which a select query can return several objects or an object that does not have a direct representation in the database but contains common characteristics of several objects).
Reimplemented in QH::PKG::DeleteObject, QH::PKG::GetMaxIntegerId, QH::PKG::GetSingleValue, QH::PKG::SetSingleValue, and QH::PKG::DBObjectSet.
Definition at line 194 of file dbobject.cpp.
bool QH::PKG::DBObject::isHaveAPrimaryKey | ( | ) | const |
isHaveAPrimaryKey This method return true if this object has a primary key. If you want to cache this database object then primary key must be not null.
Definition at line 305 of file dbobject.cpp.
|
protected |
isInsertPrimaryKey This method check primaryKeys type. If the primary key have a type MemberType::Insert then return true.
Definition at line 230 of file dbobject.cpp.
|
overridevirtual |
isValid This method check current object to valid.
Reimplemented from QH::PKG::AbstractData.
Reimplemented in QH::PKG::DBObjectsRequest< T >.
Definition at line 294 of file dbobject.cpp.
|
virtual |
prepareInsertQuery This method should be prepare a query for insert object into database. You need to create a own insert sql query for this object into database. Override this method for insert item into database. By Default This method prepare a insert query using the data that returned from the variantMap method.
q | Thuis is query object. |
replace | This option disable or enable replacing of exists objects. |
Default insert query have a next template:
For more information see the DBObject::variantMap method.
q | This is query object. |
Example of overriding:
Reimplemented in QH::PKG::SetSingleValue, and QH::PKG::DBObjectSet.
Definition at line 61 of file dbobject.cpp.
|
virtual |
prepareRemoveQuery This method should be prepare a query for remove this object from a database. Override this method for remove this item from database. The default implementation remove item from id or primaryKey for more information see DBObject::condition method.
q | This is query object. |
Reimplemented in QH::PKG::DBObjectSet.
Definition at line 258 of file dbobject.cpp.
|
virtual |
prepareSelectQuery This method should be prepare a query for selected data. Override this method for get item from database. The default implementation generate default select:
This method create where block using the condition method. See DBObject::condition fr more information.
q | This is query object. |
Reimplemented in QH::PKG::GetMaxIntegerId, QH::PKG::GetSingleValue, and QH::PKG::DBObjectSet.
Definition at line 30 of file dbobject.cpp.
|
virtual |
prepareUpdateQuery this method should be prepare a insert data query.
Bt Default This method generate query like this:
If you want to create a own insert query override this method.
Example of overriding this method:
q | This is query object. |
Reimplemented in QH::PKG::SetSingleValue, and QH::PKG::DBObjectSet.
Definition at line 122 of file dbobject.cpp.
|
protectedvirtual |
primaryKey This method must be return the name of primary key of this object table. If you want to create data object without primary key just return empty string.
Reimplemented in QH::PKG::DBObjectSet, QH::PKG::DeleteObject, QH::PKG::GetSingleValue, and QH::PKG::SetSingleValue.
Definition at line 222 of file dbobject.cpp.
|
protectedvirtual |
primaryValue This method is wraper of DBAddress::id. If This object do not contains a id value then return invalid value.
Reimplemented in QH::PKG::DeleteObject, QH::PKG::GetSingleValue, and QH::PKG::SetSingleValue.
Definition at line 226 of file dbobject.cpp.
|
pure virtual |
table This method should be return name of the database table that should be contains objects with this type.
Implemented in QH::PKG::DBObjectSet, QH::PKG::DeleteObject, QH::PKG::GetMaxIntegerId, QH::PKG::GetSingleValue, and QH::PKG::SetSingleValue.
|
overrideprotectedvirtual |
fromStream This method should be write all members of the current object to the stream object.
stream | This is Qt stream object. |
Examle of base simple implementation:
Implements QH::StreamBase.
Reimplemented in QH::PKG::DBObjectsRequest< T >, QH::PKG::DBObjectsRequestWithStream< T >, and QH::PKG::DeleteObject.
Definition at line 251 of file dbobject.cpp.
|
override |
Definition at line 238 of file dbobject.cpp.
|
virtual |
variantMap This method should be create a DBVariantMap implementation of this database object.
IF you have the database field with autoincrement you need to remove MemberType::Insert attribute from the your key. For more information see the MemberType::PrimaryKeyAutoIncrement attribute.
Example of return value:
Example of override:
Reimplemented in QH::PKG::DBObjectsRequest< T >, and QH::PKG::DeleteObject.
Definition at line 286 of file dbobject.cpp.