Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision e0e1ead8

Von Christian Ehringfeld vor fast 9 Jahren hinzugefügt

  • ID e0e1ead821f79cb33d9f212191809e4914172aa8
  • Vorgänger c599658a
  • Nachfolger e5ce87e2

formatting

Unterschiede anzeigen:

src/schema/sqliteschema.cpp
#include "sqlitequerybuilder.h"
using namespace CuteEntityManager;
SqliteSchema::SqliteSchema(QSharedPointer<Database> database) : Schema(database) {
this->queryBuilder = QSharedPointer<QueryBuilder>(new SqliteQueryBuilder(QSharedPointer<Schema>(this), database));
SqliteSchema::SqliteSchema(QSharedPointer<Database> database) : Schema(
database) {
this->queryBuilder = QSharedPointer<QueryBuilder>(new SqliteQueryBuilder(
QSharedPointer<Schema>
(this), database));
}
SqliteSchema::~SqliteSchema() {
......
QSharedPointer<QHash<QString, QString>> SqliteSchema::getTypeMap() {
if (this->typeMap.data()->empty()) {
this->typeMap.data()->insert(TYPE_PK, "integer PRIMARY KEY AUTOINCREMENT NOT NULL");
this->typeMap.data()->insert(TYPE_BIGPK, "integer PRIMARY KEY AUTOINCREMENT NOT NULL");
this->typeMap.data()->insert(TYPE_PK,
"integer PRIMARY KEY AUTOINCREMENT NOT NULL");
this->typeMap.data()->insert(TYPE_BIGPK,
"integer PRIMARY KEY AUTOINCREMENT NOT NULL");
this->typeMap.data()->insert(TYPE_BOOLEAN, "boolean");
this->typeMap.data()->insert(TYPE_SMALLINT, "smallint");
this->typeMap.data()->insert(TYPE_INTEGER, "integer");
......
QStringList SqliteSchema::findTableNames(QString schema) {
auto l = QStringList();
QString sql = "SELECT DISTINCT tbl_name FROM sqlite_master WHERE tbl_name<>'sqlite_sequence' ORDER BY tbl_name";
QString sql =
"SELECT DISTINCT tbl_name FROM sqlite_master WHERE tbl_name<>'sqlite_sequence' ORDER BY tbl_name";
auto q = this->database.data()->getQuery();
q.prepare(sql);
this->database.data()->select(q);
......
return l;
}
QHash<QString, QStringList> SqliteSchema::findUniqueIndexes(const QSharedPointer<TableSchema> &table) {
QHash<QString, QStringList> SqliteSchema::findUniqueIndexes(
const QSharedPointer<TableSchema>
&table) {
QHash<QString, QStringList> uniqueIndexes = QHash<QString, QStringList>();
QSqlQuery q = this->database.data()->getQuery();
q.setForwardOnly(true);
q.exec("PRAGMA index_list(" + this->quoteSimpleTableName(table->getName()) + ')');
q.exec("PRAGMA index_list(" + this->quoteSimpleTableName(
table->getName()) + ')');
while (q.next()) {
QString indexName = q.value("name").toString();
QSqlQuery q2 = this->database.data()->getQuery();
......
void SqliteSchema::findConstraints(const QSharedPointer<TableSchema> &ts) {
QSqlQuery q = this->database.data()->getQuery();
q.setForwardOnly(true);
q.exec("PRAGMA foreign_key_list(" + this->quoteSimpleTableName(ts.data()->getName()) + ')');
q.exec("PRAGMA foreign_key_list(" + this->quoteSimpleTableName(
ts.data()->getName()) + ')');
auto foreignKeys = ts.data()->getRelations();
while (q.next()) {
bool ok;
int id = q.value("id").toInt(&ok);
if (ok) {
auto rel = new QSqlRelation(q.value("table").toString(), q.value("from").toString(), q.value("to").toString());
auto rel = new QSqlRelation(q.value("table").toString(),
q.value("from").toString(),
q.value("to").toString());
auto ptr = QSharedPointer<QSqlRelation>(rel);
foreignKeys.insert(QString::number(id), ptr);
}
......
bool SqliteSchema::findColumns(const QSharedPointer<TableSchema> &ts) {
QSqlQuery q = this->database.data()->getQuery();
q.setForwardOnly(true);
q.exec("SELECT * FROM " + this->quoteSimpleTableName(ts.data()->getName()) + " LIMIT 0");
QHash<QString, QSharedPointer<QSqlField>> columns = QHash<QString, QSharedPointer<QSqlField>>();
q.exec("SELECT * FROM " + this->quoteSimpleTableName(ts.data()->getName()) +
" LIMIT 0");
QHash<QString, QSharedPointer<QSqlField>> columns =
QHash<QString, QSharedPointer<QSqlField>>();
auto rec = q.record();
int count = rec.count();
if (count == 0) {

Auch abrufbar als: Unified diff