forked from gary/ems
2
0
Fork 0
sun_ems/ems_c/kernel/kit_db.h

379 lines
21 KiB
C
Raw Permalink Normal View History

2025-05-13 17:49:49 +08:00
/*****************************************************************************
* @copyright 2024-202, . POWER SUPPLY CO., LTD.
* @file xxx.c
* @brief xxxx
* @author xx
* @date 2024/08/30
* @remark
*****************************************************************************/
#ifndef __KIT_DB_H__
#define __KIT_DB_H__
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
#include <stdint.h>
#include <stdlib.h>
#include <unistd.h>
#include "kit_data.h"
#include "utarray.h"
#include "sqlite3.h"
// sql返回数据类型原有的db应用模块取所有数据没有可扩展性由于常用放在这里
typedef struct
{
char **dbresult;
int nrow;
int ncolumn;
char *errmsg;
} db_table_data_t;
// typedef enum
// {
// }db_tables_name_e;
/* ############################################################################### 配置数据库操作 ############################################################################### */
/*****************************************************************************
* @brief SQLite
* @param[in] schema_dir: SQL
* @return 0- 1-
*****************************************************************************/
int kit_init_db(const char *schema_dir);
/*****************************************************************************
* @brief SQLite 使Prepared Statement SQLite数据库中
* 使 `sqlite3_get_table`
* @param[out] outData:
* @param[in] tableName:
* @param[in] columnsName: NULL
* @param[in] columnNum:
* @return 0- 1-
*****************************************************************************/
int kit_get_db_data(db_table_data_t *outData, const char *tableName, const char *columnsName[], int columnNum);
/*****************************************************************************
* @brief
* @param[in] p_station
* @return 0- 1-
*****************************************************************************/
int kit_get_station_db_data(station_t *p_station);
/*****************************************************************************
* @brief
* @param[out] devPointInfo: UT_array
* @return 0- -1
*****************************************************************************/
int kit_get_dev_db_data(UT_array **devPointInfo);
/*****************************************************************************
* @brief config_db device business_db device
* @return 0- 1-
*****************************************************************************/
int kit_sync_dev_data();
/*****************************************************************************
* @brief
* ID
* 使Prepared Statement ID
*
* @param[in] templateType: 0, 1
* @param[in] relatedId: ID
* @param[out] protoContent:
* @return 0- 1-
*****************************************************************************/
int kit_get_protocol_db_data(const template_type_e templateType, const uint64_t relatedId, char protoContent[MAX_CONFIG_CONTENT_LEN]);
/*****************************************************************************
* @brief
* @param[in] templateId: Id
* @param[out] points: UT_array
* @return 0- 1-
*****************************************************************************/
int kit_get_point_db_data(const uint64_t devDbId, UT_array **points);
/*****************************************************************************
* @brief
* @param[out] timedDataConfigs:
* @return 0- 1-
*****************************************************************************/
int kit_get_tdata_config(UT_array **timedDataConfigs);
/*****************************************************************************
* @brief config_db business_db
* @param[out]
* @return 0- 1-
*****************************************************************************/
int kit_sync_point_data();
/*****************************************************************************
* @brief
* @param[out] faultsDataConfigs:
* @return 0- 1-
*****************************************************************************/
int kit_get_faults_config(UT_array **faultsDataConfigs);
/*****************************************************************************
* @brief EMS设备配置信息
* @param[out] emsDevConfigs: UT_array
* @return 0- 1-
*****************************************************************************/
int kit_get_config_db_data(UT_array **emsDevConfigs);
/*****************************************************************************
* @brief Type从数据库获取 EMS
* @param[in] type:
* @param[out] emsDevConfig:
* @return 0- 1-
*****************************************************************************/
int kit_get_config_by_type(ems_dev_config_type_e type, ems_dev_config_t *emsDevConfig);
/*****************************************************************************
* @brief
* @param[out] northConfigs: , 使 UT_array
* @return 0- 1-
*****************************************************************************/
int kit_get_north_config_arr(UT_array **northConfigs);
/*****************************************************************************
* @brief
* @param[out] pvDateConfigs: , 使 UT_array
* @return 0- 1-
*****************************************************************************/
int kit_get_pv_date_cfg_db_data(UT_array **pvDateConfigs);
/*****************************************************************************
* @brief Id获取削峰填谷时间执行配置
* @param[in] pvTimeCfgDbId: Id
* @param[out] pvDateConfig: , pv_time_config_t
* @return 0- 1-
*****************************************************************************/
int kit_get_pv_time_cfg_db_data(int pvDateCfgDbId, pv_date_config_t *pvDateConfig);
/*****************************************************************************
* @brief
* @param[out] pvDateTimeConfigs: , 使 UT_array
* @return 0- 1-
*****************************************************************************/
int kit_set_pv_date_time_cfg(UT_array **pvDateTimeConfigs);
/*****************************************************************************
* @brief EMS拓扑结构信息
* @param[out] topologys: ems拓扑信息结构体的 UT_array
* @return 0- 1-
*****************************************************************************/
int kit_get_topology_db_data(UT_array **topologies);
/*****************************************************************************
* @brief
* @param[in] p_protectAlgo
* @return 0- 1-
*****************************************************************************/
int kit_get_protect_algorithm(protect_algorithm_t *p_protectAlgo);
/*****************************************************************************
* @brief
* @param[in] p_protectAlgo
* @return 0- 1-
*****************************************************************************/
int kit_set_protect_algorithm(protect_algorithm_t *p_protectAlgo);
/*****************************************************************************
* @brief
* @param[in] p_debugAlgo
* @return 0- 1-
*****************************************************************************/
int kit_get_debug_algorithm(debug_algorithm_t *p_debugAlgo);
/*****************************************************************************
* @brief
* @param[in] p_debugAlgo
* @return 0- 1-
*****************************************************************************/
int kit_set_debug_algorithm(debug_algorithm_t *p_debugAlgo);
/*****************************************************************************
* @brief
* @param[in] p_allocatePower
* @return 0- 1-
*****************************************************************************/
int kit_get_allocate_power(allocate_power_t *p_allocatePower);
/*****************************************************************************
* @brief
* @param[in] p_allocatePower
* @return 0- 1-
*****************************************************************************/
int kit_set_allocate_power(allocate_power_t *p_allocatePower);
/*****************************************************************************
* @brief
* @param[in] p_workModeSet
* @return 0- 1-
*****************************************************************************/
int kit_get_work_mode_set(work_mode_set_t *p_workModeSet);
/*****************************************************************************
* @brief
* @param[in] p_workModeSet
* @return 0- 1-
*****************************************************************************/
int kit_set_work_mode(work_mode_set_t *p_workModeSet);
/*****************************************************************************
* @brief DIDO逻辑设置数据
* @param[in] diDoSetsDIDO逻辑设置结构体的 UT_array
* @return 0- 1-
*****************************************************************************/
int kit_get_di_do_set_arr(UT_array **diDoSets);
/*****************************************************************************
* @brief
* @param[in] p_tempCtrlAlgo
* @return 0- 1-
*****************************************************************************/
int kit_get_temp_ctrl_algorithm(temp_ctrl_algorithm_t *p_tempCtrlAlgo);
/*****************************************************************************
* @brief
* @param[in] p_tempCtrlAlgo
* @return 0- 1-
*****************************************************************************/
int kit_set_temp_ctrl_algorithm(temp_ctrl_algorithm_t *p_tempCtrlAlgo);
/*****************************************************************************
* @brief
* @param[out] advancedSettings:
* @return 0- 1-
*****************************************************************************/
int kit_get_advanced_setting(UT_array **advancedSettings);
/*****************************************************************************
* @brief
* @param[in] p_upgradeRecord
* @return 0- 1-
*****************************************************************************/
int kit_get_upgrade_record(upgrade_record_t *p_upgradeRecord);
/*****************************************************************************
* @brief
* @param[in] p_upgradeRecord
* @return 0- 1-
*****************************************************************************/
int kit_update_upgrade_record(upgrade_record_t *p_upgradeRecord);
/* ############################################################################### 业务数据库操作 ############################################################################### */
/*****************************************************************************
* @brief
* @param[in] timedDatas: UT_array
* @return 0- 1-
*****************************************************************************/
int kit_insert_timed_data(UT_array *timedDatas);
/*****************************************************************************
* @brief timed_data_storage的数据
* @param[in] storage_interval
* @param[in] date_time_string
* @return 0- 1-
*****************************************************************************/
int kit_del_timed_data_by_date(int storage_interval, const char *date_time_string);
/*****************************************************************************
* @brief
* @param[in] faultsDatas: UT_array
* @return 0- 1-
*****************************************************************************/
int kit_insert_faults_data(UT_array *faultsDatas);
/*****************************************************************************
* @brief faults_data_storage的数据
* @param[in] date_time_string
* @return 0- 1-
*****************************************************************************/
int kit_del_faults_data_by_date(const char *date_time_string);
/*******************************************************************************
* @brief
* @param[in] date_time_string "YYYY-MM-DD HH:MM:SS"
* @return 0- 1-
*****************************************************************************/
int kit_del_break_data_by_date(const char *date_time_string);
/*****************************************************************************
* @brief MQTT断开记录的上传状态MQTT断开记录的`is_uploaded`
* @param[in] breakRecord: MQTT断开信息的结构体指针ID (`dbId`) (`isUploaded`)
* @return 0-1-SQL语句预编译失败SQL语句执行失败或未找到匹配的记录SQL语句执行成功`dbId`1
*****************************************************************************/
int kit_update_break_record(break_record_t *breakRecord);
/*****************************************************************************
* @brief MQTT断开记录isUploaded字段筛选
* @param[in] isUploaded: is_uploaded字段值255
* @param[out] breakRecord: UT_array指针
* @return 0- 1-
*****************************************************************************/
int kit_query_break_records(uint8_t isUploaded, UT_array **breakRecord);
/*****************************************************************************
* @brief MQTT断开记录ID
* @param[in] breakRecord: MQTT断开信息的结构体指针(reason)
* @return ID-1-SQL预编译失败和SQL执行失败
*****************************************************************************/
long long kit_insert_break_record(break_record_t *breakRecord);
/*****************************************************************************
* @brief MQTT断联时的历史数据存储
* @param[in] breakDbIdMQTT断联的数据库Id
* @param[in] timedDatas: UT_array
* @return 0- 1-
*****************************************************************************/
int kit_insert_break_data_storage(uint64_t breakDbId, UT_array **timedDatas);
/*****************************************************************************
* @brief ID和行号范围查询断开数据
* @param[in] breakDbId: MQTT断开记录的数据库ID
* @param[out] timedDatas: UT_array指针
* @return 0-1-
*****************************************************************************/
int kit_query_break_data(uint64_t breakDbId, UT_array **timedDatas);
/*****************************************************************************
* @brief 使
* @param[in] break_id: MQTT断开记录的break_id
* @param[in] ids: storage的id数组
* @param[in] length: storage的id数组长度
* @return 0-1-
*****************************************************************************/
int kit_update_break_data(uint16_t break_id, uint64_t ids[], int length);
/*****************************************************************************
* @brief
* @param[in] powerDatas: UT_array
* @return 0- 1-
*****************************************************************************/
int kit_insert_power_data(UT_array *powerDatas);
/*****************************************************************************
* @brief power_data_storage的数据
* @param[in] date_time_string
* @return 0- 1-
*****************************************************************************/
int kit_del_power_data_by_date(const char *date_time_string);
/*****************************************************************************
* @brief dbId的记录数量
* @param[in] db: SQLite3
* @param[in] tabName:
* @param[in] dbid: dbId值
* @return -1
*****************************************************************************/
int kit_get_record_count_by_dbid(sqlite3 *db, const char *tabName, uint64_t dbid);
/*****************************************************************************
* @brief
* @param[in] connectStatus:
* @return 0- 1-
*****************************************************************************/
int kit_insert_lost_contact_record(const char* connectStatus);
#endif