ImagingTools Core SDK
CDatabaseAutomaticBackupComp.h
1// SPDX-License-Identifier: LGPL-2.1-or-later OR GPL-2.0-or-later OR GPL-3.0-or-later OR LicenseRef-ImtCore-Commercial
2#pragma once
3
4
5// Qt includes
6#include <QtCore/QDir>
7#include <QtCore/QTimer>
8#include <QtCore/QFutureWatcher>
9
10// ACF includes
11#include <icomp/CComponentBase.h>
12#include <ifile/IFileNameParam.h>
13#include <ilog/TLoggerCompWrap.h>
14#include <ifile/IFilePersistence.h>
15#include <ifile/IRelativeFilePath.h>
16#include <iprm/IParamsSet.h>
17
18// ImtCore includes
19#include <imtdb/IDatabaseLoginSettings.h>
20#include <imtapp/IBackupSettings.h>
21
22
23namespace imtdb
24{
25
26
27class CDatabaseAutomaticBackupComp:
28 public QObject,
29 public ilog::CLoggerComponentBase
30{
31 Q_OBJECT
32public:
33 typedef ilog::CLoggerComponentBase BaseClass;
34
35 I_BEGIN_COMPONENT(CDatabaseAutomaticBackupComp);
36 I_ASSIGN(m_databaseLoginSettingsCompPtr, "DatabaseLoginSettings", "Database login settings", false, "DatabaseLoginSettings");
37 I_ASSIGN(m_backupSettingsCompPtr, "BackupSettings", "Backup settings", false, "BackupSettings");
38 I_ASSIGN(m_programAttrPtr, "Program", "Program name", true, "Program");
39 I_ASSIGN(m_checkIntervalAttrPtr, "CheckInterval", "Interval for backup timer (in msec)", true, 60000);
40 I_ASSIGN(m_maxBackupCountAttrPtr, "MaxBackupCount", "Maximum number of backups, if -1 - unlimited", true, 20);
41 I_ASSIGN(m_backupOnStartAttrPtr, "BackupOnStart", "Backup on start", true, true);
42 I_END_COMPONENT;
43
44protected:
45 // reimplemented (icomp::CComponentBase)
46 virtual void OnComponentCreated() override;
47 virtual void OnComponentDestroyed() override;
48
49private:
50 bool Backup();
51 void CleanupOldBackups(const QString& backupFolderPath);
52 QStringList GetPrevBackupsList(const QString& backupFolderPath, const QDir::SortFlags& sortFlags = QDir::Time | QDir::Reversed);
53
54private Q_SLOTS:
55 void OnTimeout();
56 void OnBackupFinished();
57
58protected:
59 QTimer m_timer;
60
61protected:
62 I_REF(imtdb::IDatabaseLoginSettings, m_databaseLoginSettingsCompPtr);
63 I_REF(iprm::IParamsSet, m_backupSettingsCompPtr);
64 I_ATTR(QString, m_programAttrPtr);
65 I_ATTR(int, m_checkIntervalAttrPtr);
66 I_ATTR(int, m_maxBackupCountAttrPtr);
67 I_ATTR(bool, m_backupOnStartAttrPtr);
68
69private:
70 QDateTime m_lastBackupDateTime;
71
72 QFutureWatcher<bool> m_backupWatcher;
73};
74
75
76} // namespace imtdb
77
78
Configuration interface for database connection credentials and parameters.
Database Abstraction Layer (ORM Framework) for ImtCore applications.