void endSave();
bool initialized() const { return m_initialized; }
-
protected:
Database_SQLite3(const std::string &savedir, const std::string &dbname);
inline void int64_to_sqlite(sqlite3_stmt *s, int iCol, s64 val) const
{
- sqlite3_vrfy(sqlite3_bind_int64(s, iCol, (sqlite3_int64)val));
+ sqlite3_vrfy(sqlite3_bind_int64(s, iCol, (sqlite3_int64) val));
}
inline void double_to_sqlite(sqlite3_stmt *s, int iCol, double val) const
inline std::string sqlite_to_string(sqlite3_stmt *s, int iCol)
{
- const char *text = reinterpret_cast<const char *>(
- sqlite3_column_text(s, iCol));
+ const char* text = reinterpret_cast<const char*>(sqlite3_column_text(s, iCol));
return std::string(text ? text : "");
}
inline u32 sqlite_to_uint(sqlite3_stmt *s, int iCol)
{
- return (u32)sqlite3_column_int(s, iCol);
+ return (u32) sqlite3_column_int(s, iCol);
}
inline s64 sqlite_to_int64(sqlite3_stmt *s, int iCol)
{
- return (s64)sqlite3_column_int64(s, iCol);
+ return (s64) sqlite3_column_int64(s, iCol);
}
inline u64 sqlite_to_uint64(sqlite3_stmt *s, int iCol)
{
- return (u64)sqlite3_column_int64(s, iCol);
+ return (u64) sqlite3_column_int64(s, iCol);
}
inline float sqlite_to_float(sqlite3_stmt *s, int iCol)
{
- return (float)sqlite3_column_double(s, iCol);
+ return (float) sqlite3_column_double(s, iCol);
}
inline const v3f sqlite_to_v3f(sqlite3_stmt *s, int iCol)
}
// Query verifiers helpers
- inline void sqlite3_vrfy(
- int s, const std::string &m = "", int r = SQLITE_OK) const
+ inline void sqlite3_vrfy(int s, const std::string &m = "", int r = SQLITE_OK) const
{
if (s != r)
throw DatabaseException(m + ": " + sqlite3_errmsg(m_database));
}
- inline void sqlite3_vrfy(
- const int s, const int r, const std::string &m = "") const
+ inline void sqlite3_vrfy(const int s, const int r, const std::string &m = "") const
{
sqlite3_vrfy(s, m, r);
}
virtual void initStatements() = 0;
sqlite3 *m_database = nullptr;
-
private:
// Open the database
void openDatabase();
void beginSave() { Database_SQLite3::beginSave(); }
void endSave() { Database_SQLite3::endSave(); }
-
protected:
virtual void createDatabase();
virtual void initStatements();
sqlite3_stmt *m_stmt_delete_privs = nullptr;
sqlite3_stmt *m_stmt_last_insert_rowid = nullptr;
};
+
+class ModMetadataDatabaseSQLite3 : private Database_SQLite3, public ModMetadataDatabase
+{
+public:
+ ModMetadataDatabaseSQLite3(const std::string &savedir);
+ virtual ~ModMetadataDatabaseSQLite3();
+
+ virtual bool getModEntries(const std::string &modname, StringMap *storage);
+ virtual bool setModEntry(const std::string &modname,
+ const std::string &key, const std::string &value);
+ virtual bool removeModEntry(const std::string &modname, const std::string &key);
+ virtual void listMods(std::vector<std::string> *res);
+
+ virtual void beginSave() { Database_SQLite3::beginSave(); }
+ virtual void endSave() { Database_SQLite3::endSave(); }
+
+protected:
+ virtual void createDatabase();
+ virtual void initStatements();
+
+private:
+ sqlite3_stmt *m_stmt_get = nullptr;
+ sqlite3_stmt *m_stmt_set = nullptr;
+ sqlite3_stmt *m_stmt_remove = nullptr;
+};