first draft is working
This commit is contained in:
@@ -1,13 +1,7 @@
|
||||
#include "ShadowrunDb.hpp"
|
||||
#include <format>
|
||||
#include <functional>
|
||||
#include <map>
|
||||
#include <optional>
|
||||
#include "database.hpp"
|
||||
#include "databasepool.h"
|
||||
#include "crow.h"
|
||||
#include "utils.hpp"
|
||||
#include "sqlite_orm.h"
|
||||
|
||||
using namespace std;
|
||||
using namespace sqlite_orm;
|
||||
@@ -28,53 +22,11 @@ int64_t createCharacter(const string& name){
|
||||
if (!character.empty()) {
|
||||
return character[0].id;
|
||||
} else {
|
||||
auto c = createShadowrunCharacter(name);
|
||||
auto c = newShadowrunCharacter(name);
|
||||
return db->insert(c);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
bool storeCharacterData(int64_t characterKey, vector<pair<const string, const string>>& idValues){
|
||||
auto characterData = getCharacterData(characterKey);
|
||||
std::map<string, ShadowrunCharacterData*> dataMap;
|
||||
for(auto& data : characterData) {
|
||||
dataMap[data.name] = &data;
|
||||
}
|
||||
|
||||
auto db = dbpool.acquire();
|
||||
for (auto& idValue : idValues) {
|
||||
const string& name = idValue.first;
|
||||
const string& value = idValue.second;
|
||||
|
||||
// update if already exist
|
||||
auto it = dataMap.find(name);
|
||||
if(it != dataMap.end()){
|
||||
db->update_all(
|
||||
sqlite_orm::set(
|
||||
assign(&ShadowrunData::value, idValue.second),
|
||||
assign(&ShadowrunData::updated_at, utils::currentTime())
|
||||
),
|
||||
where(
|
||||
c(&ShadowrunData::name) == name and
|
||||
c(&ShadowrunData::character_id) == characterKey
|
||||
)
|
||||
);
|
||||
} else {
|
||||
ShadowrunData entry {
|
||||
.id = -1,
|
||||
.character_id = static_cast<int>(characterKey),
|
||||
.name = name,
|
||||
.value = value,
|
||||
.created_at = utils::currentTime(),
|
||||
.updated_at = "",
|
||||
};
|
||||
db->insert(entry);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
*/
|
||||
|
||||
std::vector<ShadowrunCharacter> getCharacters(){
|
||||
auto db = dbpool.acquire();
|
||||
return db->get_all<ShadowrunCharacter>();
|
||||
@@ -105,8 +57,31 @@ vector<ShadowrunCharacterData> getChracterData(int character_id)
|
||||
return characterData;
|
||||
}
|
||||
|
||||
int storeCharacterData(const ShadowrunCharacterData& data)
|
||||
{
|
||||
int storeCharacterData(int characterId, const Type type, const string& json){
|
||||
auto db = dbpool.acquire();
|
||||
auto characterData = db->get_all<ShadowrunCharacterData>(
|
||||
where(
|
||||
(c(&ShadowrunCharacterData::character_id) == characterId) and
|
||||
(c(&ShadowrunCharacterData::type) == static_cast<int>(type)))
|
||||
);
|
||||
|
||||
if(characterData.empty()){
|
||||
ShadowrunCharacterData character = newShadowrunCharacterData(characterId, type, json);
|
||||
return db->insert(character);
|
||||
}
|
||||
else {
|
||||
if (characterData.size() > 1){
|
||||
CROW_LOG_ERROR << "Character ID: " << characterId << "has mote than 1 type: " << magic_enum::enum_name(type);
|
||||
}
|
||||
auto& character = characterData[0];
|
||||
character.json = json;
|
||||
character.updated_at = utils::currentTime();
|
||||
db->update(character);
|
||||
return character.id;
|
||||
}
|
||||
}
|
||||
|
||||
int storeCharacterData(const ShadowrunCharacterData& data){
|
||||
auto db = dbpool.acquire();
|
||||
auto characterData = db->get_optional<ShadowrunCharacterData>(data.id);
|
||||
|
||||
@@ -119,13 +94,4 @@ int storeCharacterData(const ShadowrunCharacterData& data)
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
vector<ShadowrunData> getCharacterData(int64_t characterKey) {
|
||||
auto db = dbpool.acquire();
|
||||
return db->get_all<ShadowrunData>(
|
||||
where(c(&ShadowrunData::character_id) == characterKey)
|
||||
);
|
||||
}
|
||||
*/
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user