Herunterladen als
root/src/querybuilder.h @ 40d229e3
14f9beed | Christian Ehringfeld | #ifndef QUERYBUILDER_H
|
|
#define QUERYBUILDER_H
|
|||
b0bf458e | Christian Ehringfeld | #include <QString>
|
|
#include <QHash>
|
|||
#include <QSharedPointer>
|
|||
a47954c0 | Christian Ehringfeld | #include <QPointer>
|
|
dc6b13b4 | Christian Ehringfeld | #include <QSqlQuery>
|
|
b0bf458e | Christian Ehringfeld | namespace CuteEntityManager {
|
|
class Schema;
|
|||
class Entity;
|
|||
class Database;
|
|||
class QueryBuilder {
|
|||
public:
|
|||
QueryBuilder(QSharedPointer<Schema> schema, QSharedPointer<Database> database);
|
|||
virtual ~QueryBuilder();
|
|||
virtual bool createTable(const QSharedPointer<Entity> &entity) const;
|
|||
virtual bool createTable(const QString &tableName, const QHash<QString, QString> &tableDefinition) const;
|
|||
virtual QString createTableQuery(const QString &tableName, const QHash<QString, QString> &tableDefinition) const;
|
|||
d99101ae | Christian Ehringfeld | virtual QString renameTable(QString tableName, QString newName) const;
|
|
virtual QString dropTable(QString tableName) const;
|
|||
virtual QString truncateTable(QString tableName) const;
|
|||
virtual QString addColumn(QString tableName, QString columnName, QString columnType) const;
|
|||
b0bf458e | Christian Ehringfeld | virtual QString dropColumn(QString tableName, QString columName)const;
|
|
24425325 | Christian Ehringfeld | virtual QString renameColumn(QString tableName, QString oldName, QString newName) const;
|
|
b0bf458e | Christian Ehringfeld | virtual QString alterColumn(QString tableName, QString columnName, QString newType)const;
|
|
virtual QString addPrimaryKey(QString name, QString tableName, QStringList columns)const;
|
|||
virtual QString dropPrimaryKey(QString name, QString tableName) const;
|
|||
virtual QString addForeignKey(QString name, QString tableName, QStringList columns, QString refTableName,
|
|||
d99101ae | Christian Ehringfeld | QStringList refColumns, QString deleteConstraint, QString updateConstraint) const;
|
|
b0bf458e | Christian Ehringfeld | virtual QString dropForeignKey(QString name, QString tableName) const;
|
|
virtual QString createIndex(QString name, QString tableName, QStringList columns, bool unique)const;
|
|||
virtual QString dropIndex(QString name, QString tableName)const;
|
|||
ba800d6d | Christian Ehringfeld | QHash<QString, QVariant> getEntityAttributes(const QHash<QString, QMetaProperty> &props,
|
|
dc6b13b4 | Christian Ehringfeld | const QSharedPointer<Entity> &entity) const;
|
|
ba800d6d | Christian Ehringfeld | ||
b0bf458e | Christian Ehringfeld | QSharedPointer<Schema> getSchema() const;
|
|
void setSchema(const QSharedPointer<Schema> &value);
|
|||
14f9beed | Christian Ehringfeld | ||
b0bf458e | Christian Ehringfeld | QSharedPointer<Database> getDatabase() const;
|
|
void setDatabase(const QSharedPointer<Database> &value);
|
|||
ba800d6d | Christian Ehringfeld | QHash<QString, QHash<QString, QString>> generateRelationTables(const QSharedPointer<Entity> &entity) const;
|
|
b0bf458e | Christian Ehringfeld | QHash<QString, QString> generateTableDefinition(const QSharedPointer<Entity> &entity) const;
|
|
ba800d6d | Christian Ehringfeld | QString generateManyToManyTableName(const QSharedPointer<Entity> &firstEntity,
|
|
const QSharedPointer<Entity> &secondEntity) const;
|
|||
b0bf458e | Christian Ehringfeld | ||
6dc7d533 | Christian Ehringfeld | QString transformTypeToAbstractDbType(QString typeName) const;
|
|
QString transformAbstractTypeToRealDbType(QString typeName) const;
|
|||
a47954c0 | Christian Ehringfeld | QString getColumnType(const QString &type) const;
|
|
dc6b13b4 | Christian Ehringfeld | QSqlQuery find(const qint64 &id, const QString &tableName) const;
|
|
QSqlQuery findByAttributes(const QHash<QString, QVariant> &m, const QString &tableName, const bool &ignoreID) const;
|
|||
QSqlQuery findByAttributes(const QSharedPointer<Entity> &e,bool ignoreID = true);
|
|||
QSqlQuery findAll(const QString &tableName) const;
|
|||
QSqlQuery remove(const QSharedPointer<Entity> &entity) const;
|
|||
QSqlQuery findId(const QSharedPointer<Entity> &entity) const;
|
|||
QSqlQuery count(const QSharedPointer<Entity> &entity, bool ignoreID) const;
|
|||
QSqlQuery count(const QString &tableName) const;
|
|||
QSqlQuery merge(const QSharedPointer<Entity> &entity) const;
|
|||
QSqlQuery create(const QSharedPointer<Entity> &entity) const;
|
|||
b0bf458e | Christian Ehringfeld | ||
protected:
|
|||
dc6b13b4 | Christian Ehringfeld | void insertRelationId(const Entity *e, QHash<QString, QVariant> &map, QString relName) const;
|
|
d99101ae | Christian Ehringfeld | QString buildColumns(const QStringList &columns) const;
|
|
ba800d6d | Christian Ehringfeld | QHash<QString, QVariant> getManyToOneAttributes(const QHash<QString, QMetaProperty> &props,
|
|
dc6b13b4 | Christian Ehringfeld | const QSharedPointer<Entity> &entity) const;
|
|
QHash<QString, QMetaProperty> getMetaProperties(const QSharedPointer<Entity> &entity) const;
|
|||
QHash<QString, QVariant> getPropertyValues(const QHash<QString, QMetaProperty> &metaProps,
|
|||
const QSharedPointer<Entity> &entity) const;
|
|||
QString buildCreateQuery(QHash<QString, QVariant>::const_iterator i, QHash<QString, QVariant>::const_iterator end,
|
|||
QString &p1, QString &p2) const;
|
|||
void bindValues(const QHash<QString, QVariant> &h, QSqlQuery &q, bool ignoreID = false) const;
|
|||
QString where(const QSharedPointer<Entity> &entity, QString conjunction = ",", bool ignoreID = false) const;
|
|||
QString where(const QHash<QString, QVariant> &m, const QString &conjunction = ",", bool ignoreID = false) const;
|
|||
QString attributes(const QHash<QString, QVariant> &m, const QString &conjunction = ",", bool ignoreID = false) const;
|
|||
QHash<QString, QVariant> saveAttributes(const QSharedPointer<Entity> &entity) const;
|
|||
b0bf458e | Christian Ehringfeld | ||
QSharedPointer<Schema> schema;
|
|||
QSharedPointer<Database> database;
|
|||
14f9beed | Christian Ehringfeld | };
|
|
b0bf458e | Christian Ehringfeld | }
|
|
14f9beed | Christian Ehringfeld | ||
#endif // QUERYBUILDER_H
|