uonedb-qt team mailing list archive
-
uonedb-qt team
-
Mailing list archive
-
Message #00078
[Merge] lp:~kalikiana/u1db-qt/keys into lp:u1db-qt
Christian Dywan has proposed merging lp:~kalikiana/u1db-qt/keys into lp:u1db-qt.
Commit message:
Expose index keys declaratively and unit test it
Requested reviews:
U1DB Qt developers (uonedb-qt)
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot)
For more details, see:
https://code.launchpad.net/~kalikiana/u1db-qt/keys/+merge/159180
Expose index keys declaratively and unit test it
--
https://code.launchpad.net/~kalikiana/u1db-qt/keys/+merge/159180
Your team U1DB Qt developers is requested to review the proposed merge of lp:~kalikiana/u1db-qt/keys into lp:u1db-qt.
=== modified file 'src/index.cpp'
--- src/index.cpp 2013-04-12 12:26:52 +0000
+++ src/index.cpp 2013-04-16 15:29:25 +0000
@@ -150,6 +150,17 @@
}
/*!
+ Returns the keys, as Database::getIndexKeys() would.
+ */
+QStringList
+Index::getKeys()
+{
+ if (m_database)
+ return m_database->getIndexKeys(m_name);
+ return QStringList();
+}
+
+/*!
* \brief Index::generateIndexResults
*
* Iterates through the documents stored in the database and creates the list of results based on the Index expressions.
=== modified file 'src/index.h'
--- src/index.h 2013-04-12 12:26:52 +0000
+++ src/index.h 2013-04-16 15:29:25 +0000
@@ -37,6 +37,7 @@
#endif
Q_PROPERTY(QString name READ getName WRITE setName NOTIFY nameChanged)
Q_PROPERTY(QStringList expression READ getExpression WRITE setExpression NOTIFY expressionChanged)
+ Q_PROPERTY(QStringList keys READ getKeys NOTIFY keysChanged)
public:
Index(QObject* parent = 0);
~Index() { }
@@ -47,6 +48,8 @@
void setName(const QString& name);
QStringList getExpression();
void setExpression(QStringList expression);
+ QStringList getKeys();
+
void generateIndexResults();
QStringList appendResultsFromMap(QStringList fieldsList, QVariantMap current_section, QString current_field);
QStringList getFieldsFromList(QStringList fieldsList, QVariantList current_section, QString current_field);
@@ -58,6 +61,7 @@
void databaseChanged(Database* database);
void nameChanged(const QString& name);
void expressionChanged(QVariant expression);
+ void keysChanged(QVariant expression);
// Either of the above has changed:
void dataInvalidated();
void dataIndexed();
=== modified file 'tests/test-database.cpp'
--- tests/test-database.cpp 2013-02-14 11:33:58 +0000
+++ tests/test-database.cpp 2013-04-16 15:29:25 +0000
@@ -21,6 +21,8 @@
#include <QObject>
#include "database.h"
+#include "index.h"
+#include "query.h"
QT_USE_NAMESPACE_U1DB
@@ -44,6 +46,15 @@
QTemporaryFile file;
db.setPath(file.fileName());
QCOMPARE(db.getPath(), file.fileName());
+
+ Index index;
+ index.setDatabase(&db);
+ index.setName("py-phone-number");
+ index.setExpression(QStringList("managers.phone_number"));
+
+ Query query;
+ query.setIndex(&index);
+ query.setQuery("*");
}
void cleanupTestCase()
=== modified file 'tests/tst_database.qml'
--- tests/tst_database.qml 2013-04-12 11:50:24 +0000
+++ tests/tst_database.qml 2013-04-16 15:29:25 +0000
@@ -52,12 +52,11 @@
defaults: { "eggs": "spam" }
}
-
U1db.Index {
id: myIndex
database: myDatabase
- name: 'by-title-field'
- expression: ['title', 'bool(field)']
+ name: 'by-phone-number'
+ expression: ['managers.phone_number']
}
U1db.Query {
@@ -149,7 +148,9 @@
spyContentsChanged.wait()
}
- function test_4_putIndex () {
+ function test_4_indexKeys () {
+ var path = myDatabase.path
+ myDatabase.path = ':memory:'
myDatabase.putIndex("by-phone-number", ["managers.phone_number"])
compare(myDatabase.getIndexExpressions('by-phone-number'), ["managers.phone_number"])
myDatabase.putDoc({ 'managers': [
@@ -157,6 +158,21 @@
{ 'name': 'Rob', 'phone_number': '54321' },
] })
// FIXME compare(myDatabase.getIndexKeys('by-phone-number'), ['12345', '54321'])
+ myDatabase.path = path
+
+ myDatabase.path = ':memory:'
+ myDatabase.putDoc({ 'managers': [
+ { 'name': 'Mary', 'phone_number': '12345' },
+ { 'name': 'Rob', 'phone_number': '54321' },
+ ] })
+ // FIXME compare(myIndex.keys, ['12345', '54321'])
+ compare(myIndex.keys, myDatabase.getIndexKeys(myIndex.name))
+ myDatabase.path = path
+ }
+
+ function test_5_queryResults () {
+ // FIXME compare(allQuery.rowCount, 2)
+ // FIXME compare(defaultAllQuery.rowCount, defaultQuery.rowCount)
}
function test_6_fillDocument () {
Follow ups