#ifndef ALARM_MANAGER_H #define ALARM_MANAGER_H #include #include #include #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> getAllAlarms(); /** * ¸ù¾Ý±¨¾¯ID²éѯ±¨¾¯ * @param id ±¨¾¯ID * @return °üº¬É¸Ñ¡ºó±¨¾¯Êý¾ÝµÄ¶þά×Ö·û´®ÏòÁ¿ */ std::vector> getAlarmsById(const std::string& id); /** * ¸ù¾ÝÃèÊö²éѯ±¨¾¯ * @param description ±¨¾¯ÃèÊöµÄɸѡÌõ¼þ * @return °üº¬É¸Ñ¡ºó±¨¾¯Êý¾ÝµÄ¶þά×Ö·û´®ÏòÁ¿ */ std::vector> getAlarmsByDescription(const std::string& description); /** * ¸ù¾Ýʱ¼ä·¶Î§²éѯ±¨¾¯ * @param startTime Æðʼʱ¼ä * @param endTime ½áÊøÊ±¼ä * @return °üº¬²éѯ½á¹ûµÄ¶þά×Ö·û´®ÏòÁ¿ */ std::vector> getAlarmsByTimeRange( const std::string& startTime, const std::string& endTime); /** * ¸ù¾ÝIDºÍʱ¼ä·¶Î§²éѯ±¨¾¯ * @param id ±¨¾¯ID * @param startTime Æðʼʱ¼ä * @param endTime ½áÊøÊ±¼ä * @return °üº¬²éѯ½á¹ûµÄ¶þά×Ö·û´®ÏòÁ¿ */ std::vector> getAlarmsByIdAndTimeRange( const std::string& id, const std::string& startTime, const std::string& endTime); /** * »ñÈ¡±¨¾¯Êý¾Ý * @param startPosition ÆðʼλÖà * @param count »ñÈ¡µÄ¼Ç¼ÊýÁ¿ * @return °üº¬±¨¾¯Êý¾ÝµÄ¶þά×Ö·û´®ÏòÁ¿ */ std::vector> getAlarms(int startPosition, int count); /** * »ñȡɸѡºóµÄ±¨¾¯Êý¾Ý * @param description ±¨¾¯ÃèÊöµÄɸѡÌõ¼þ * @param startTime Æðʼʱ¼äɸѡÌõ¼þ * @param endTime ½áÊøÊ±¼äɸѡÌõ¼þ * @param pageNumber Ò³Âë * @param pageSize ÿҳµÄ¼Ç¼Êý * @return °üº¬É¸Ñ¡ºó±¨¾¯Êý¾ÝµÄ¶þά×Ö·û´®ÏòÁ¿ */ std::vector> 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