mirror of
https://bitbucket.org/smil3y/katie.git
synced 2025-02-26 20:03:13 +00:00
203 lines
5.2 KiB
C++
203 lines
5.2 KiB
C++
/****************************************************************************
|
|
**
|
|
** Copyright (C) 2015 The Qt Company Ltd.
|
|
** Contact: http://www.qt.io/licensing/
|
|
**
|
|
** This file is part of the QtSql module of the Qt Toolkit.
|
|
**
|
|
** $QT_BEGIN_LICENSE:LGPL$
|
|
** Commercial License Usage
|
|
** Licensees holding valid commercial Qt licenses may use this file in
|
|
** accordance with the commercial license agreement provided with the
|
|
** Software or, alternatively, in accordance with the terms contained in
|
|
** a written agreement between you and The Qt Company. For licensing terms
|
|
** and conditions see http://www.qt.io/terms-conditions. For further
|
|
** information use the contact form at http://www.qt.io/contact-us.
|
|
**
|
|
** GNU Lesser General Public License Usage
|
|
** Alternatively, this file may be used under the terms of the GNU Lesser
|
|
** General Public License version 2.1 or version 3 as published by the Free
|
|
** Software Foundation and appearing in the file LICENSE.LGPLv21 and
|
|
** LICENSE.LGPLv3 included in the packaging of this file. Please review the
|
|
** following information to ensure the GNU Lesser General Public License
|
|
** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
|
|
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
|
**
|
|
** As a special exception, The Qt Company gives you certain additional
|
|
** rights. These rights are described in The Qt Company LGPL Exception
|
|
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
|
**
|
|
** GNU General Public License Usage
|
|
** Alternatively, this file may be used under the terms of the GNU
|
|
** General Public License version 3.0 as published by the Free Software
|
|
** Foundation and appearing in the file LICENSE.GPL included in the
|
|
** packaging of this file. Please review the following information to
|
|
** ensure the GNU General Public License version 3.0 requirements will be
|
|
** met: http://www.gnu.org/copyleft/gpl.html.
|
|
**
|
|
** $QT_END_LICENSE$
|
|
**
|
|
****************************************************************************/
|
|
|
|
#include "qsqlindex.h"
|
|
|
|
#include "qsqlfield.h"
|
|
#include "qstringlist.h"
|
|
|
|
QT_BEGIN_NAMESPACE
|
|
|
|
/*!
|
|
\class QSqlIndex
|
|
\brief The QSqlIndex class provides functions to manipulate and
|
|
describe database indexes.
|
|
|
|
\ingroup database
|
|
\inmodule QtSql
|
|
|
|
An \e index refers to a single table or view in a database.
|
|
Information about the fields that comprise the index can be used
|
|
to generate SQL statements.
|
|
*/
|
|
|
|
/*!
|
|
Constructs an empty index using the cursor name \a cursorname and
|
|
index name \a name.
|
|
*/
|
|
|
|
QSqlIndex::QSqlIndex(const QString& cursorname, const QString& name)
|
|
: cursor(cursorname), nm(name)
|
|
{
|
|
}
|
|
|
|
/*!
|
|
Constructs a copy of \a other.
|
|
*/
|
|
|
|
QSqlIndex::QSqlIndex(const QSqlIndex& other)
|
|
: QSqlRecord(other), cursor(other.cursor), nm(other.nm), sorts(other.sorts)
|
|
{
|
|
}
|
|
|
|
/*!
|
|
Sets the index equal to \a other.
|
|
*/
|
|
|
|
QSqlIndex& QSqlIndex::operator=(const QSqlIndex& other)
|
|
{
|
|
cursor = other.cursor;
|
|
nm = other.nm;
|
|
sorts = other.sorts;
|
|
QSqlRecord::operator=(other);
|
|
return *this;
|
|
}
|
|
|
|
/*!
|
|
Destroys the object and frees any allocated resources.
|
|
*/
|
|
|
|
QSqlIndex::~QSqlIndex()
|
|
{
|
|
|
|
}
|
|
|
|
/*!
|
|
Sets the name of the index to \a name.
|
|
*/
|
|
|
|
void QSqlIndex::setName(const QString& name)
|
|
{
|
|
nm = name;
|
|
}
|
|
|
|
/*!
|
|
\fn QString QSqlIndex::name() const
|
|
|
|
Returns the name of the index.
|
|
*/
|
|
|
|
/*!
|
|
Appends the field \a field to the list of indexed fields. The
|
|
field is appended with an ascending sort order.
|
|
*/
|
|
|
|
void QSqlIndex::append(const QSqlField& field)
|
|
{
|
|
append(field, false);
|
|
}
|
|
|
|
/*!
|
|
\overload
|
|
|
|
Appends the field \a field to the list of indexed fields. The
|
|
field is appended with an ascending sort order, unless \a desc is
|
|
true.
|
|
*/
|
|
|
|
void QSqlIndex::append(const QSqlField& field, bool desc)
|
|
{
|
|
sorts.append(desc);
|
|
QSqlRecord::append(field);
|
|
}
|
|
|
|
|
|
/*!
|
|
Returns true if field \a i in the index is sorted in descending
|
|
order; otherwise returns false.
|
|
*/
|
|
|
|
bool QSqlIndex::isDescending(int i) const
|
|
{
|
|
if (i >= 0 && i < sorts.size())
|
|
return sorts[i];
|
|
return false;
|
|
}
|
|
|
|
/*!
|
|
If \a desc is true, field \a i is sorted in descending order.
|
|
Otherwise, field \a i is sorted in ascending order (the default).
|
|
If the field does not exist, nothing happens.
|
|
*/
|
|
|
|
void QSqlIndex::setDescending(int i, bool desc)
|
|
{
|
|
if (i >= 0 && i < sorts.size())
|
|
sorts[i] = desc;
|
|
}
|
|
|
|
|
|
/*! \internal
|
|
|
|
Creates a string representing the field number \a i using prefix \a
|
|
prefix. If \a verbose is true, ASC or DESC is included in the field
|
|
description if the field is sorted in ASCending or DESCending order.
|
|
*/
|
|
|
|
QString QSqlIndex::createField(int i, const QString& prefix, bool verbose) const
|
|
{
|
|
QString f;
|
|
if (!prefix.isEmpty())
|
|
f += prefix + QLatin1Char('.');
|
|
f += field(i).name();
|
|
if (verbose)
|
|
f += QLatin1Char(' ') + QString((isDescending(i)
|
|
? QLatin1String("DESC") : QLatin1String("ASC")));
|
|
return f;
|
|
}
|
|
|
|
/*!
|
|
\fn QString QSqlIndex::cursorName() const
|
|
|
|
Returns the name of the cursor which the index is associated with.
|
|
*/
|
|
|
|
|
|
/*!
|
|
Sets the name of the cursor that the index is associated with to
|
|
\a cursorName.
|
|
*/
|
|
void QSqlIndex::setCursorName(const QString& cursorName)
|
|
{
|
|
cursor = cursorName;
|
|
}
|
|
|
|
QT_END_NAMESPACE
|