From 19dd73e3fa483c4f96cc1cd2dc80200cec9fba9b Mon Sep 17 00:00:00 2001 From: EndrII Date: Sat, 13 Jan 2024 11:47:27 +0100 Subject: [PATCH] fix db and tets of database --- src/db/src/private/record.cpp | 14 ++++++++++---- src/db/src/private/secretdatabase.cpp | 7 ++++--- src/db/src/public/SecretDB/idatabase.cpp | 3 +-- tests/units/dbtest.cpp | 14 ++++++++++---- 4 files changed, 25 insertions(+), 13 deletions(-) diff --git a/src/db/src/private/record.cpp b/src/db/src/private/record.cpp index 6b19aab..3881119 100644 --- a/src/db/src/private/record.cpp +++ b/src/db/src/private/record.cpp @@ -32,7 +32,7 @@ QString Record::table() const { QH::PKG::DBVariantMap Record::variantMap() const { return { - {"hash", {_hash, QH::PKG::MemberType::Unique}}, + {"hash", {_hash, QH::PKG::MemberType::PrimaryKey}}, {"alias", {_alias, static_cast(static_cast(QH::PKG::MemberType::InsertUpdate) | static_cast(QH::PKG::MemberType::Unique))}}, {"data", {_data, QH::PKG::MemberType::Insert}} @@ -41,11 +41,17 @@ QH::PKG::DBVariantMap Record::variantMap() const { } QString Record::primaryKey() const { - return "hash"; + if (_hash.size()) + return "hash"; + + return "alias"; } QVariant Record::primaryValue() const { - return _hash; + if (_hash.size()) + return _hash; + + return _alias; } const QString &Record::getAlias() const { @@ -70,7 +76,7 @@ const QByteArray &Record::getData() const { const QByteArray &Record::setData(const QByteArray &newData) { _data = newData; - setHash(QCryptographicHash::hash(_data, QCryptographicHash::Sha256)); + setHash(QCryptographicHash::hash(_data, QCryptographicHash::Sha256).toBase64(QByteArray::Base64UrlEncoding)); return getHash(); } diff --git a/src/db/src/private/secretdatabase.cpp b/src/db/src/private/secretdatabase.cpp index 2d6ae72..5b627c0 100644 --- a/src/db/src/private/secretdatabase.cpp +++ b/src/db/src/private/secretdatabase.cpp @@ -6,6 +6,7 @@ //# #include "secretdatabase.h" +#include "record.h" #include #include #include @@ -26,16 +27,16 @@ SecretDataBase::SecretDataBase() { QSharedPointer SecretDataBase::getRecordByAlias(const QString &alias, bool ifNotExistsCreate) { - + return getById(alias, &Record::setAlias, ifNotExistsCreate); } QSharedPointer SecretDataBase::getRecordByHash(const QByteArray &hash, bool ifNotExistsCreate) { - + return getById(hash, &Record::setHash, ifNotExistsCreate); } bool SecretDataBase::saveRecord(const QSharedPointer &record) { - + return db()->replaceObject(record.staticCast(), true); } } diff --git a/src/db/src/public/SecretDB/idatabase.cpp b/src/db/src/public/SecretDB/idatabase.cpp index c12d972..54cf463 100644 --- a/src/db/src/public/SecretDB/idatabase.cpp +++ b/src/db/src/public/SecretDB/idatabase.cpp @@ -8,8 +8,7 @@ #include "idatabase.h" namespace DBSecret { -IDataBase::IDataBase() -{ +IDataBase::IDataBase() { } } diff --git a/tests/units/dbtest.cpp b/tests/units/dbtest.cpp index 4cfba5e..1feceb4 100644 --- a/tests/units/dbtest.cpp +++ b/tests/units/dbtest.cpp @@ -7,6 +7,7 @@ #include "dbtest.h" +#include "heart.h" #include DBTest::DBTest() { @@ -18,6 +19,7 @@ DBTest::~DBTest() { } void DBTest::test() { + QH::init(); DBSecret::init(); auto database = DBSecret::database(); @@ -29,7 +31,7 @@ void DBTest::test() { QSharedPointer result; QVERIFY2((result = database->getRecordByAlias("test", true)), "must creat a new empty record"); - QVERIFY2(database->getRecordByAlias("test"), + QVERIFY2(!database->getRecordByAlias("test"), "still should be empty because the getRecordByAlias with creation option do not save object into database"); QVERIFY2(result->getAlias() == "test", "verify alias"); @@ -39,7 +41,7 @@ void DBTest::test() { auto dataHash = result->setData("secret"); QVERIFY2(result->getAlias() == "test", "verify configured record"); - QVERIFY2(result->getData() == "test", "verify configured record"); + QVERIFY2(result->getData() == "secret", "verify configured record"); QVERIFY2(result->getHash() == QCryptographicHash::hash("secret", QCryptographicHash::Sha256).toBase64(QByteArray::Base64UrlEncoding), "verify configured record"); @@ -50,9 +52,13 @@ void DBTest::test() { auto result2 = database->getRecordByAlias("test"); - QVERIFY2(result2.data() == result.data(), "should be some as a prev object"); + QVERIFY2(result2->getAlias() == result->getAlias(), "should be some as a prev object"); + QVERIFY2(result2->getHash() == result->getHash(), "should be some as a prev object"); + QVERIFY2(result2->getData() == result->getData(), "should be some as a prev object"); result2 = database->getRecordByHash(dataHash); - QVERIFY2(result2.data() == result.data(), "should be some as a prev object"); + QVERIFY2(result2->getAlias() == result->getAlias(), "should be some as a prev object"); + QVERIFY2(result2->getHash() == result->getHash(), "should be some as a prev object"); + QVERIFY2(result2->getData() == result->getData(), "should be some as a prev object"); }