fixed bug where lock was never released, attributes look better now, can be accees on other devices

This commit is contained in:
2026-01-18 23:54:52 +01:00
parent b270a95434
commit 400954babc
6 changed files with 60 additions and 202 deletions

View File

@@ -12,40 +12,36 @@ int64_t createCharacter(const string& name){
if (name.empty())
return -1;
int64_t id;
auto db = dbpool.acquire();
auto character = db->get_all<ShadowrunCharacter>(
where(c(&ShadowrunCharacter::name) == name),
limit(1)
auto character = db->get_optional<ShadowrunCharacter>(
where(c(&ShadowrunCharacter::name) == name)
);
if (!character.empty()) {
return character[0].id;
if (character.has_value()) {
id = character.value().id;
} else {
auto c = newShadowrunCharacter(name);
return db->insert(c);
id = db->insert(c);
}
dbpool.release(db);
return id;
}
std::vector<ShadowrunCharacter> getCharacters(){
auto db = dbpool.acquire();
return db->get_all<ShadowrunCharacter>();
auto characters = db->get_all<ShadowrunCharacter>();
dbpool.release(db);
return characters;
}
optional<ShadowrunCharacter> getChracter(int id)
{
auto db = dbpool.acquire();
auto character = db->get_all<ShadowrunCharacter>(
where(c(&ShadowrunCharacter::id) == id),
limit(1)
);
if (character.empty())
{
return {};
}
else {
return character[0];
}
optional<ShadowrunCharacter> character = db->get_optional<ShadowrunCharacter>(id);
dbpool.release(db);
return character;
}
vector<ShadowrunCharacterData> getChracterData(int character_id)
@@ -54,10 +50,12 @@ vector<ShadowrunCharacterData> getChracterData(int character_id)
auto characterData = db->get_all<ShadowrunCharacterData>(
where(c(&ShadowrunCharacterData::character_id) == character_id)
);
dbpool.release(db);
return characterData;
}
int storeCharacterData(int characterId, const Type type, const string& json){
int id;
auto db = dbpool.acquire();
auto characterData = db->get_all<ShadowrunCharacterData>(
where(
@@ -67,7 +65,7 @@ int storeCharacterData(int characterId, const Type type, const string& json){
if(characterData.empty()){
ShadowrunCharacterData character = newShadowrunCharacterData(characterId, type, json);
return db->insert(character);
id = db->insert(character);
}
else {
if (characterData.size() > 1){
@@ -77,21 +75,26 @@ int storeCharacterData(int characterId, const Type type, const string& json){
character.json = json;
character.updated_at = utils::currentTime();
db->update(character);
return character.id;
id = character.id;
}
dbpool.release(db);
return id;
}
int storeCharacterData(const ShadowrunCharacterData& data){
int id;
auto db = dbpool.acquire();
auto characterData = db->get_optional<ShadowrunCharacterData>(data.id);
if(!characterData.has_value()){
return db->insert(data);
id = db->insert(data);
}
else {
db->update(data);
return data.id;
id = data.id;
}
dbpool.release(db);
return id;
}
}