ocpp 0.24.1
A C++ implementation of the Open Charge Point Protocol
device_model_storage_sqlite.hpp
1// SPDX-License-Identifier: Apache-2.0
2// Copyright 2020 - 2023 Pionix GmbH and Contributors to EVerest
3
4#ifndef DEVICE_MODEL_STORAGE_SQLITE_HPP
5#define DEVICE_MODEL_STORAGE_SQLITE_HPP
6
7#include <filesystem>
8#include <sqlite3.h>
9
10#include <everest/logging.hpp>
11#include <ocpp/common/database/database_connection.hpp>
12#include <ocpp/v2/device_model_storage_interface.hpp>
13
14namespace ocpp {
15namespace v2 {
16
18
19private:
20 std::unique_ptr<ocpp::common::DatabaseConnectionInterface> db;
21
22 int get_component_id(const Component& component_id);
23
24 int get_variable_id(const Component& component_id, const Variable& variable_id);
25
26public:
37 explicit DeviceModelStorageSqlite(const fs::path& db_path, const std::filesystem::path& migration_files_path = "",
38 const std::filesystem::path& config_path = "", const bool init_db = false);
39
40 ~DeviceModelStorageSqlite() = default;
41
42 std::map<Component, std::map<Variable, VariableMetaData>> get_device_model() final;
43
44 std::optional<VariableAttribute> get_variable_attribute(const Component& component_id, const Variable& variable_id,
45 const AttributeEnum& attribute_enum) final;
46
47 std::vector<VariableAttribute> get_variable_attributes(const Component& component_id, const Variable& variable_id,
48 const std::optional<AttributeEnum>& attribute_enum) final;
49
50 bool set_variable_attribute_value(const Component& component_id, const Variable& variable_id,
51 const AttributeEnum& attribute_enum, const std::string& value,
52 const std::string& source) final;
53
54 std::optional<VariableMonitoringMeta> set_monitoring_data(const SetMonitoringData& data,
55 const VariableMonitorType type) final;
56
57 bool update_monitoring_reference(const int32_t monitor_id, const std::string& reference_value) final;
58
59 std::vector<VariableMonitoringMeta> get_monitoring_data(const std::vector<MonitoringCriterionEnum>& criteria,
60 const Component& component_id,
61 const Variable& variable_id) final;
62
63 ClearMonitoringStatusEnum clear_variable_monitor(int monitor_id, bool allow_protected) final;
64
65 int32_t clear_custom_variable_monitors() final;
66
67 void check_integrity() final;
68};
69
70} // namespace v2
71} // namespace ocpp
72
73#endif // DEVICE_MODEL_STORAGE_SQLITE_HPP
Abstract base class for device model interface. This class provides an interface for accessing and mo...
Definition: device_model_storage_interface.hpp:61
Definition: device_model_storage_sqlite.hpp:17
void check_integrity() final
Check data integrity of the stored data: For "required" variables, assert values exist....
Definition: device_model_storage_sqlite.cpp:458
std::optional< VariableMonitoringMeta > set_monitoring_data(const SetMonitoringData &data, const VariableMonitorType type) final
Inserts or replaces a variable monitor in the database.
Definition: device_model_storage_sqlite.cpp:273
int32_t clear_custom_variable_monitors() final
Clears all custom monitors (that were added by the CSMS) from the database.
Definition: device_model_storage_sqlite.cpp:441
std::vector< VariableAttribute > get_variable_attributes(const Component &component_id, const Variable &variable_id, const std::optional< AttributeEnum > &attribute_enum) final
Gets a std::vector<VariableAttribute> from the storage.
Definition: device_model_storage_sqlite.cpp:185
bool update_monitoring_reference(const int32_t monitor_id, const std::string &reference_value) final
Updates the reference value for a monitor. The reference values is used for the delta monitors to det...
Definition: device_model_storage_sqlite.cpp:251
ClearMonitoringStatusEnum clear_variable_monitor(int monitor_id, bool allow_protected) final
Clears a single monitor based on the ID from the database.
Definition: device_model_storage_sqlite.cpp:397
DeviceModelStorageSqlite(const fs::path &db_path, const std::filesystem::path &migration_files_path="", const std::filesystem::path &config_path="", const bool init_db=false)
Opens SQLite connection at given db_path.
Definition: device_model_storage_sqlite.cpp:21
std::optional< VariableAttribute > get_variable_attribute(const Component &component_id, const Variable &variable_id, const AttributeEnum &attribute_enum) final
Gets a VariableAttribute from the storage if present.
Definition: device_model_storage_sqlite.cpp:173
std::vector< VariableMonitoringMeta > get_monitoring_data(const std::vector< MonitoringCriterionEnum > &criteria, const Component &component_id, const Variable &variable_id) final
Returns all the monitors currently in the database based on the provided filtering criteria.
Definition: device_model_storage_sqlite.cpp:352
bool set_variable_attribute_value(const Component &component_id, const Variable &variable_id, const AttributeEnum &attribute_enum, const std::string &value, const std::string &source) final
Sets the value of an VariableAttribute if present.
Definition: device_model_storage_sqlite.cpp:223
std::map< Component, std::map< Variable, VariableMetaData > > get_device_model() final
Gets the device model from the device model interface.
Definition: device_model_storage_sqlite.cpp:94
Definition: ocpp_types.hpp:303
Definition: ocpp_types.hpp:852
Definition: ocpp_types.hpp:319