00001 #ifndef DBUTIL_H_
00002 #define DBUTIL_H_
00003
00004 #include <QStringList>
00005
00006 #include "mythbaseexp.h"
00007 #include "mythdbcon.h"
00008
00009 enum MythDBBackupStatus
00010 {
00011 kDB_Backup_Unknown = 0,
00012 kDB_Backup_Failed,
00013 kDB_Backup_Completed,
00014 kDB_Backup_Empty_DB,
00015 kDB_Backup_Disabled
00016 };
00017
00030 class MBASE_PUBLIC DBUtil
00031 {
00032 public:
00033 DBUtil();
00034 ~DBUtil() { }
00035
00036 QString GetDBMSVersion(void);
00037 int CompareDBMSVersion(int major, int minor=0, int point=0);
00038
00039 MythDBBackupStatus BackupDB(QString &filename,
00040 bool disableRotation = false);
00041 static bool CheckTables(const bool repair = false,
00042 const QString options = "QUICK");
00043 static bool RepairTables(const QStringList &tables);
00044
00045 static bool IsNewDatabase(void);
00046 static bool IsBackupInProgress(void);
00047 static int CountClients(void);
00048
00049 static bool TryLockSchema(MSqlQuery &, uint timeout_secs);
00050 static void UnlockSchema(MSqlQuery &);
00051
00052 static const int kUnknownVersionNumber;
00053
00054 protected:
00055 static bool CreateTemporaryDBConf(
00056 const QString &privateinfo, QString &filename);
00057
00058 private:
00059 bool QueryDBMSVersion(void);
00060 bool ParseDBMSVersion(void);
00061
00062 static QStringList GetTables(const QStringList &engines = QStringList());
00063 static QStringList CheckRepairStatus(MSqlQuery &query);
00064
00065 QString CreateBackupFilename(QString prefix = "mythconverg",
00066 QString extension = ".sql");
00067 QString GetBackupDirectory();
00068
00069 bool DoBackup(const QString &backupScript, QString &filename,
00070 bool disableRotation = false);
00071 bool DoBackup(QString &filename);
00072
00073 QString m_versionString;
00074
00075 int m_versionMajor;
00076 int m_versionMinor;
00077 int m_versionPoint;
00078
00079 };
00080
00081 #endif