From 38f1cbdcd6974b60c31e2a478c24858972c0c789 Mon Sep 17 00:00:00 2001 From: Eric Frias Date: Wed, 30 Aug 2017 19:21:27 -0400 Subject: [PATCH] Add list_events_in_group() and get_unmatched_bets_for_bettor() API calls --- libraries/app/database_api.cpp | 30 +++++++++++++++++-- .../app/include/graphene/app/database_api.hpp | 25 ++++++++++++---- .../include/graphene/chain/event_object.hpp | 4 ++- 3 files changed, 49 insertions(+), 10 deletions(-) diff --git a/libraries/app/database_api.cpp b/libraries/app/database_api.cpp index 7ebd3b69..bb921cc9 100644 --- a/libraries/app/database_api.cpp +++ b/libraries/app/database_api.cpp @@ -107,8 +107,10 @@ class database_api_impl : public std::enable_shared_from_this // Peerplays vector list_sports() const; vector list_event_groups(sport_id_type sport_id) const; + vector list_events_in_group(event_group_id_type event_group_id) const; vector list_betting_market_groups(event_id_type) const; vector list_betting_markets(betting_market_group_id_type) const; + vector get_unmatched_bets_for_bettor(betting_market_id_type, account_id_type) const; // Markets / feeds vector get_limit_orders(asset_id_type a, asset_id_type b, uint32_t limit)const; @@ -1025,7 +1027,7 @@ vector database_api_impl::list_sports() const vector database_api::list_event_groups(sport_id_type sport_id) const { - return my->list_event_groups(sport_id); + return my->list_event_groups(sport_id); } vector database_api_impl::list_event_groups(sport_id_type sport_id) const @@ -1034,9 +1036,20 @@ vector database_api_impl::list_event_groups(sport_id_type sp return boost::copy_range >(event_group_idx.equal_range(sport_id)); } +vector database_api::list_events_in_group(event_group_id_type event_group_id) const +{ + return my->list_events_in_group(event_group_id); +} + +vector database_api_impl::list_events_in_group(event_group_id_type event_group_id) const +{ + const auto& event_idx = _db.get_index_type().indices().get(); + return boost::copy_range >(event_idx.equal_range(event_group_id)); +} + vector database_api::list_betting_market_groups(event_id_type event_id) const { - return my->list_betting_market_groups(event_id); + return my->list_betting_market_groups(event_id); } vector database_api_impl::list_betting_market_groups(event_id_type event_id) const @@ -1047,7 +1060,7 @@ vector database_api_impl::list_betting_market_group vector database_api::list_betting_markets(betting_market_group_id_type betting_market_group_id) const { -return my->list_betting_markets(betting_market_group_id); + return my->list_betting_markets(betting_market_group_id); } vector database_api_impl::list_betting_markets(betting_market_group_id_type betting_market_group_id) const @@ -1056,6 +1069,17 @@ vector database_api_impl::list_betting_markets(betting_ma return boost::copy_range >(betting_market_idx.equal_range(betting_market_group_id)); } +vector database_api::get_unmatched_bets_for_bettor(betting_market_id_type betting_market_id, account_id_type bettor_id) const +{ + return my->get_unmatched_bets_for_bettor(betting_market_id, bettor_id); +} + +vector database_api_impl::get_unmatched_bets_for_bettor(betting_market_id_type betting_market_id, account_id_type bettor_id) const +{ + const auto& bet_idx = _db.get_index_type().indices().get(); + return boost::copy_range >(bet_idx.equal_range(std::make_tuple(betting_market_id, bettor_id))); +} + ////////////////////////////////////////////////////////////////////// // // // Markets / feeds // diff --git a/libraries/app/include/graphene/app/database_api.hpp b/libraries/app/include/graphene/app/database_api.hpp index 9198adbf..c13cea27 100644 --- a/libraries/app/include/graphene/app/database_api.hpp +++ b/libraries/app/include/graphene/app/database_api.hpp @@ -40,6 +40,7 @@ #include #include #include +#include #include #include @@ -361,6 +362,11 @@ class database_api */ vector list_event_groups(sport_id_type sport_id) const; + /** + * @brief Return a list of all events in an event group + */ + vector list_events_in_group(event_group_id_type event_group_id) const; + /** * @brief Return a list of all betting market groups for an event */ @@ -371,6 +377,11 @@ class database_api */ vector list_betting_markets(betting_market_group_id_type) const; + /** + * @brief Return a list of all unmatched bets for a given account (includes bets on all markets) + */ + vector get_unmatched_bets_for_bettor(betting_market_id_type, account_id_type) const; + ///////////////////// // Markets / feeds // ///////////////////// @@ -690,12 +701,14 @@ FC_API(graphene::app::database_api, (list_assets) (lookup_asset_symbols) - // Peerplays - (list_sports) - (get_global_betting_statistics) - (list_event_groups) - (list_betting_market_groups) - (list_betting_markets) + // Peerplays + (list_sports) + (get_global_betting_statistics) + (list_event_groups) + (list_events_in_group) + (list_betting_market_groups) + (list_betting_markets) + (get_unmatched_bets_for_bettor) // Markets / feeds (get_order_book) diff --git a/libraries/chain/include/graphene/chain/event_object.hpp b/libraries/chain/include/graphene/chain/event_object.hpp index f866540f..88ccd843 100644 --- a/libraries/chain/include/graphene/chain/event_object.hpp +++ b/libraries/chain/include/graphene/chain/event_object.hpp @@ -51,10 +51,12 @@ class event_object : public graphene::db::abstract_object< event_object > vector scores; }; +struct by_event_group_id; typedef multi_index_container< event_object, indexed_by< - ordered_unique< tag, member< object, object_id_type, &object::id > > > > event_object_multi_index_type; + ordered_unique< tag, member< object, object_id_type, &object::id > >, + ordered_non_unique< tag, member< event_object, event_group_id_type, &event_object::event_group_id > > > > event_object_multi_index_type; typedef generic_index event_object_index; } } // graphene::chain