Skip to content

Commit

Permalink
Add support for opening a test mysql database.
Browse files Browse the repository at this point in the history
  • Loading branch information
linuxdude42 committed Nov 28, 2021
1 parent c66f98c commit 734eb7b
Show file tree
Hide file tree
Showing 5 changed files with 41 additions and 7 deletions.
2 changes: 2 additions & 0 deletions mythtv/configure
Expand Up @@ -1994,6 +1994,7 @@ MYTHTV_CONFIG_LIST='
qtwebkit
qtscript
qtdbus
sqlite3
taglib
v4l2
v4l2prime
Expand Down Expand Up @@ -5608,6 +5609,7 @@ if ! disabled network; then
fi
fi

use_pkg_config sqlite3 sqlite3 "sqlite3.h" sqlite3_load_extension && enable sqlite3
require_pkg_config samplerate samplerate samplerate.h src_get_version -lm

# required to compile inline sse with some compilers
Expand Down
26 changes: 26 additions & 0 deletions mythtv/libs/libmythbase/mythdb.cpp
Expand Up @@ -8,12 +8,15 @@
#include <QHash>
#include <QDir>
#include <QRegularExpression>
#include <QStandardPaths>

#include "mythconfig.h"
#include "mythdb.h"
#include "mythdbcon.h"
#include "mythlogging.h"
#include "mythdirs.h"
#include "mythcorecontext.h"
#include "mythmiscutil.h"

static MythDB *mythdb = nullptr;
static QMutex dbLock;
Expand Down Expand Up @@ -53,6 +56,29 @@ void DestroyMythDB(void)
MythDB::destroyMythDB();
}

MythDB *GetMythTestDB(const QString& testname)
{
auto * db = MythDB::getMythDB();

DatabaseParams params {};
params.m_dbHostName = "localhost";
params.m_dbHostPing = false;
#if CONFIG_DEBUGTYPE
params.m_dbName =
QStandardPaths::writableLocation(QStandardPaths::TempLocation) +
QDir::separator() +
QString("mythtv_%1.%2.sqlite3")
.arg(testname).arg(MythRandom(),8,16,QLatin1Char('0'));
#else
Q_UNUSED(testname);
params.m_dbName = ":memory:";
#endif
params.m_dbType = "QSQLITE";
db->SetDatabaseParams(params);

return db;
}

struct SingleSetting
{
QString m_key;
Expand Down
1 change: 1 addition & 0 deletions mythtv/libs/libmythbase/mythdb.h
Expand Up @@ -99,5 +99,6 @@ class MBASE_PUBLIC MythDB

MBASE_PUBLIC MythDB *GetMythDB();
MBASE_PUBLIC void DestroyMythDB();
MBASE_PUBLIC MythDB *GetMythTestDB(const QString& testname);

#endif
16 changes: 10 additions & 6 deletions mythtv/libs/libmythbase/mythdbcon.cpp
Expand Up @@ -73,17 +73,19 @@ bool TestDatabase(const QString& dbHostName,
return ret;
}

MSqlDatabase::MSqlDatabase(QString name)
: m_name(std::move(name))
MSqlDatabase::MSqlDatabase(QString name, QString driver)
: m_name(std::move(name)), m_driver(std::move(driver))
{
if (!QSqlDatabase::isDriverAvailable("QMYSQL"))
if (!QSqlDatabase::isDriverAvailable(m_driver))
{
LOG(VB_FLUSH, LOG_CRIT, "FATAL: Unable to load the QT mysql driver, is it installed?");
LOG(VB_FLUSH, LOG_CRIT,
QString("FATAL: Unable to load the QT %1 driver, is it installed?")
.arg(m_driver));
exit(GENERIC_EXIT_DB_ERROR); // Exits before we can process the log queue
//return;
}

m_db = QSqlDatabase::addDatabase("QMYSQL", m_name);
m_db = QSqlDatabase::addDatabase(m_driver, m_name);
LOG(VB_DATABASE, LOG_INFO, "Database object created: " + m_name);

if (!m_db.isValid() || m_db.isOpenError())
Expand Down Expand Up @@ -316,7 +318,9 @@ MSqlDatabase *MDBManager::popConnection(bool reuse)
DBList &list = m_pool[QThread::currentThread()];
if (list.isEmpty())
{
db = new MSqlDatabase("DBManager" + QString::number(m_nextConnID++));
DatabaseParams params = GetMythDB()->GetDatabaseParams();
db = new MSqlDatabase("DBManager" + QString::number(m_nextConnID++),
params.m_dbType);
++m_connCount;
LOG(VB_DATABASE, LOG_INFO,
QString("New DB connection, total: %1").arg(m_connCount));
Expand Down
3 changes: 2 additions & 1 deletion mythtv/libs/libmythbase/mythdbcon.h
Expand Up @@ -27,7 +27,7 @@ class MSqlDatabase
friend class MDBManager;
friend class MSqlQuery;
public:
explicit MSqlDatabase(QString name);
explicit MSqlDatabase(QString name, QString driver = "QMYSQL");
~MSqlDatabase(void);

bool OpenDatabase(bool skipdb = false);
Expand All @@ -43,6 +43,7 @@ class MSqlDatabase

private:
QString m_name;
QString m_driver;
QSqlDatabase m_db;
QDateTime m_lastDBKick;
DatabaseParams m_dbparms;
Expand Down

0 comments on commit 734eb7b

Please sign in to comment.