123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- /*
- * @Description: 车位模块数据库管理类,提供接口实现特定的数据库操作
- * @Author: yct
- * @Date: 2020-07-19 09:44:17
- * @LastEditTime: 2020-07-21 16:22:12
- * @LastEditors: yct
- */
- #ifndef PARKSPACE_DB_MANAGER_HH
- #define PARKSPACE_DB_MANAGER_HH
- #include "../tool/singleton.h"
- #include "../error_code/error_code.h"
- #include "../communication/communication_message.h"
- #include "../message/parkspace_allocation_message.pb.h"
- #include "parkspace_parameter.pb.h"
- #include "database_controller.h"
- #include <atomic>
- class Parkspace_db_manager : public Singleton<Parkspace_db_manager>
- {
- // 子类必须把父类设定为友元函数,这样父类才能使用子类的私有构造函数。
- friend class Singleton<Parkspace_db_manager>;
- public:
- // 必须关闭拷贝构造和赋值构造,只能通过 get_instance 函数来进行操作唯一的实例。
- Parkspace_db_manager(const Parkspace_db_manager &) = delete;
- Parkspace_db_manager &operator=(const Parkspace_db_manager &) = delete;
- ~Parkspace_db_manager() = default;
- // 车位数据库管理初始化
- Error_manager Parkspace_db_manager_init(parkspace_proto::database_config config);
- // 车位数据库管理反初始化
- Error_manager Parkspace_db_manager_uninit();
- // 连接状态
- bool is_connected();
- // 初始化状态
- bool is_initialized();
- // ******** 数据库具体操作函数 *********
- // 从数据库获得所有车位信息,用于车位模块初始化
- Error_manager get_all_parkspace_info(message::Parkspace_allocation_status_msg &all_parkspace_info);
- // 更新数据库中所有车位信息
- Error_manager update_all_parkspace_info(message::Parkspace_allocation_status_msg all_parkspace_info);
- // 更新数据库中车位状态
- Error_manager update_parkspace_status(message::Parkspace_info parkspace_info);
- // 更新数据库车辆状态,车位信息中包含车辆信息用于匹配更新
- Error_manager update_vehicle_status(message::Parkspace_info parkspace_info, message::Vehicle_status &vehicle_status);
- // 插入车辆
- Error_manager insert_vehicle(message::Parkspace_info parkspace_info, message::Vehicle_status &vehicle_status);
- // 插入停车记录
- Error_manager insert_parking_record(message::Parkspace_info parkspace_info);
- // 更新停车记录,待计费系统加入后完善!!!
- Error_manager update_parking_record(message::Parkspace_info parkspace_info, int record_id);
- // 根据车位编号查询车位状态
- Error_manager query_parkspace(int parkspace_id, message::Parkspace_info &parkspace_info);
- // 查询车辆状态,暂时不使用
- Error_manager query_vehicle(std::string license, message::Vehicle_status &vehicle_status, int &park_record_id);
- // 查询停车记录
- Error_manager query_parking_record(message::Parkspace_info &parkspace_info, int &record_id);
- private:
- // 父类的构造函数必须保护,子类的构造函数必须私有。
- Parkspace_db_manager() = default;
- // 数据库操作单例句柄
- boost::shared_ptr<Database_controller> mp_db_controller;
- // 初始化状态
- std::atomic_bool mb_initialized;
- // 连接状态
- std::atomic_bool mb_connected;
- };
- #endif // !PARKSPACE_DB_MANAGER_HH
|