#ifndef ALARM_COMMON_EVENT_PROCESS_H_
#define ALARM_COMMON_EVENT_PROCESS_H_

#include "bmser_ipc.h"
#include "bmser_dev.h"
#include <sqlite3.h>
#include <stdint.h>

#define EVENT_DB_FILE_PATH   "/app/database/bmser_event.db"
#define WAVE_DB_FILE_PATH   "/app/database/bmserwave.db"
#define NAME_MAX_LEN       64
#define DETAIL_MAX_LEN     512

struct event_table_info
{
	char sn[SN_MAX_LEN];
	char station_guid[NAME_MAX_LEN];
	int cabin_id;
	char system_type[NAME_MAX_LEN];
	char device_type[NAME_MAX_LEN];
	char device_name[NAME_MAX_LEN];
	int main_id;
	int sub_id;
	int event_id;
	char event_name[NAME_MAX_LEN];
	char event_name_en[NAME_MAX_LEN];
	char details[DETAIL_MAX_LEN];
	char details_en[DETAIL_MAX_LEN];
	int status;
	int level;
	int64_t settime;//unix时间戳，通常代表告警的发生时间
	int64_t clrtime;//unix时间戳，通常代表告警的恢复时间
	char created_at[NAME_MAX_LEN];   
	char comfirmed_at[NAME_MAX_LEN]; 
	char operate[DETAIL_MAX_LEN];
	char fun[NAME_MAX_LEN];
	int error_no;
	char handler_user[NAME_MAX_LEN];
	char handler[NAME_MAX_LEN];
	int handler_time;
	char updated_at[NAME_MAX_LEN];
};

extern int g_language;
extern sqlite3 *g_eventdb;
/**
 * @brief       事件处理初始化
 * @return      int
 * @retval      0:正常  !0:错误
 * @par         修改日志:
 * Date                Author     Description           \n
 * 2024-02-18           JHC        创建初始版本          \n
*/
int eventprocess_init();

/**
 * @brief       反初始化
 * @return      void
 * @retval      none
 * @par         修改日志:
 * Date                Author     Description           \n
 * 2024-02-18           JHC        创建初始版本          \n
*/
void eventprocess_deinit();

/**
 * @brief       告警事件消息处理
 * @param[in]   struct ipc_message *msg
 * @return      int
 * @retval      0:正常  !0:错误
 * @par         修改日志:
 * Date                Author     Description           \n
 * 2024-02-18           JHC        创建初始版本          \n
*/
int eventprocess_messaging(struct ipc_message *msg);

/**
 * @brief       查询消息处理
 * @param[in]   struct ipc_message *msg
 * @return      int
 * @retval      0:正常  !0:错误
 * @par         修改日志:
 * Date                Author     Description           \n
 * 2024-02-18           JHC        创建初始版本          \n
*/
int eventprocess_query(struct ipc_message *msg);


/**
 * @brief       尝试从JSON项中获取string。
 * @param[in]   jsonItem - JSON项。
 * @param[in]   key - 要获取的值的键。
 * @param[out]  output - 字符数组，用于存放获取到的字符串。
 * @param[in]   maxLen - 输出数组的最大长度。
 * @return      bool
 * @retval      成功为true，失败为false。
 * @par         修改日志:
 * Date                Author     Description           \n
 * 2024-02-18           JHC        创建初始版本          \n
*/
bool eventprocess_get_json_string_value(void* jsonItem, const char* key, char* output, int maxLen) ;

/**
 * @brief       尝试从JSON项中获取int。
 * @param[in]   jsonItem - JSON项。
 * @param[in]   key - 要获取的值的键。
 * @param[out]  output - 数值指针，用于存放获取到的数值。
 * @param[in]   maxLen - 输出数组的最大长度。
 * @return      bool
 * @retval      成功为true，失败为false。
 * @par         修改日志:
 * Date                Author     Description           \n
 * 2024-02-18           JHC        创建初始版本          \n
*/
bool eventprocess_get_json_int_value(void* jsonItem, const char* key, int* output) ;

/**
 * @brief       设置语言值
 * @param[in]   struct ipc_message *msg
 * @return      int
 * @retval      0:中文  1:英文
 * @par         修改日志:
 * Date                Author     Description           \n
 * 2024-04-12           cs        创建初始版本          \n
*/
int32_t eventprocess_set_language(struct ipc_message *m);
#endif
