Projekt

Allgemein

Profil

Herunterladen als
Herunterladen (3,13 KB) Statistiken
| Zweig: | Revision:
aa44e7d1 Christian Ehringfeld
#ifndef SCHEMA_H
#define SCHEMA_H
4d58ef6a Christian Ehringfeld
#include "tableschema.h"
9cf4747e Christian Ehringfeld
#include <QStringList>
b0b8dac3 Christian Ehringfeld
#include <QHash>
#include <QSharedPointer>
14f9beed Christian Ehringfeld
#include <QSqlField>
b0bf458e Christian Ehringfeld
#include "querybuilder.h"
4d58ef6a Christian Ehringfeld
namespace CuteEntityManager {
14f9beed Christian Ehringfeld
class Database;
4d58ef6a Christian Ehringfeld
class Schema {
426974c6 Christian Ehringfeld
public:
14f9beed Christian Ehringfeld
Schema(QSharedPointer<Database> database);
b0b8dac3 Christian Ehringfeld
virtual ~Schema();
const QString TYPE_PK = "pk";
const QString TYPE_BIGPK = "bigpk";
const QString TYPE_STRING = "string";
const QString TYPE_TEXT = "text";
const QString TYPE_SMALLINT = "smallint";
const QString TYPE_INTEGER = "integer";
const QString TYPE_BIGINT = "bigint";
const QString TYPE_FLOAT = "float";
const QString TYPE_DOUBLE = "double";
const QString TYPE_DECIMAL = "decimal";
const QString TYPE_DATETIME = "datetime";
const QString TYPE_TIMESTAMP = "timestamp";
const QString TYPE_TIME = "time";
const QString TYPE_DATE = "date";
14f9beed Christian Ehringfeld
const QString TYPE_CHAR = "char";
b0b8dac3 Christian Ehringfeld
const QString TYPE_BINARY = "binary";
const QString TYPE_BOOLEAN = "boolean";
const QString TYPE_MONEY = "money";
a604a5a2 Christian Ehringfeld
// /**
// * @var array list of ALL table names in the database
// */
// private $_tableNames = [];
// /**
// * @var array list of loaded table metadata (table name => TableSchema)
// */
// private $_tables = [];
// /**
// * @var QueryBuilder the query builder for this database
// */
// private $_builder;


b0b8dac3 Christian Ehringfeld
virtual QHash<QString, QString> *getTypeMap() = 0;
b0bf458e Christian Ehringfeld
QHash<QString, QString> getAbstractDatabaseTypes();
a604a5a2 Christian Ehringfeld
virtual QString quoteSimpleTableName(QString name);
426974c6 Christian Ehringfeld
virtual QString quoteTableName(QString name);
virtual QString quoteColumnName(QString name);
a604a5a2 Christian Ehringfeld
virtual QString quoteSimpleColumnName(QString name);
9cf4747e Christian Ehringfeld
virtual QHash<QString, QSharedPointer<TableSchema>> getTableSchemas(QString schema = "", bool refresh = false);
b0bf458e Christian Ehringfeld
virtual QSharedPointer<TableSchema> getTableSchema(QString name, bool refresh = false);
caea9141 Christian Ehringfeld
virtual QStringList getTableNames(QString schema = "");
9cf4747e Christian Ehringfeld
virtual QVariant getLastInsertID();
a604a5a2 Christian Ehringfeld
virtual void refresh();
426974c6 Christian Ehringfeld
virtual QString getRawTable(QString name);
14f9beed Christian Ehringfeld
virtual bool containsTable(QString tblname);
b0bf458e Christian Ehringfeld
virtual void initQueryBuilder();
b0b8dac3 Christian Ehringfeld
9cf4747e Christian Ehringfeld
QHash<QString, QSharedPointer<TableSchema> > getTables() const;
void setTables(const QHash<QString, QSharedPointer<TableSchema> > &value);
426974c6 Christian Ehringfeld
14f9beed Christian Ehringfeld
QSharedPointer<Database> getDatabase() const;
void setDatabase(const QSharedPointer<Database> &value);

b0bf458e Christian Ehringfeld
QSharedPointer<QueryBuilder> getQueryBuilder() const;

14f9beed Christian Ehringfeld
protected:
9cf4747e Christian Ehringfeld
virtual QStringList findTableNames(QString schema = "") = 0;
14f9beed Christian Ehringfeld
virtual QHash<QString, QStringList> findUniqueIndexes(const QSharedPointer<TableSchema> &table) = 0;
virtual void findConstraints(const QSharedPointer<TableSchema> &ts) = 0;
virtual bool findColumns(const QSharedPointer<TableSchema> &ts) = 0;
virtual QSharedPointer<TableSchema> loadTableSchema(QString name) = 0;
QSharedPointer<Database> database;
QSharedPointer<QHash<QString, QString>> typeMap;
9cf4747e Christian Ehringfeld
QHash<QString, QSharedPointer<TableSchema>> tables;
b0bf458e Christian Ehringfeld
QSharedPointer<QueryBuilder> queryBuilder;
9cf4747e Christian Ehringfeld
2c152ba3 Christian Ehringfeld
4d58ef6a Christian Ehringfeld
};
}
aa44e7d1 Christian Ehringfeld
#endif // SCHEMA_H