diff --git a/libraries/plugins/bookie/bookie_api.cpp b/libraries/plugins/bookie/bookie_api.cpp index 98bd2d23..fd8b999e 100644 --- a/libraries/plugins/bookie/bookie_api.cpp +++ b/libraries/plugins/bookie/bookie_api.cpp @@ -171,6 +171,7 @@ fc::variants bookie_api_impl::get_objects(const vector& ids) con const auto &idx = db->get_index_type(); const auto &aidx = dynamic_cast(idx); const auto &refs = aidx.get_secondary_index(); + auto tmp = id.as(); auto iter = refs.internal.find(id.as()); if (iter != refs.internal.end()) return iter->second.ephemeral_bet_object.to_variant(); diff --git a/libraries/plugins/bookie/bookie_plugin.cpp b/libraries/plugins/bookie/bookie_plugin.cpp index 93b24c39..4e9a7710 100644 --- a/libraries/plugins/bookie/bookie_plugin.cpp +++ b/libraries/plugins/bookie/bookie_plugin.cpp @@ -63,7 +63,10 @@ namespace detail void persistent_bet_index::object_inserted(const object& obj) { const bet_object& bet_obj = *boost::polymorphic_downcast(&obj); - internal.insert( {bet_obj.id, bet_obj} ); + if(0 == internal.count(bet_obj.id)) + internal.insert( {bet_obj.id, bet_obj} ); + else + internal[bet_obj.id] = bet_obj; } void persistent_bet_index::object_modified(const object& after) { @@ -79,7 +82,11 @@ void persistent_bet_index::object_modified(const object& after) void persistent_betting_market_index::object_inserted(const object& obj) { const betting_market_object& betting_market_obj = *boost::polymorphic_downcast(&obj); - ephemeral_betting_market_object.insert( {betting_market_obj.id, betting_market_obj} ); + if(0 == ephemeral_betting_market_object.count(betting_market_obj.id)) + ephemeral_betting_market_object.insert( {betting_market_obj.id, betting_market_obj} ); + else + ephemeral_betting_market_object[betting_market_obj.id] = betting_market_obj; + } void persistent_betting_market_index::object_modified(const object& after) { @@ -95,7 +102,10 @@ void persistent_betting_market_index::object_modified(const object& after) void persistent_betting_market_group_index::object_inserted(const object& obj) { const betting_market_group_object& betting_market_group_obj = *boost::polymorphic_downcast(&obj); - internal.insert( {betting_market_group_obj.id, betting_market_group_obj} ); + if(0 == internal.count(betting_market_group_obj.id)) + internal.insert( {betting_market_group_obj.id, betting_market_group_obj} ); + else + internal[betting_market_group_obj.id] = betting_market_group_obj; } void persistent_betting_market_group_index::object_modified(const object& after) { @@ -111,7 +121,10 @@ void persistent_betting_market_group_index::object_modified(const object& after) void persistent_event_index::object_inserted(const object& obj) { const event_object& event_obj = *boost::polymorphic_downcast(&obj); - ephemeral_event_object.insert( {event_obj.id, event_obj} ); + if(0 == ephemeral_event_object.count(event_obj.id)) + ephemeral_event_object.insert( {event_obj.id, event_obj} ); + else + ephemeral_event_object[event_obj.id] = event_obj; } void persistent_event_index::object_modified(const object& after) { diff --git a/libraries/plugins/bookie/include/graphene/bookie/bookie_objects.hpp b/libraries/plugins/bookie/include/graphene/bookie/bookie_objects.hpp index b234709d..8ec58bd6 100644 --- a/libraries/plugins/bookie/include/graphene/bookie/bookie_objects.hpp +++ b/libraries/plugins/bookie/include/graphene/bookie/bookie_objects.hpp @@ -91,6 +91,8 @@ class persistent_betting_market_group_index : public secondary_index public: struct internal_type { + internal_type() = default; + internal_type(const betting_market_group_object& other) : ephemeral_betting_market_group_object{other} {} @@ -151,6 +153,8 @@ class persistent_bet_index : public secondary_index public: struct internal_type { + internal_type() = default; + internal_type(const bet_object& other) : ephemeral_bet_object{other} {}