new db interface

This commit is contained in:
2025-10-23 21:28:52 +02:00
parent 89e3b95ca2
commit dd56a8d57e
8 changed files with 24936 additions and 58 deletions

View File

@@ -9,12 +9,16 @@
#include <set>
#include <map>
#include "crow.h"
#include "sqlite_orm.h"
#include "ShadowrunDb.hpp"
class Database {
typedef std::vector<std::variant<int64_t, std::string>> QueryData;
public:
static constexpr std::string dbFile = "app.db";
Database();
~Database();
@@ -74,6 +78,26 @@ private:
sqlite3_stmt* prepareStmt(const std::string& sql);
sqlite3* m_db;
};
inline auto make_database() {
return sqlite_orm::make_storage(Database::dbFile,
sqlite_orm::make_table("shadowrun_characters",
sqlite_orm::make_column("id", &shadowrun::ShadowrunCharacter::id, sqlite_orm::primary_key()),
sqlite_orm::make_column("name", &shadowrun::ShadowrunCharacter::name, sqlite_orm::not_null()),
sqlite_orm::make_column("created_at", &shadowrun::ShadowrunCharacter::created_at, sqlite_orm::default_value("CURRENT_TIMESTAMP"))
),
sqlite_orm::make_table("shadowrun_data",
sqlite_orm::make_column("id", &shadowrun::ShadowrunData::id, sqlite_orm::primary_key()),
sqlite_orm::make_column("character_id", &shadowrun::ShadowrunData::character_id, sqlite_orm::not_null()),
sqlite_orm::make_column("name", &shadowrun::ShadowrunData::name, sqlite_orm::not_null()),
sqlite_orm::make_column("value", &shadowrun::ShadowrunData::value),
sqlite_orm::make_column("created_at", &shadowrun::ShadowrunData::created_at, sqlite_orm::default_value("CURRENT_TIMESTAMP")),
sqlite_orm::make_column("updated_at", &shadowrun::ShadowrunData::updated_at, sqlite_orm::default_value("CURRENT_TIMESTAMP")),
sqlite_orm::foreign_key(&shadowrun::ShadowrunData::character_id).references(&shadowrun::ShadowrunCharacter::id).on_delete.cascade()
));
}
#endif // __DATABASE_H__