summaryrefslogtreecommitdiff
path: root/src/lib/exceptions.h
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2025-01-19 00:21:11 +0100
committerCarl Hetherington <cth@carlh.net>2025-01-22 14:34:25 +0100
commit16b3f6c6245acf9689349dbd2af7d4411f861767 (patch)
tree14bedff2389bf48c643e1a7d34c82d8265251801 /src/lib/exceptions.h
parent9964a038c1a1ed86510439a33b7022807af31d8d (diff)
Move sqlite database open/close to a new SQLiteDatabase.
Diffstat (limited to 'src/lib/exceptions.h')
-rw-r--r--src/lib/exceptions.h24
1 files changed, 10 insertions, 14 deletions
diff --git a/src/lib/exceptions.h b/src/lib/exceptions.h
index c1bb8f6b6..dae64fb5d 100644
--- a/src/lib/exceptions.h
+++ b/src/lib/exceptions.h
@@ -39,6 +39,9 @@ extern "C" {
#include <stdexcept>
+class SQLiteDatabase;
+
+
/** @class DecodeError
* @brief A low-level problem with the decoder (possibly due to the nature
* of a source file).
@@ -484,19 +487,19 @@ public:
class SQLError : public std::runtime_error
{
public:
- SQLError(sqlite3* db, char const* s)
+ SQLError(SQLiteDatabase& db, char const* s)
: std::runtime_error(get_message(db, s))
{
_filename = get_filename(db);
}
- SQLError(sqlite3* db, int rc)
+ SQLError(SQLiteDatabase& db, int rc)
: std::runtime_error(get_message(db, rc))
{
_filename = get_filename(db);
}
- SQLError(sqlite3* db, int rc, std::string doing)
+ SQLError(SQLiteDatabase& db, int rc, std::string doing)
: std::runtime_error(get_message(db, rc, doing))
{
_filename = get_filename(db);
@@ -507,26 +510,19 @@ public:
}
private:
- boost::filesystem::path get_filename(sqlite3* db)
- {
- if (auto filename = sqlite3_db_filename(db, "main")) {
- return filename;
- }
-
- return {};
- }
+ boost::filesystem::path get_filename(SQLiteDatabase& db);
- std::string get_message(sqlite3* db, char const* s)
+ std::string get_message(SQLiteDatabase& db, char const* s)
{
return String::compose("%1 (in %2)", s, get_filename(db));
}
- std::string get_message(sqlite3* db, int rc)
+ std::string get_message(SQLiteDatabase& db, int rc)
{
return String::compose("%1 (in %2)", sqlite3_errstr(rc), get_filename(db));
}
- std::string get_message(sqlite3* db, int rc, std::string doing)
+ std::string get_message(SQLiteDatabase& db, int rc, std::string doing)
{
return String::compose("%1 (while doing %2) (in %3)", sqlite3_errstr(rc), doing, get_filename(db));
}