#ifndef ALARM_MANAGER_H
|
#define ALARM_MANAGER_H
|
|
#include <string>
|
#include <vector>
|
#include <mutex>
|
#include "Database.h"
|
|
class AlarmManager {
|
public:
|
/**
|
* »ñÈ¡µ¥ÀýʵÀý
|
* @return AlarmManagerʵÀýµÄÒýÓÃ
|
*/
|
static AlarmManager& getInstance();
|
|
/**
|
* ÉèÖÃÊý¾Ý¿âÁ¬½Ó
|
* @param db Êý¾Ý¿âÁ¬½ÓµÄÖ¸Õë
|
*/
|
void setDatabase(BL::Database* db);
|
|
/**
|
* ³õʼ»¯±¨¾¯±í
|
* @return ³É¹¦·µ»Øtrue£¬Ê§°Ü·µ»Øfalse
|
*/
|
bool initializeAlarmTable();
|
|
/**
|
* Ìí¼Ó±¨¾¯
|
* @param id ±¨¾¯ID
|
* @param description ±¨¾¯ÃèÊö
|
* @param startTime ±¨¾¯¿ªÊ¼Ê±¼ä
|
* @param endTime ±¨¾¯½áÊøÊ±¼ä
|
* @return ³É¹¦·µ»Øtrue£¬Ê§°Ü·µ»Øfalse
|
*/
|
bool addAlarm(const std::string& id, const std::string& description, const std::string& startTime, const std::string& endTime);
|
|
/**
|
* ²éѯËùÓб¨¾¯Êý¾Ý
|
* @return °üº¬ËùÓб¨¾¯Êý¾ÝµÄ¶þά×Ö·û´®ÏòÁ¿
|
*/
|
std::vector<std::vector<std::string>> getAllAlarms();
|
|
/**
|
* ¸ù¾Ý±¨¾¯ID²éѯ±¨¾¯
|
* @param id ±¨¾¯ID
|
* @return °üº¬É¸Ñ¡ºó±¨¾¯Êý¾ÝµÄ¶þά×Ö·û´®ÏòÁ¿
|
*/
|
std::vector<std::vector<std::string>> getAlarmsById(const std::string& id);
|
|
/**
|
* ¸ù¾ÝÃèÊö²éѯ±¨¾¯
|
* @param description ±¨¾¯ÃèÊöµÄɸѡÌõ¼þ
|
* @return °üº¬É¸Ñ¡ºó±¨¾¯Êý¾ÝµÄ¶þά×Ö·û´®ÏòÁ¿
|
*/
|
std::vector<std::vector<std::string>> getAlarmsByDescription(const std::string& description);
|
|
/**
|
* ¸ù¾Ýʱ¼ä·¶Î§²éѯ±¨¾¯
|
* @param startTime Æðʼʱ¼ä
|
* @param endTime ½áÊøÊ±¼ä
|
* @return °üº¬²éѯ½á¹ûµÄ¶þά×Ö·û´®ÏòÁ¿
|
*/
|
std::vector<std::vector<std::string>> getAlarmsByTimeRange(
|
const std::string& startTime, const std::string& endTime);
|
|
/**
|
* ¸ù¾ÝIDºÍʱ¼ä·¶Î§²éѯ±¨¾¯
|
* @param id ±¨¾¯ID
|
* @param startTime Æðʼʱ¼ä
|
* @param endTime ½áÊøÊ±¼ä
|
* @return °üº¬²éѯ½á¹ûµÄ¶þά×Ö·û´®ÏòÁ¿
|
*/
|
std::vector<std::vector<std::string>> getAlarmsByIdAndTimeRange(
|
const std::string& id, const std::string& startTime, const std::string& endTime);
|
|
/**
|
* »ñÈ¡±¨¾¯Êý¾Ý
|
* @param startPosition ÆðʼλÖÃ
|
* @param count »ñÈ¡µÄ¼Ç¼ÊýÁ¿
|
* @return °üº¬±¨¾¯Êý¾ÝµÄ¶þά×Ö·û´®ÏòÁ¿
|
*/
|
std::vector<std::vector<std::string>> getAlarms(int startPosition, int count);
|
|
/**
|
* »ñȡɸѡºóµÄ±¨¾¯Êý¾Ý
|
* @param description ±¨¾¯ÃèÊöµÄɸѡÌõ¼þ
|
* @param startTime Æðʼʱ¼äɸѡÌõ¼þ
|
* @param endTime ½áÊøÊ±¼äɸѡÌõ¼þ
|
* @param pageNumber Ò³Âë
|
* @param pageSize ÿҳµÄ¼Ç¼Êý
|
* @return °üº¬É¸Ñ¡ºó±¨¾¯Êý¾ÝµÄ¶þά×Ö·û´®ÏòÁ¿
|
*/
|
std::vector<std::vector<std::string>> getFilteredAlarms(
|
const std::string& description,
|
const std::string& startTime,
|
const std::string& endTime,
|
int pageNumber,
|
int pageSize);
|
|
/**
|
* »ñÈ¡·ûºÏÌõ¼þµÄ±¨¾¯×ÜÊý
|
* @param description ±¨¾¯ÃèÊöµÄɸѡÌõ¼þ
|
* @param startTime Æðʼʱ¼äɸѡÌõ¼þ
|
* @param endTime ½áÊøÊ±¼äɸѡÌõ¼þ
|
* @return ·ûºÏÌõ¼þµÄ±¨¾¯×ÜÊý
|
*/
|
int getTotalAlarmCount(
|
const std::string& description,
|
const std::string& startTime,
|
const std::string& endTime);
|
|
/**
|
* ¸üб¨¾¯½áÊøÊ±¼ä
|
* @param id ±¨¾¯ID
|
* @param description ±¨¾¯ÃèÊö
|
* @param startTime ±¨¾¯¿ªÊ¼Ê±¼ä
|
* @param newEndTime еı¨¾¯½áÊøÊ±¼ä
|
* @return ³É¹¦·µ»Øtrue£¬Ê§°Ü·µ»Øfalse
|
*/
|
bool updateAlarmEndTime(const std::string& id, const std::string& description, const std::string& startTime, const std::string& newEndTime);
|
|
/**
|
* ÇåÀí¾É±¨¾¯
|
* @param daysToKeep ±£ÁôµÄÌìÊý
|
*/
|
void cleanOldAlarms(int daysToKeep = 30);
|
|
private:
|
AlarmManager();
|
~AlarmManager();
|
|
// ½ûÖ¹¿½±´ºÍ¸³Öµ
|
AlarmManager(const AlarmManager&) = delete;
|
AlarmManager& operator=(const AlarmManager&) = delete;
|
|
BL::Database* m_pDB;
|
static std::mutex m_mutex;
|
};
|
|
#endif // ALARM_MANAGER_H
|