Akonadi
dbinitializer.cpp
144 const QVector<DbIntrospector::ForeignKey> existingForeignKeys = m_introspector->foreignKeyConstraints(tableDescription.name);
157 if (QString::compare(existingForeignKey.refTable, column.refTable + QLatin1String("table"), Qt::CaseInsensitive) == 0
159 && QString::compare(existingForeignKey.onUpdate, referentialActionToString(column.onUpdate), Qt::CaseInsensitive) == 0
160 && QString::compare(existingForeignKey.onDelete, referentialActionToString(column.onDelete), Qt::CaseInsensitive) == 0) {
164 const auto statements = buildRemoveForeignKeyConstraintStatements(existingForeignKey, tableDescription);
166 qCDebug(AKONADISERVER_LOG) << "Found existing foreign constraint that doesn't match the schema:" << existingForeignKey.name
181 const auto statements = buildRemoveForeignKeyConstraintStatements(existingForeignKey, tableDescription);
183 qCDebug(AKONADISERVER_LOG) << "Found unexpected foreign key constraint:" << existingForeignKey.name << existingForeignKey.column
199 const QString indexName = QStringLiteral("%1_%2").arg(tableDescription.name, indexDescription.name);
299 if (col.type == QLatin1String("QDateTime") && value == QLatin1String("QDateTime::currentDateTimeUtc()")) {
307 QString DbInitializer::buildAddColumnStatement(const TableDescription &tableDescription, const ColumnDescription &columnDescription) const
309 return QStringLiteral("ALTER TABLE %1 ADD COLUMN %2").arg(tableDescription.name, buildColumnStatement(columnDescription, tableDescription));
312 QString DbInitializer::buildCreateIndexStatement(const TableDescription &tableDescription, const IndexDescription &indexDescription) const
314 const QString indexName = QStringLiteral("%1_%2").arg(tableDescription.name, indexDescription.name);
329 .arg(indexDescription.isUnique ? QStringLiteral("UNIQUE") : QString(), indexName, tableDescription.name, columns.join(QLatin1Char(',')));
332 QStringList DbInitializer::buildAddForeignKeyConstraintStatements(const TableDescription &table, const ColumnDescription &column) const
339 QStringList DbInitializer::buildRemoveForeignKeyConstraintStatements(const DbIntrospector::ForeignKey &fk, const TableDescription &table) const
346 QString DbInitializer::buildReferentialAction(ColumnDescription::ReferentialAction onUpdate, ColumnDescription::ReferentialAction onDelete)
348 return QLatin1String("ON UPDATE ") + referentialActionToString(onUpdate) + QLatin1String(" ON DELETE ") + referentialActionToString(onDelete);
A helper class that describes a column of a table for the DbInitializer.
Definition: schematypes.h:32
QString number(int n, int base)
QString fromUtf8(const char *str, int size)
CaseInsensitive
A helper class that describes the relation between two tables for the DbInitializer.
Definition: schematypes.h:107
Type type(const QSqlDatabase &db)
Returns the type of the given database object.
Definition: dbtype.cpp:11
A helper class that describes indexes of a table for the DbInitializer.
Definition: schematypes.h:64
QString errorMsg() const
Returns the textual description of an occurred error.
Definition: dbinitializer.cpp:212
int count(const T &value) const const
A structure describing an existing foreign key.
Definition: dbintrospector.h:30
QDateTime currentDateTimeUtc()
void push_back(const T &value)
static QString buildPrimaryKeyStatement(const TableDescription &table)
Use for multi-column primary keys during table creation.
Definition: dbinitializer.cpp:366
virtual QStringList buildAddForeignKeyConstraintStatements(const TableDescription &table, const ColumnDescription &column) const
Returns an SQL statements to add a foreign key constraint to an existing column column.
Definition: dbinitializer.cpp:332
void reserve(int alloc)
static DbInitializer::Ptr createInstance(const QSqlDatabase &database, Schema *schema=nullptr)
Returns an initializer instance for a given backend.
Definition: dbinitializer.cpp:26
static DbIntrospector::Ptr createInstance(const QSqlDatabase &database)
Returns an introspector instance for a given database.
Definition: dbintrospector.cpp:21
virtual QStringList buildRemoveForeignKeyConstraintStatements(const DbIntrospector::ForeignKey &fk, const TableDescription &table) const
Returns an SQL statements to remove the foreign key constraint fk from table table.
Definition: dbinitializer.cpp:339
TableDescription constructed based on RelationDescription.
Definition: schematypes.h:122
virtual QVector< TableDescription > tables()=0
List of tables in the schema.
bool isEmpty() const const
A helper class that describes a table for the DbInitializer.
Definition: schematypes.h:92
bool isEmpty() const const
QList::const_iterator cend() const const
virtual QString sqlType(const ColumnDescription &col, int size) const
Overwrite in backend-specific sub-classes to return the SQL type for a given C++ type.
Definition: dbinitializer.cpp:267
QString join(const QString &separator) const const
DbInitializer(const QSqlDatabase &database)
Creates a new database initializer.
Definition: dbinitializer.cpp:47
virtual QString buildCreateTableStatement(const TableDescription &tableDescription) const =0
Returns a backend-specific CREATE TABLE SQL query describing given table.
QString arg(qlonglong a, int fieldWidth, int base, QChar fillChar) const const
unsigned int version()
QList::const_iterator cbegin() const const
void clear()
virtual QVector< RelationDescription > relations()=0
List of relations (N:M helper tables) in the schema.
int compare(const QString &other, Qt::CaseSensitivity cs) const const
bool updateIndexesAndConstraints()
Checks and creates missing indexes.
Definition: dbinitializer.cpp:217
QString driverName() const const
virtual QString sqlValue(const ColumnDescription &col, const QString &value) const
Overwrite in backend-specific sub-classes to return the SQL value for a given C++ value.
Definition: dbinitializer.cpp:297
A helper class that describes the predefined data of a table for the DbInitializer.
Definition: schematypes.h:78
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Fri Jan 27 2023 07:39:51 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006
Documentation copyright © 1996-2023 The KDE developers.
Generated on Fri Jan 27 2023 07:39:51 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006
KDE's Doxygen guidelines are available online.