]> WPIA git - cassiopeia.git/blob - src/mysql.h
add: initial mysql-related stuff for job fetching
[cassiopeia.git] / src / mysql.h
1 #pragma once
2
3 #include <mysql/mysql.h>
4
5 #include <string>
6 #include <memory>
7 #include <tuple>
8
9 #include "database.h"
10
11 class MySQLJobProvider : public JobProvider {
12 private:
13     static std::shared_ptr<int> lib_ref;
14
15     std::shared_ptr<MYSQL> conn;
16
17 private:
18     std::shared_ptr<MYSQL> _connect( const std::string& server, const std::string& user, const std::string& password, const std::string& database );
19
20 public:
21     MySQLJobProvider( const std::string& server, const std::string& user, const std::string& password, const std::string& database );
22     ~MySQLJobProvider();
23
24 public:
25     bool connect( const std::string& server, const std::string& user, const std::string& password, const std::string& database );
26     bool disconnect();
27
28     std::string escape_string( const std::string& target );
29
30     std::pair< int, std::shared_ptr<MYSQL_RES> > query( const std::string& query );
31
32 public:
33     std::shared_ptr<Job> fetchJob();
34     bool finishJob( std::shared_ptr<Job> job );
35 };