fix db and tets of database

This commit is contained in:
Andrei Yankovich 2024-01-13 11:47:27 +01:00
parent e846a4b104
commit 19dd73e3fa
4 changed files with 25 additions and 13 deletions

View File

@ -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<QH::PKG::MemberType>(static_cast<int>(QH::PKG::MemberType::InsertUpdate) |
static_cast<int>(QH::PKG::MemberType::Unique))}},
{"data", {_data, QH::PKG::MemberType::Insert}}
@ -41,11 +41,17 @@ QH::PKG::DBVariantMap Record::variantMap() const {
}
QString Record::primaryKey() const {
if (_hash.size())
return "hash";
return "alias";
}
QVariant Record::primaryValue() const {
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();
}

View File

@ -6,6 +6,7 @@
//#
#include "secretdatabase.h"
#include "record.h"
#include <QCryptographicHash>
#include <dbobjectsrequest.h>
#include <sqldb.h>
@ -26,16 +27,16 @@ SecretDataBase::SecretDataBase() {
QSharedPointer<iRecord>
SecretDataBase::getRecordByAlias(const QString &alias, bool ifNotExistsCreate) {
return getById<Record>(alias, &Record::setAlias, ifNotExistsCreate);
}
QSharedPointer<iRecord>
SecretDataBase::getRecordByHash(const QByteArray &hash, bool ifNotExistsCreate) {
return getById<Record>(hash, &Record::setHash, ifNotExistsCreate);
}
bool SecretDataBase::saveRecord(const QSharedPointer<iRecord> &record) {
return db()->replaceObject(record.staticCast<Record>(), true);
}
}

View File

@ -8,8 +8,7 @@
#include "idatabase.h"
namespace DBSecret {
IDataBase::IDataBase()
{
IDataBase::IDataBase() {
}
}

View File

@ -7,6 +7,7 @@
#include "dbtest.h"
#include "heart.h"
#include <SecretDB.h>
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<DBSecret::iRecord> 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");
}