]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/database/database-postgresql.h
Add PostgreSQL authentication backend (#9756)
[dragonfireclient.git] / src / database / database-postgresql.h
index 5a8b89a515b2b862b9a472369ba794084dfac407..340f0a7b809e81a7451408467aaa1df368787e06 100644 (file)
@@ -36,6 +36,7 @@ class Database_PostgreSQL: public Database
 
        void beginSave();
        void endSave();
+       void rollback();
 
        bool initialized() const;
 
@@ -148,3 +149,26 @@ class PlayerDatabasePostgreSQL : private Database_PostgreSQL, public PlayerDatab
 private:
        bool playerDataExists(const std::string &playername);
 };
+
+class AuthDatabasePostgreSQL : private Database_PostgreSQL, public AuthDatabase
+{
+public:
+       AuthDatabasePostgreSQL(const std::string &connect_string);
+       virtual ~AuthDatabasePostgreSQL() = default;
+
+       virtual void pingDatabase() { Database_PostgreSQL::pingDatabase(); }
+
+       virtual bool getAuth(const std::string &name, AuthEntry &res);
+       virtual bool saveAuth(const AuthEntry &authEntry);
+       virtual bool createAuth(AuthEntry &authEntry);
+       virtual bool deleteAuth(const std::string &name);
+       virtual void listNames(std::vector<std::string> &res);
+       virtual void reload();
+
+protected:
+       virtual void createDatabase();
+       virtual void initStatements();
+
+private:
+       virtual void writePrivileges(const AuthEntry &authEntry);
+};