Database System 0.1.0
Advanced C++20 Database System with Multi-Backend Support
Loading...
Searching...
No Matches
redis_backend.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
20#pragma once
21
24
25#include <memory>
26#include <string>
27#include <atomic>
28#include <mutex>
29
30namespace database
31{
32namespace backends
33{
34
70 : public core::backend_base<redis_backend, database_types::redis>
71{
72public:
76 static constexpr const char* backend_name() { return "redis_backend"; }
77
82
86 ~redis_backend() override = default;
87
88 // database_backend interface implementation
89
90 kcenon::common::Result<core::database_result> select_query(const std::string& query_string) override;
91
92 kcenon::common::VoidResult execute_query(const std::string& query_string) override;
93
94 kcenon::common::VoidResult begin_transaction() override;
95
96 kcenon::common::VoidResult commit_transaction() override;
97
98 kcenon::common::VoidResult rollback_transaction() override;
99
100 bool in_transaction() const override;
101
102 std::string last_error() const override;
103
104 std::map<std::string, std::string> connection_info() const override;
105
106protected:
108
114 kcenon::common::VoidResult do_initialize(const core::connection_config& config);
115
120 kcenon::common::VoidResult do_shutdown();
121
122private:
130 bool parse_redis_query(const std::string& query_string,
131 std::string& key,
132 std::string& value) const;
133
134 void* context_{nullptr};
135 std::string host_;
136 int port_{6379};
137 std::atomic<bool> in_transaction_{false};
138 mutable std::string last_error_;
140 mutable std::mutex redis_mutex_;
141};
142
143} // namespace backends
144} // namespace database
CRTP template base class for database backends.
Registry for database backend plugins.
Redis implementation of database_backend interface.
std::string last_error() const override
Get last error message from backend.
kcenon::common::VoidResult rollback_transaction() override
Rollback the current transaction.
kcenon::common::VoidResult execute_query(const std::string &query_string) override
Execute a general SQL query (DDL, DML)
kcenon::common::VoidResult do_shutdown()
Database-specific shutdown logic.
kcenon::common::VoidResult commit_transaction() override
Commit the current transaction.
~redis_backend() override=default
Destructor - ensures proper cleanup.
void * context_
Redis context (redisContext*)
kcenon::common::VoidResult begin_transaction() override
Begin a transaction.
std::atomic< bool > in_transaction_
Transaction state (MULTI/EXEC)
redis_backend()
Default constructor.
kcenon::common::Result< core::database_result > select_query(const std::string &query_string) override
Execute a SELECT query.
bool parse_redis_query(const std::string &query_string, std::string &key, std::string &value) const
Parse Redis query string format.
std::mutex redis_mutex_
Mutex for thread safety.
std::string last_error_
Last error message.
bool in_transaction() const override
Check if backend is currently in a transaction.
std::map< std::string, std::string > connection_info() const override
Get backend-specific connection information.
static constexpr const char * backend_name()
Backend name for error messages.
kcenon::common::VoidResult do_initialize(const core::connection_config &config)
Database-specific initialization logic.
core::connection_config connection_config_
Cached connection config.
CRTP template base class for database backends.
database_types
Represents various database backends or modes.
@ redis
Indicates a Redis database (future implementation).
Configuration for database connection.