// SPDX-FileCopyrightText: 2023 Yury Gubich // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include #include #include #include class DBInterface { public: enum class Type { mysql }; enum class State { disconnected, connecting, connected }; static std::unique_ptr create(Type type); virtual ~DBInterface(); State currentState() const; const Type type; public: virtual void connect(const std::string& path) = 0; virtual void disconnect() = 0; virtual void setDatabase(const std::string& newDatabase) = 0; virtual void setCredentials(const std::string& login, const std::string& password) = 0; virtual void migrate(uint8_t targetVersion) = 0; virtual uint8_t getVersion() = 0; virtual void setVersion(uint8_t version) = 0; virtual unsigned int registerAccount(const std::string& login, const std::string& hash) = 0; protected: DBInterface(Type type); protected: State state; };