Hash value now stored as a blob instead of a json string.

This commit is contained in:
Sam 2021-11-14 18:02:28 -05:00
parent 903c57b862
commit 8feb9fb67b
3 changed files with 8 additions and 11 deletions

View File

@ -42,13 +42,13 @@ CREATE TABLE _skill_group
earned_exp INTEGER NOT NULL,
spent_exp INTEGER NOT NULL,
skills TEXT NOT NULL,
hash_val TEXT NOT NULL,
hash_val BLOB NOT NULL,
FOREIGN KEY(entity_id) REFERENCES entity(entity_id),
PRIMARY KEY(entity_id,skill_group_kind)
);
INSERT INTO _skill_group
SELECT sg.entity_id, sg.skill_group_kind, sg.exp, 0, "", ""
SELECT sg.entity_id, sg.skill_group_kind, sg.exp, 0, "", x'0000000000000000000000000000000000000000000000000000000000000000'
FROM skill_group sg;
-- Skills now tracked in skill_group table, can ust drop

View File

@ -552,10 +552,7 @@ fn convert_skill_groups_from_database(
// hash of the skill group, don't invalidate skills; otherwise invalidate the
// skills in this skill_group.
if skill_group.spent_exp as u32 == new_skill_group.spent_exp
&& serde_json::from_str::<Vec<u8>>(&skill_group.hash_val)
.ok()
.as_ref()
== skillset::SKILL_GROUP_HASHES.get(&skill_group_kind)
&& Some(&skill_group.hash_val) == skillset::SKILL_GROUP_HASHES.get(&skill_group_kind)
{
let mut new_skills =
serde_json::from_str::<Vec<skills::Skill>>(&skill_group.skills).unwrap_or_default();
@ -580,10 +577,10 @@ pub fn convert_skill_groups_to_database(
spent_exp: sg.spent_exp as i32,
// If fails to convert, just forces a respec on next login
skills: serde_json::to_string(&sg.ordered_skills).unwrap_or_else(|_| "".to_string()),
hash_val: serde_json::to_string(
&skillset::SKILL_GROUP_HASHES.get(&sg.skill_group_kind),
)
.unwrap_or_else(|_| "".to_string()),
hash_val: skillset::SKILL_GROUP_HASHES
.get(&sg.skill_group_kind)
.cloned()
.unwrap_or_default(),
})
.collect()
}

View File

@ -26,7 +26,7 @@ pub struct SkillGroup {
pub earned_exp: i32,
pub spent_exp: i32,
pub skills: String,
pub hash_val: String,
pub hash_val: Vec<u8>,
}
pub struct Pet {