/* * 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 RefCounted { public: static ErrorOr> create(StringView database_path, ByteString database_name, int client_id); 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, ByteString database_name, int client_id); NonnullRefPtr m_database; ByteString m_database_name; SQL::ConnectionID m_connection_id { 0 }; int m_client_id { 0 }; }; }