Common System 0.2.0
Common interfaces and patterns for system integration
Loading...
Searching...
No Matches
database_interface.h
Go to the documentation of this file.
1// BSD 3-Clause License
2// Copyright (c) 2025, 🍀☀🌕🌥 🌊
3// See the LICENSE file in the project root for full license information.
4
15#pragma once
16
17#include <cstdint>
18#include <map>
19#include <string>
20#include <variant>
21#include <vector>
22
23#include "../patterns/result.h"
24
25namespace kcenon::common {
26
31struct database_null {};
32
39using database_value = std::variant<database_null, std::string, std::int64_t, double, bool>;
40
45using database_row = std::map<std::string, database_value>;
46
51using database_result = std::vector<database_row>;
52
53namespace interfaces {
54
84class IDatabase {
85public:
86 virtual ~IDatabase() = default;
87
93 virtual VoidResult connect(const std::string& connection_string) = 0;
94
99 virtual VoidResult disconnect() = 0;
100
106 virtual Result<database_result> execute_query(const std::string& query) = 0;
107
113 virtual VoidResult execute_command(const std::string& command) = 0;
114
120
125 virtual VoidResult commit() = 0;
126
131 virtual VoidResult rollback() = 0;
132
137 virtual bool is_connected() const = 0;
138};
139
140} // namespace interfaces
141} // namespace kcenon::common
Result type for error handling with member function support.
Definition core.cppm:165
virtual VoidResult begin_transaction()=0
Begin a database transaction.
virtual VoidResult connect(const std::string &connection_string)=0
Connect to database using connection string.
virtual bool is_connected() const =0
Check if database is currently connected.
virtual VoidResult commit()=0
Commit the current transaction.
virtual VoidResult execute_command(const std::string &command)=0
Execute a command without returning results.
virtual Result< database_result > execute_query(const std::string &query)=0
Execute a query and return results.
virtual VoidResult rollback()=0
Rollback the current transaction.
virtual VoidResult disconnect()=0
Disconnect from database.
Core interfaces.
Definition adapter.h:21
std::vector< database_row > database_result
Vector of rows representing a complete query result set.
std::map< std::string, database_value > database_row
Map of column names to values representing a database row.
std::variant< database_null, std::string, std::int64_t, double, bool > database_value
Variant type for database column values.
Umbrella header for Result<T> type and related utilities.
Represents NULL values in database results.