summaryrefslogtreecommitdiff
path: root/lib/input/mysqlConn.h
blob: 3e775c1b3a05c7a6f3fa1ca79e302c6eaddcb720 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#ifndef MYGRATE_INPUT_MYSQLCONN_H
#define MYGRATE_INPUT_MYSQLCONN_H

#include <cstddef>
#include <dbConn.h>
#include <initializer_list>
#include <mysql.h>

namespace MyGrate {
	class DbValue;
}
namespace MyGrate::Input {
	class MySQLErr : public std::runtime_error {
	public:
		MySQLErr(const std::string & when, MYSQL *);
		MySQLErr(const std::string & when, MYSQL_STMT *);
	};

	class MySQLConn : public MYSQL, public DbConn {
	public:
		static constexpr auto paramMode {ParamMode::QMark};

		MySQLConn(const char * const host, const char * const user, const char * const pass, unsigned short port,
				const char * const db = "");
		MySQLConn(const MySQLConn &) = delete;
		MySQLConn(MySQLConn &&) = delete;
		~MySQLConn();

		void query(const char * const) override;
		void query(const char * const q, const std::initializer_list<DbValue> &) override;

		DbPrepStmtPtr prepare(const char * const, std::size_t) override;

		void beginTx() override;
		void commitTx() override;
		void rollbackTx() override;
	};
}

#endif