#pragma once
#include <memory>
#include <string>
#include "sqlite_queue.h"
class sqlite3;
class sqlite_sth;
class sqlite_request;
class sqlite_dbh {
public:
sqlite_dbh(const std::string &filename);
virtual ~sqlite_dbh();
/** Returns the filename corresponding to this sqlite database */
const std::string &filename() const { return filename_; }
/** Prepares a statement handle from the given SQL */
sqlite_sth *prepare(const std::string &sql);
/** Returns the event FD corresponding to this database */
int eventfd() const { return fd_; }
void push(sqlite_queue::item_type &&req);
sqlite3 *db() { return db_; }
private:
const std::string filename_;
sqlite3 *db_;
int fd_;
std::unique_ptr<sqlite_queue> queue_;
};