Scorum
bet_objects.hpp
Go to the documentation of this file.
1 #pragma once
2 
6 
7 #include <boost/multi_index/hashed_index.hpp>
8 #include <boost/multi_index/composite_key.hpp>
9 
10 namespace scorum {
11 namespace chain {
12 
17 
18 enum class pending_bet_kind : uint8_t
19 {
20  live = 0b01,
21  non_live = 0b10
22 };
23 
24 struct bet_data
25 {
27  fc::time_point_sec created;
28 
32 
33  class odds odds;
35 };
36 
37 class bet_uuid_history_object : public object<bet_uuid_history_object_type, bet_uuid_history_object>
38 {
39 public:
41  CHAINBASE_DEFAULT_CONSTRUCTOR(bet_uuid_history_object)
43 
44  id_type id;
46 };
47 
49 {
50 public:
52  CHAINBASE_DEFAULT_CONSTRUCTOR(pending_bet_object)
54 
55  id_type id;
56  uuid_type game_uuid;
58 
59  bet_data data;
60 
61  // clang-format off
62  fc::time_point_sec get_created() const { return data.created; }
63  account_name_type get_better() const { return data.better; }
64  pending_bet_kind get_kind() const { return data.kind; }
65  uuid_type get_uuid() const { return data.uuid; }
66  wincase_type get_wincase() const { return data.wincase; }
67 
68  // clang-format on
69 };
70 
71 class matched_bet_object : public object<matched_bet_object_type, matched_bet_object>
72 {
73 public:
75  CHAINBASE_DEFAULT_CONSTRUCTOR(matched_bet_object)
77 
78  id_type id;
79  uuid_type game_uuid;
81  fc::time_point_sec created;
82 
83  bet_data bet1_data;
84  bet_data bet2_data;
85 
86  // clang-format off
87  uuid_type get_bet1_uuid() const { return bet1_data.uuid; }
88  uuid_type get_bet2_uuid() const { return bet2_data.uuid; }
89  // clang-format on
90 };
91 
92 struct by_uuid;
93 struct by_game_uuid_kind;
94 struct by_game_uuid_market;
95 struct by_game_uuid_created;
96 
97 struct by_game_uuid_wincase_asc;
98 
100  = shared_multi_index_container<bet_uuid_history_object,
101  indexed_by<ordered_unique<tag<by_id>,
105  hashed_unique<tag<by_uuid>,
107  uuid_type,
109 
111  = shared_multi_index_container<pending_bet_object,
112  indexed_by<ordered_unique<tag<by_id>,
113  member<pending_bet_object,
116 
117  hashed_unique<tag<by_uuid>,
118  const_mem_fun<pending_bet_object,
119  uuid_type,
121 
122  ordered_unique<tag<by_game_uuid_wincase_asc>,
123  composite_key<pending_bet_object,
124  member<pending_bet_object,
125  uuid_type,
127  const_mem_fun<pending_bet_object,
128  wincase_type,
129  &pending_bet_object::
130  get_wincase>,
131  const_mem_fun<pending_bet_object,
132  fc::time_point_sec,
133  &pending_bet_object::
134  get_created>,
135  member<pending_bet_object,
138  composite_key_compare<std::less<uuid_type>,
139  std::less<wincase_type>,
140  std::less<time_point_sec>,
141  std::less<pending_bet_id_type>>>,
142 
143  ordered_unique<tag<by_game_uuid_kind>,
144  composite_key<pending_bet_object,
145  member<pending_bet_object,
146  uuid_type,
148  const_mem_fun<pending_bet_object,
151  member<pending_bet_object,
154 
155  ordered_unique<tag<by_game_uuid_market>,
156  composite_key<pending_bet_object,
157  member<pending_bet_object,
158  uuid_type,
160  member<pending_bet_object,
161  market_type,
163  member<pending_bet_object,
166 
167  ordered_unique<tag<by_game_uuid_created>,
168  composite_key<pending_bet_object,
169  member<pending_bet_object,
170  uuid_type,
172  const_mem_fun<pending_bet_object,
173  fc::time_point_sec,
174  &pending_bet_object::
175  get_created>,
176  member<pending_bet_object,
179 
180 struct by_bet1_uuid;
181 struct by_bet2_uuid;
182 
184  = shared_multi_index_container<matched_bet_object,
185  indexed_by<ordered_unique<tag<by_id>,
186  member<matched_bet_object,
189 
190  ordered_unique<tag<by_bet1_uuid>,
191  composite_key<matched_bet_object,
192  const_mem_fun<matched_bet_object,
193  uuid_type,
194  &matched_bet_object::
195  get_bet1_uuid>,
196  member<matched_bet_object,
199 
200  ordered_unique<tag<by_bet2_uuid>,
201  composite_key<matched_bet_object,
202  const_mem_fun<matched_bet_object,
203  uuid_type,
204  &matched_bet_object::
205  get_bet2_uuid>,
206  member<matched_bet_object,
209 
210  ordered_unique<tag<by_game_uuid_market>,
211  composite_key<matched_bet_object,
212  member<matched_bet_object,
213  uuid_type,
215  member<matched_bet_object,
216  market_type,
218  member<matched_bet_object,
221 
222  ordered_unique<tag<by_game_uuid_created>,
223  composite_key<matched_bet_object,
224  member<matched_bet_object,
225  uuid_type,
227  member<matched_bet_object,
228  fc::time_point_sec,
230  member<matched_bet_object,
233 }
234 }
235 
236 // clang-format off
237 
239  (id)
240  (uuid)
241  )
242 
244 
246  (live)
247  (non_live))
248 
250  (uuid)
251  (created)
252  (better)
253  (wincase)
254  (stake)
255  (odds)
256  (kind))
257 
259  (id)
260  (game_uuid)
261  (market)
262  (data)
263  )
264 
266 
268  (id)
269  (game_uuid)
270  (market)
271  (created)
272  (bet1_data)
273  (bet2_data)
274  )
275 
277 // clang-format on
wincase_type get_wincase() const
Definition: bet_objects.hpp:66
account_name_type get_better() const
Definition: bet_objects.hpp:63
pending_bet_kind get_kind() const
Definition: bet_objects.hpp:64
#define SCORUM_SYMBOL
Definition: config.hpp:102
FC_REFLECT_ENUM(scorum::protocol::game_status,(created)(started)(finished)(resolved)(expired)(cancelled)) namespace fc
Definition: game_status.hpp:18
FC_REFLECT(appender_args,(appender)(stream)) FC_REFLECT_DERIVED(file_appender_args
Definition: game.cpp:4
shared_multi_index_container< bet_uuid_history_object, indexed_by< ordered_unique< tag< by_id >, member< bet_uuid_history_object, bet_uuid_history_id_type, &bet_uuid_history_object::id > >, hashed_unique< tag< by_uuid >, member< bet_uuid_history_object, uuid_type, &bet_uuid_history_object::uuid > >> > bet_uuid_history_index
oid< bet_uuid_history_object > bet_uuid_history_id_type
oid< pending_bet_object > pending_bet_id_type
shared_multi_index_container< pending_bet_object, indexed_by< ordered_unique< tag< by_id >, member< pending_bet_object, pending_bet_id_type, &pending_bet_object::id > >, hashed_unique< tag< by_uuid >, const_mem_fun< pending_bet_object, uuid_type, &pending_bet_object::get_uuid > >, ordered_unique< tag< by_game_uuid_wincase_asc >, composite_key< pending_bet_object, member< pending_bet_object, uuid_type, &pending_bet_object::game_uuid >, const_mem_fun< pending_bet_object, wincase_type, &pending_bet_object::get_wincase >, const_mem_fun< pending_bet_object, fc::time_point_sec, &pending_bet_object::get_created >, member< pending_bet_object, pending_bet_id_type, &pending_bet_object::id > >, composite_key_compare< std::less< uuid_type >, std::less< wincase_type >, std::less< time_point_sec >, std::less< pending_bet_id_type > >>, ordered_unique< tag< by_game_uuid_kind >, composite_key< pending_bet_object, member< pending_bet_object, uuid_type, &pending_bet_object::game_uuid >, const_mem_fun< pending_bet_object, pending_bet_kind, &pending_bet_object::get_kind >, member< pending_bet_object, pending_bet_id_type, &pending_bet_object::id > >>, ordered_unique< tag< by_game_uuid_market >, composite_key< pending_bet_object, member< pending_bet_object, uuid_type, &pending_bet_object::game_uuid >, member< pending_bet_object, market_type, &pending_bet_object::market >, member< pending_bet_object, pending_bet_id_type, &pending_bet_object::id > >>, ordered_unique< tag< by_game_uuid_created >, composite_key< pending_bet_object, member< pending_bet_object, uuid_type, &pending_bet_object::game_uuid >, const_mem_fun< pending_bet_object, fc::time_point_sec, &pending_bet_object::get_created >, member< pending_bet_object, pending_bet_id_type, &pending_bet_object::id > >> >> pending_bet_index
oid< matched_bet_object > matched_bet_id_type
shared_multi_index_container< matched_bet_object, indexed_by< ordered_unique< tag< by_id >, member< matched_bet_object, matched_bet_id_type, &matched_bet_object::id > >, ordered_unique< tag< by_bet1_uuid >, composite_key< matched_bet_object, const_mem_fun< matched_bet_object, uuid_type, &matched_bet_object::get_bet1_uuid >, member< matched_bet_object, matched_bet_id_type, &matched_bet_object::id > >>, ordered_unique< tag< by_bet2_uuid >, composite_key< matched_bet_object, const_mem_fun< matched_bet_object, uuid_type, &matched_bet_object::get_bet2_uuid >, member< matched_bet_object, matched_bet_id_type, &matched_bet_object::id > >>, ordered_unique< tag< by_game_uuid_market >, composite_key< matched_bet_object, member< matched_bet_object, uuid_type, &matched_bet_object::game_uuid >, member< matched_bet_object, market_type, &matched_bet_object::market >, member< matched_bet_object, matched_bet_id_type, &matched_bet_object::id > >>, ordered_unique< tag< by_game_uuid_created >, composite_key< matched_bet_object, member< matched_bet_object, uuid_type, &matched_bet_object::game_uuid >, member< matched_bet_object, fc::time_point_sec, &matched_bet_object::created >, member< matched_bet_object, matched_bet_id_type, &matched_bet_object::id > >> >> matched_bet_index
@ market
Rate limiting for all other actions.
fc::fixed_string_16 account_name_type
Definition: types.hpp:62
fc::static_variant< result_home::yes, result_home::no, result_draw::yes, result_draw::no, result_away::yes, result_away::no, round_home::yes, round_home::no, handicap::over, handicap::under, correct_score_home::yes, correct_score_home::no, correct_score_draw::yes, correct_score_draw::no, correct_score_away::yes, correct_score_away::no, correct_score::yes, correct_score::no, goal_home::yes, goal_home::no, goal_both::yes, goal_both::no, goal_away::yes, goal_away::no, total::over, total::under, total_goals_home::over, total_goals_home::under, total_goals_away::over, total_goals_away::under > wincase_type
Definition: market.hpp:128
fc::static_variant< result_home, result_draw, result_away, round_home, handicap, correct_score_home, correct_score_draw, correct_score_away, correct_score, goal_home, goal_both, goal_away, total, total_goals_home, total_goals_away > market_type
Definition: market.hpp:97
Definition: asset.cpp:15
boost::uuids::uuid uuid_type
Definition: types.hpp:53
fc::time_point_sec created
Definition: bet_objects.hpp:27
pending_bet_kind kind
Definition: bet_objects.hpp:34
account_name_type better
Definition: bet_objects.hpp:29