/* * Copyright (c) 2021, Jan de Visser * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include #include #include namespace SQLServer { class DatabaseConnection final : public Core::Object { C_OBJECT_ABSTRACT(DatabaseConnection) public: static ErrorOr> create(StringView database_path, DeprecatedString database_name, int client_id); ~DatabaseConnection() override = default; static RefPtr connection_for(SQL::ConnectionID connection_id); SQL::ConnectionID connection_id() const { return m_connection_id; } int client_id() const { return m_client_id; } NonnullRefPtr database() { return m_database; } StringView database_name() const { return m_database_name; } void disconnect(); SQL::ResultOr prepare_statement(StringView sql); private: DatabaseConnection(NonnullRefPtr database, DeprecatedString database_name, int client_id); NonnullRefPtr m_database; DeprecatedString m_database_name; SQL::ConnectionID m_connection_id { 0 }; int m_client_id { 0 }; }; }