diff options
author | Joursoir <chat@joursoir.net> | 2020-12-02 10:56:36 +0000 |
---|---|---|
committer | Joursoir <chat@joursoir.net> | 2020-12-02 10:56:36 +0000 |
commit | a6b8d6e475700efcb7ae1f7cdb7afeb2027fd4b7 (patch) | |
tree | aa4cd86651b71f5d3363e3ad344a364ef1e9c734 /src/server/database.hpp | |
parent | 7385c0352c7fe7e9ceca343400a5caa5ddd999d6 (diff) | |
download | want-chat-a6b8d6e475700efcb7ae1f7cdb7afeb2027fd4b7.tar.gz want-chat-a6b8d6e475700efcb7ae1f7cdb7afeb2027fd4b7.tar.bz2 want-chat-a6b8d6e475700efcb7ae1f7cdb7afeb2027fd4b7.zip |
add database class
Diffstat (limited to 'src/server/database.hpp')
-rw-r--r-- | src/server/database.hpp | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/src/server/database.hpp b/src/server/database.hpp new file mode 100644 index 0000000..8be6f06 --- /dev/null +++ b/src/server/database.hpp @@ -0,0 +1,65 @@ +#ifndef WC_DATABASE_H +#define WC_DATABASE_H + +#include <mysql.h> + +class DatabaseManager; + +class DB_ROW { + MYSQL_ROW row; + const unsigned int fields; +public: + DB_ROW(MYSQL_ROW *r, const unsigned int flds) : + row(*r), fields(flds) {} + ~DB_ROW(); + char *operator[](const int index); + + const unsigned int GetFieldCount() const { return fields; } +}; + +class AnswerDB { + friend class DatabaseManager; // ? + + MYSQL_RES *result; + DB_ROW *current_row; + const unsigned int fields; + unsigned long rows; + + AnswerDB(MYSQL_RES *res, unsigned int flds, unsigned long rws) : + result(res), current_row(0), fields(flds), rows(rws) {} +public: + ~AnswerDB(); + + DB_ROW *GetNextRow(); + const unsigned int GetFieldCount() const { return fields; } + unsigned long GetRowCount() const { return rows; } +}; + +class DatabaseManager { + MYSQL *connection; + + DatabaseManager(MYSQL *db) : connection(db) {} +public: + ~DatabaseManager(); + + static DatabaseManager *Connect(const char *host, const char *user, + const char *pass, const char *db_name, unsigned int port, + const char *unix_socket = 0, unsigned long flags = 0); + + AnswerDB *QuerySelect(const char *sql); +}; + +#endif + +/* + +надо как-то вызывать ~AnswerDB!! + +Answer DB *ans = server->Query("SELECT password FROM users WHERE name = '%s' ONLY ONE", strlen(..)) +DB_ROW *row = ans->GetNextRow(); +if(row) + name = row[0]; + password = row[1]; + + +*/
\ No newline at end of file |