#ifndef CAMDEV_MANAGER_H #define CAMDEV_MANAGER_H #include "../model/CamDev.h" #include "BaseSqliteDao.h" #define CamDev_TABLE_NAME "CamDev" /** * 摄像头设备管理类 */ class CamDevSqliteDao : public BaseSqliteDao { private: /** 摄像头设备构造函数 */ CamDevSqliteDao() {} public: /** 摄像头设备单例模式 */ static CamDevSqliteDao* instance() { static CamDevSqliteDao instance; return &instance; } /** 添加摄像头设备 keyValuesToAdd 需要添加的列名和列值对map*/ mysqlpp::SimpleResult addCamDev(std::map& keyValuesToAdd) { return add(keyValuesToAdd, CamDev_TABLE_NAME); } /** 删除摄像头设备 whereKey 列名;whereValue 列值 */ bool deleteByColumn(string whereKey, string whereValue) { std::map whereKeyValues; whereKeyValues[whereKey] = whereValue; return deleteCamDev(whereKeyValues); } /** 删除摄像头设备 whereColumnNameValues 列名和列值对条件 */ bool deleteCamDev(std::map& whereKeyValues) { return del(CamDev_TABLE_NAME, whereKeyValues); } /** 更新摄像头设备 keyValuesToUpdate 需要更新的列名和列值对; whereKeyValues 列名和列值条件 */ bool updateCamDev(std::map& keyValuesToUpdate, std::map& whereKeyValues) { return update(keyValuesToUpdate, CamDev_TABLE_NAME, whereKeyValues); } /** 更新创建二级设备表 keyValuesToUpdate 需要更新的列名和列值对; whereKeyValues 列名和列值条件 */ bool updateCamDev(std::map& keyValuesToUpdate, string whereKey, string whereValue) { std::map whereKeyValues; whereKeyValues[whereKey] = whereValue; return update(keyValuesToUpdate, CamDev_TABLE_NAME, whereKeyValues); } /** 查询摄像头设备列表 querySql 要查询的sql语句 */ vector findCamDevList(string querySql) { vector camDevVec; vector> rowDatList = findList(querySql); camDevVec.reserve(rowDatList.size()); for (auto rowData : rowDatList) { camDevVec.emplace_back(mapToModel(rowData)); } return camDevVec; } /**查询摄像头设备列表 whereKeyValues 列名和列值对条件 */ vector findCamDevList(std::map& whereKeyValues) { return findCamDevList(string("select * from ") + CamDev_TABLE_NAME + " where 1=1 " + getWhereColumnNameValuePair(whereKeyValues)); } /**查询所有摄像头设备列表 */ vector findAllCamDevList() { return findCamDevList(string("select * from ") + CamDev_TABLE_NAME + " where 1=1 "); } /** 查询map列表 querySql 要查询的sql语句 */ vector> findMapList(string querySql) { return findList(querySql); } /** 执行sql语句 */ bool execute(string sql) { return exec(move(sql)); } /** map转model类 */ CamDev mapToModel(map& rowData) { CamDev camDev; string idValue = rowData[CamDev_id]; if (idValue.length() != 0 && idValue != "NULL") { camDev.id = std::stoi(idValue); } string cam_dev_idValue = rowData[CamDev_cam_dev_id]; if (cam_dev_idValue.length() != 0 && cam_dev_idValue != "NULL") { camDev.cam_dev_id = cam_dev_idValue; } string nameValue = rowData[CamDev_name]; if (nameValue.length() != 0 && nameValue != "NULL") { camDev.name = nameValue; } string addrValue = rowData[CamDev_addr]; if (addrValue.length() != 0 && addrValue != "NULL") { camDev.addr = addrValue; } string longitudeValue = rowData[CamDev_longitude]; if (longitudeValue.length() != 0 && longitudeValue != "NULL") { camDev.longitude = longitudeValue; } string latitudeValue = rowData[CamDev_latitude]; if (latitudeValue.length() != 0 && latitudeValue != "NULL") { camDev.latitude = latitudeValue; } string ipValue = rowData[CamDev_ip]; if (ipValue.length() != 0 && ipValue != "NULL") { camDev.ip = ipValue; } string portValue = rowData[CamDev_port]; if (portValue.length() != 0 && portValue != "NULL") { camDev.port = std::stoi(portValue); } string usernameValue = rowData[CamDev_username]; if (usernameValue.length() != 0 && usernameValue != "NULL") { camDev.username = usernameValue; } string passwordValue = rowData[CamDev_password]; if (passwordValue.length() != 0 && passwordValue != "NULL") { camDev.password = passwordValue; } string brandValue = rowData[CamDev_brand]; if (brandValue.length() != 0 && brandValue != "NULL") { camDev.brand = brandValue; } string reservedValue = rowData[CamDev_reserved]; if (reservedValue.length() != 0 && reservedValue != "NULL") { camDev.reserved = reservedValue; } string typeValue = rowData[CamDev_type]; if (typeValue.length() != 0 && typeValue != "NULL") { camDev.type = typeValue; } return camDev; } }; #endif //CAMDEV_MANAGER_H