Database Pool
This commit is contained in:
parent
59c1ffd027
commit
fe2fbb9ad0
23 changed files with 268 additions and 63 deletions
|
@ -1,53 +0,0 @@
|
|||
// SPDX-FileCopyrightText: 2023 Yury Gubich <blue@macaw.me>
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <stdexcept>
|
||||
#include <string>
|
||||
#include <memory>
|
||||
#include <stdint.h>
|
||||
|
||||
class DBInterface {
|
||||
public:
|
||||
enum class Type {
|
||||
mysql
|
||||
};
|
||||
enum class State {
|
||||
disconnected,
|
||||
connecting,
|
||||
connected
|
||||
};
|
||||
static std::unique_ptr<DBInterface> create(Type type);
|
||||
|
||||
virtual ~DBInterface();
|
||||
|
||||
State currentState() const;
|
||||
|
||||
const Type type;
|
||||
|
||||
class Duplicate;
|
||||
class DuplicateLogin;
|
||||
class EmptyResult;
|
||||
class NoLogin;
|
||||
|
||||
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;
|
||||
virtual std::string getAccountHash(const std::string& login) = 0;
|
||||
virtual unsigned int createSession(const std::string& login, const std::string& access, const std::string& renew) = 0;
|
||||
|
||||
protected:
|
||||
DBInterface(Type type);
|
||||
|
||||
protected:
|
||||
State state;
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue