#include "dbal/client.hpp" #include "entities/index.hpp" #include "store/in_memory_store.hpp" #include namespace dbal { Client::Client(const ClientConfig& config) : config_(config) { if (config.adapter.empty()) { throw std::invalid_argument("Adapter type must be specified"); } if (config.database_url.empty()) { throw std::invalid_argument("Database URL must be specified"); } } Client::~Client() { close(); } Result Client::createUser(const CreateUserInput& input) { return entities::user::create(getStore(), input); } Result Client::getUser(const std::string& id) { return entities::user::get(getStore(), id); } Result Client::updateUser(const std::string& id, const UpdateUserInput& input) { return entities::user::update(getStore(), id, input); } Result Client::deleteUser(const std::string& id) { return entities::user::remove(getStore(), id); } Result> Client::listUsers(const ListOptions& options) { return entities::user::list(getStore(), options); } Result Client::batchCreateUsers(const std::vector& inputs) { return entities::user::batchCreate(getStore(), inputs); } Result Client::batchUpdateUsers(const std::vector& updates) { return entities::user::batchUpdate(getStore(), updates); } Result Client::batchDeleteUsers(const std::vector& ids) { return entities::user::batchDelete(getStore(), ids); } Result Client::createPage(const CreatePageInput& input) { return entities::page::create(getStore(), input); } Result Client::getPage(const std::string& id) { return entities::page::get(getStore(), id); } Result Client::getPageBySlug(const std::string& slug) { return entities::page::getBySlug(getStore(), slug); } Result Client::updatePage(const std::string& id, const UpdatePageInput& input) { return entities::page::update(getStore(), id, input); } Result Client::deletePage(const std::string& id) { return entities::page::remove(getStore(), id); } Result> Client::listPages(const ListOptions& options) { return entities::page::list(getStore(), options); } Result Client::createWorkflow(const CreateWorkflowInput& input) { return entities::workflow::create(getStore(), input); } Result Client::getWorkflow(const std::string& id) { return entities::workflow::get(getStore(), id); } Result Client::updateWorkflow(const std::string& id, const UpdateWorkflowInput& input) { return entities::workflow::update(getStore(), id, input); } Result Client::deleteWorkflow(const std::string& id) { return entities::workflow::remove(getStore(), id); } Result> Client::listWorkflows(const ListOptions& options) { return entities::workflow::list(getStore(), options); } Result Client::createSession(const CreateSessionInput& input) { return entities::session::create(getStore(), input); } Result Client::getSession(const std::string& id) { return entities::session::get(getStore(), id); } Result Client::updateSession(const std::string& id, const UpdateSessionInput& input) { return entities::session::update(getStore(), id, input); } Result Client::deleteSession(const std::string& id) { return entities::session::remove(getStore(), id); } Result> Client::listSessions(const ListOptions& options) { return entities::session::list(getStore(), options); } Result Client::createLuaScript(const CreateLuaScriptInput& input) { return entities::lua_script::create(getStore(), input); } Result Client::getLuaScript(const std::string& id) { return entities::lua_script::get(getStore(), id); } Result Client::updateLuaScript(const std::string& id, const UpdateLuaScriptInput& input) { return entities::lua_script::update(getStore(), id, input); } Result Client::deleteLuaScript(const std::string& id) { return entities::lua_script::remove(getStore(), id); } Result> Client::listLuaScripts(const ListOptions& options) { return entities::lua_script::list(getStore(), options); } Result Client::createPackage(const CreatePackageInput& input) { return entities::package::create(getStore(), input); } Result Client::getPackage(const std::string& id) { return entities::package::get(getStore(), id); } Result Client::updatePackage(const std::string& id, const UpdatePackageInput& input) { return entities::package::update(getStore(), id, input); } Result Client::deletePackage(const std::string& id) { return entities::package::remove(getStore(), id); } Result> Client::listPackages(const ListOptions& options) { return entities::package::list(getStore(), options); } Result Client::batchCreatePackages(const std::vector& inputs) { return entities::package::batchCreate(getStore(), inputs); } Result Client::batchUpdatePackages(const std::vector& updates) { return entities::package::batchUpdate(getStore(), updates); } Result Client::batchDeletePackages(const std::vector& ids) { return entities::package::batchDelete(getStore(), ids); } void Client::close() { // For in-memory implementation, optionally clear store. } } // namespace dbal