Herunterladen als
root/src/schema.h @ 9d05e414
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>
|
|
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;
|
|
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);
|
|
caea9141 | Christian Ehringfeld | virtual QStringList getTableNames(QString schema = "");
|
|
a604a5a2 | Christian Ehringfeld | //virtual QueryBuilder getQueryBuilder();
|
|
//virtual QueryBuilder createQueryBuilder();
|
|||
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);
|
|
virtual QString quoteValue(QString str);
|
|||
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);
|
|||
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;
|
|||
9cf4747e | Christian Ehringfeld | virtual TableSchema *getTableSchema(QString name, bool refresh = false);
|
|
14f9beed | Christian Ehringfeld | QSharedPointer<Database> database;
|
|
QSharedPointer<QHash<QString, QString>> typeMap;
|
|||
9cf4747e | Christian Ehringfeld | QHash<QString, QSharedPointer<TableSchema>> tables;
|
|
2c152ba3 | Christian Ehringfeld | ||
4d58ef6a | Christian Ehringfeld | };
|
|
}
|
|||
aa44e7d1 | Christian Ehringfeld | #endif // SCHEMA_H
|