#include // qt #include #include #include #include MetaTable::MetaTable(QObject* parent) : DBManager(parent) { setTable("meta"); createTable(QStringList()<<"uuid TEXT"<<"created_at TEXT"); }; QString MetaTable::getUUID() const { QVector results; getRecords(results, QStringList() << "uuid"); for(const auto & entry : std::as_const(results)) { if(!entry["uuid"].toString().isEmpty()) { return entry["uuid"].toString(); } } // create new uuidv5 based on net adapter MAC, save to db and return QString hash; foreach(QNetworkInterface interface, QNetworkInterface::allInterfaces()) { if (!(interface.flags() & QNetworkInterface::IsLoopBack)) { hash = QCryptographicHash::hash(interface.hardwareAddress().toLocal8Bit(),QCryptographicHash::Sha1).toHex(); break; } } const QString newUuid = QUuid::createUuidV5(QUuid(), hash).toString().mid(1, 36); QVariantMap map; map["created_at"] = QDateTime::currentDateTimeUtc().toString(Qt::ISODate); createRecord({{"uuid",newUuid}}, map); return newUuid; }