ocpp 0.24.1
A C++ implementation of the Open Charge Point Protocol
database_handler_common.hpp
1// SPDX-License-Identifier: Apache-2.0
2// Copyright 2020 - 2023 Pionix GmbH and Contributors to EVerest
3
4#pragma once
5
6#include <memory>
7#include <string>
8#include <vector>
9
10#include <ocpp/common/database/database_connection.hpp>
11#include <ocpp/common/database/database_exceptions.hpp>
12#include <ocpp/common/types.hpp>
13
14namespace ocpp::common {
15
17 json json_message;
18 std::string message_type;
19 int32_t message_attempts;
20 DateTime timestamp;
21 std::string unique_id;
22};
23
25protected:
26 std::unique_ptr<DatabaseConnectionInterface> database;
27 const fs::path sql_migration_files_path;
28 const uint32_t target_schema_version;
29
31 virtual void init_sql() = 0;
32
33public:
40 explicit DatabaseHandlerCommon(std::unique_ptr<DatabaseConnectionInterface> database,
41 const fs::path& sql_migration_files_path, uint32_t target_schema_version) noexcept;
42
43 ~DatabaseHandlerCommon() = default;
44
46 void open_connection();
47
49 void close_connection();
50
54 virtual std::vector<DBTransactionMessage>
55 get_message_queue_messages(const QueueType queue_type = QueueType::Transaction);
56
60 virtual void insert_message_queue_message(const DBTransactionMessage& message,
61 const QueueType queue_type = QueueType::Transaction);
62
67 virtual void remove_message_queue_message(const std::string& unique_id,
68 const QueueType queue_type = QueueType::Transaction);
69
72 virtual void clear_message_queue(const QueueType queue_type = QueueType::Transaction);
73};
74
75} // namespace ocpp::common
Contains a DateTime implementation that can parse and create RFC 3339 compatible strings.
Definition: types.hpp:109
Definition: database_handler_common.hpp:24
virtual void remove_message_queue_message(const std::string &unique_id, const QueueType queue_type=QueueType::Transaction)
Remove a message from the messages queue table specified by queue_type.
Definition: database_handler_common.cpp:103
virtual void init_sql()=0
Perform the initialization needed to use the database. Will be called by open_connection()
virtual void insert_message_queue_message(const DBTransactionMessage &message, const QueueType queue_type=QueueType::Transaction)
Insert a new message into messages queue table specified by queue_type.
Definition: database_handler_common.cpp:81
virtual std::vector< DBTransactionMessage > get_message_queue_messages(const QueueType queue_type=QueueType::Transaction)
Get messages from messages queue table specified by queue_type.
Definition: database_handler_common.cpp:37
virtual void clear_message_queue(const QueueType queue_type=QueueType::Transaction)
Deletes all entries from message queue table specified by queue_type.
Definition: database_handler_common.cpp:116
DatabaseHandlerCommon(std::unique_ptr< DatabaseConnectionInterface > database, const fs::path &sql_migration_files_path, uint32_t target_schema_version) noexcept
Common database handler class Class handles some common database functionality like inserting and rem...
Definition: database_handler_common.cpp:11
void close_connection()
Closes the database connection.
Definition: database_handler_common.cpp:33
void open_connection()
Opens connection to database file and performs the initialization by calling init_sql()
Definition: database_handler_common.cpp:19
Definition: database_handler_common.hpp:16