Stub out the bet object and the operation for placing it (currently breaks
json_serializer builds, until I port over some code into fc)
This commit is contained in:
parent
5aedb65e5c
commit
db6b312784
9 changed files with 109 additions and 3 deletions
|
|
@ -209,6 +209,7 @@ struct get_impacted_account_visitor
|
||||||
void operator()( const event_create_operation& op ) {}
|
void operator()( const event_create_operation& op ) {}
|
||||||
void operator()( const betting_market_group_create_operation& op ) {}
|
void operator()( const betting_market_group_create_operation& op ) {}
|
||||||
void operator()( const betting_market_create_operation& op ) {}
|
void operator()( const betting_market_create_operation& op ) {}
|
||||||
|
void operator()( const bet_place_operation& op ) {}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -92,4 +92,26 @@ object_id_type betting_market_create_evaluator::do_apply(const betting_market_cr
|
||||||
return new_betting_market.id;
|
return new_betting_market.id;
|
||||||
} FC_CAPTURE_AND_RETHROW( (op) ) }
|
} FC_CAPTURE_AND_RETHROW( (op) ) }
|
||||||
|
|
||||||
|
void_result bet_place_evaluator::do_evaluate(const bet_place_operation& op)
|
||||||
|
{ try {
|
||||||
|
FC_ASSERT( db().find_object(op.bettor_id), "Invalid betting_market_group specified" );
|
||||||
|
FC_ASSERT( db().find_object(op.betting_market_id), "Invalid betting_market specified" );
|
||||||
|
|
||||||
|
return void_result();
|
||||||
|
} FC_CAPTURE_AND_RETHROW( (op) ) }
|
||||||
|
|
||||||
|
object_id_type bet_place_evaluator::do_apply(const bet_place_operation& op)
|
||||||
|
{ try {
|
||||||
|
const bet_object& new_bet =
|
||||||
|
db().create<bet_object>( [&]( bet_object& bet_obj ) {
|
||||||
|
bet_obj.bettor_id = op.bettor_id;
|
||||||
|
bet_obj.betting_market_id = op.betting_market_id;
|
||||||
|
bet_obj.amount_to_bet = op.amount_to_bet;
|
||||||
|
bet_obj.amount_to_win = op.amount_to_win;
|
||||||
|
bet_obj.amount_reserved_for_fees = op.amount_reserved_for_fees;
|
||||||
|
bet_obj.back_or_lay = op.back_or_lay;
|
||||||
|
});
|
||||||
|
return new_bet.id;
|
||||||
|
} FC_CAPTURE_AND_RETHROW( (op) ) }
|
||||||
|
|
||||||
} } // graphene::chain
|
} } // graphene::chain
|
||||||
|
|
|
||||||
|
|
@ -156,6 +156,9 @@ const uint8_t betting_market_group_object::type_id;
|
||||||
const uint8_t betting_market_object::space_id;
|
const uint8_t betting_market_object::space_id;
|
||||||
const uint8_t betting_market_object::type_id;
|
const uint8_t betting_market_object::type_id;
|
||||||
|
|
||||||
|
const uint8_t bet_object::space_id;
|
||||||
|
const uint8_t bet_object::type_id;
|
||||||
|
|
||||||
|
|
||||||
void database::initialize_evaluators()
|
void database::initialize_evaluators()
|
||||||
{
|
{
|
||||||
|
|
@ -207,6 +210,7 @@ void database::initialize_evaluators()
|
||||||
register_evaluator<event_create_evaluator>();
|
register_evaluator<event_create_evaluator>();
|
||||||
register_evaluator<betting_market_group_create_evaluator>();
|
register_evaluator<betting_market_group_create_evaluator>();
|
||||||
register_evaluator<betting_market_create_evaluator>();
|
register_evaluator<betting_market_create_evaluator>();
|
||||||
|
register_evaluator<bet_place_evaluator>();
|
||||||
}
|
}
|
||||||
|
|
||||||
void database::initialize_indexes()
|
void database::initialize_indexes()
|
||||||
|
|
@ -241,6 +245,7 @@ void database::initialize_indexes()
|
||||||
add_index< primary_index<event_object_index > >();
|
add_index< primary_index<event_object_index > >();
|
||||||
add_index< primary_index<betting_market_group_object_index > >();
|
add_index< primary_index<betting_market_group_object_index > >();
|
||||||
add_index< primary_index<betting_market_object_index > >();
|
add_index< primary_index<betting_market_object_index > >();
|
||||||
|
add_index< primary_index<bet_object_index > >();
|
||||||
|
|
||||||
//Implementation object indexes
|
//Implementation object indexes
|
||||||
add_index< primary_index<transaction_index > >();
|
add_index< primary_index<transaction_index > >();
|
||||||
|
|
|
||||||
|
|
@ -51,4 +51,13 @@ namespace graphene { namespace chain {
|
||||||
betting_market_group_id_type group_id;
|
betting_market_group_id_type group_id;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class bet_place_evaluator : public evaluator<bet_place_evaluator>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
typedef bet_place_operation operation_type;
|
||||||
|
|
||||||
|
void_result do_evaluate( const bet_place_operation& o );
|
||||||
|
object_id_type do_apply( const bet_place_operation& o );
|
||||||
|
};
|
||||||
|
|
||||||
} } // graphene::chain
|
} } // graphene::chain
|
||||||
|
|
|
||||||
|
|
@ -55,6 +55,25 @@ class betting_market_object : public graphene::db::abstract_object< betting_mark
|
||||||
asset_id_type asset_id;
|
asset_id_type asset_id;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class bet_object : public graphene::db::abstract_object< bet_object >
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static const uint8_t space_id = protocol_ids;
|
||||||
|
static const uint8_t type_id = bet_object_type;
|
||||||
|
|
||||||
|
account_id_type bettor_id;
|
||||||
|
|
||||||
|
betting_market_id_type betting_market_id;
|
||||||
|
|
||||||
|
share_type amount_to_bet;
|
||||||
|
|
||||||
|
share_type amount_to_win;
|
||||||
|
|
||||||
|
share_type amount_reserved_for_fees;
|
||||||
|
|
||||||
|
bet_type back_or_lay;
|
||||||
|
};
|
||||||
|
|
||||||
typedef multi_index_container<
|
typedef multi_index_container<
|
||||||
betting_market_group_object,
|
betting_market_group_object,
|
||||||
indexed_by<
|
indexed_by<
|
||||||
|
|
@ -67,7 +86,15 @@ typedef multi_index_container<
|
||||||
ordered_unique< tag<by_id>, member< object, object_id_type, &object::id > > > > betting_market_object_multi_index_type;
|
ordered_unique< tag<by_id>, member< object, object_id_type, &object::id > > > > betting_market_object_multi_index_type;
|
||||||
|
|
||||||
typedef generic_index<betting_market_object, betting_market_object_multi_index_type> betting_market_object_index;
|
typedef generic_index<betting_market_object, betting_market_object_multi_index_type> betting_market_object_index;
|
||||||
|
|
||||||
|
typedef multi_index_container<
|
||||||
|
bet_object,
|
||||||
|
indexed_by<
|
||||||
|
ordered_unique< tag<by_id>, member< object, object_id_type, &object::id > > > > bet_object_multi_index_type;
|
||||||
|
|
||||||
|
typedef generic_index<bet_object, bet_object_multi_index_type> bet_object_index;
|
||||||
} } // graphene::chain
|
} } // graphene::chain
|
||||||
|
|
||||||
FC_REFLECT_DERIVED( graphene::chain::betting_market_group_object, (graphene::db::object), (event_id)(options) )
|
FC_REFLECT_DERIVED( graphene::chain::betting_market_group_object, (graphene::db::object), (event_id)(options) )
|
||||||
FC_REFLECT_DERIVED( graphene::chain::betting_market_object, (graphene::db::object), (group_id)(payout_condition)(asset_id) )
|
FC_REFLECT_DERIVED( graphene::chain::betting_market_object, (graphene::db::object), (group_id)(payout_condition)(asset_id) )
|
||||||
|
FC_REFLECT_DERIVED( graphene::chain::bet_object, (graphene::db::object), (bettor_id)(betting_market_id)(amount_to_bet)(amount_to_win)(amount_reserved_for_fees)(back_or_lay) )
|
||||||
|
|
|
||||||
|
|
@ -88,6 +88,32 @@ struct betting_market_create_operation : public base_operation
|
||||||
void validate()const;
|
void validate()const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum bet_type { back_bet, lay_bet };
|
||||||
|
struct bet_place_operation : public base_operation
|
||||||
|
{
|
||||||
|
struct fee_parameters_type { uint64_t fee = GRAPHENE_BLOCKCHAIN_PRECISION; };
|
||||||
|
asset fee;
|
||||||
|
|
||||||
|
account_id_type bettor_id;
|
||||||
|
|
||||||
|
betting_market_id_type betting_market_id;
|
||||||
|
|
||||||
|
share_type amount_to_bet;
|
||||||
|
|
||||||
|
share_type amount_to_win;
|
||||||
|
|
||||||
|
share_type amount_reserved_for_fees;
|
||||||
|
|
||||||
|
bet_type back_or_lay;
|
||||||
|
|
||||||
|
extensions_type extensions;
|
||||||
|
|
||||||
|
account_id_type fee_payer()const { return bettor_id; }
|
||||||
|
void validate()const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
} }
|
} }
|
||||||
|
|
||||||
FC_REFLECT_ENUM( graphene::chain::betting_market_type, (moneyline)(spread)(over_under)(BETTING_MARKET_TYPE_COUNT) )
|
FC_REFLECT_ENUM( graphene::chain::betting_market_type, (moneyline)(spread)(over_under)(BETTING_MARKET_TYPE_COUNT) )
|
||||||
|
|
@ -104,3 +130,8 @@ FC_REFLECT( graphene::chain::betting_market_group_create_operation,
|
||||||
FC_REFLECT( graphene::chain::betting_market_create_operation::fee_parameters_type, (fee) )
|
FC_REFLECT( graphene::chain::betting_market_create_operation::fee_parameters_type, (fee) )
|
||||||
FC_REFLECT( graphene::chain::betting_market_create_operation,
|
FC_REFLECT( graphene::chain::betting_market_create_operation,
|
||||||
(fee)(group_id)(payout_condition)(asset_id)(extensions) )
|
(fee)(group_id)(payout_condition)(asset_id)(extensions) )
|
||||||
|
|
||||||
|
FC_REFLECT_ENUM( graphene::chain::bet_type, (back_bet)(lay_bet) )
|
||||||
|
FC_REFLECT( graphene::chain::bet_place_operation::fee_parameters_type, (fee) )
|
||||||
|
FC_REFLECT( graphene::chain::bet_place_operation,
|
||||||
|
(fee)(bettor_id)(betting_market_id)(amount_to_bet)(amount_to_win)(amount_reserved_for_fees)(back_or_lay)(extensions) )
|
||||||
|
|
|
||||||
|
|
@ -102,7 +102,8 @@ namespace graphene { namespace chain {
|
||||||
event_group_create_operation,
|
event_group_create_operation,
|
||||||
event_create_operation,
|
event_create_operation,
|
||||||
betting_market_group_create_operation,
|
betting_market_group_create_operation,
|
||||||
betting_market_create_operation
|
betting_market_create_operation,
|
||||||
|
bet_place_operation
|
||||||
> operation;
|
> operation;
|
||||||
|
|
||||||
/// @} // operations group
|
/// @} // operations group
|
||||||
|
|
|
||||||
|
|
@ -140,6 +140,7 @@ namespace graphene { namespace chain {
|
||||||
event_object_type,
|
event_object_type,
|
||||||
betting_market_group_object_type,
|
betting_market_group_object_type,
|
||||||
betting_market_object_type,
|
betting_market_object_type,
|
||||||
|
bet_object_type,
|
||||||
OBJECT_TYPE_COUNT ///< Sentry value which contains the number of different object types
|
OBJECT_TYPE_COUNT ///< Sentry value which contains the number of different object types
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -187,6 +188,7 @@ namespace graphene { namespace chain {
|
||||||
class event_object;
|
class event_object;
|
||||||
class betting_market_group_object;
|
class betting_market_group_object;
|
||||||
class betting_market_object;
|
class betting_market_object;
|
||||||
|
class bet_object;
|
||||||
|
|
||||||
typedef object_id< protocol_ids, account_object_type, account_object> account_id_type;
|
typedef object_id< protocol_ids, account_object_type, account_object> account_id_type;
|
||||||
typedef object_id< protocol_ids, asset_object_type, asset_object> asset_id_type;
|
typedef object_id< protocol_ids, asset_object_type, asset_object> asset_id_type;
|
||||||
|
|
@ -206,8 +208,9 @@ namespace graphene { namespace chain {
|
||||||
typedef object_id< protocol_ids, competitor_object_type, competitor_object> competitor_id_type;
|
typedef object_id< protocol_ids, competitor_object_type, competitor_object> competitor_id_type;
|
||||||
typedef object_id< protocol_ids, event_group_object_type, event_group_object> event_group_id_type;
|
typedef object_id< protocol_ids, event_group_object_type, event_group_object> event_group_id_type;
|
||||||
typedef object_id< protocol_ids, event_object_type, event_object> event_id_type;
|
typedef object_id< protocol_ids, event_object_type, event_object> event_id_type;
|
||||||
typedef object_id< protocol_ids, betting_market_group_object_type, betting_market_group_object> betting_market_group_id_type;
|
typedef object_id< protocol_ids, betting_market_group_object_type, betting_market_group_object> betting_market_group_id_type;
|
||||||
typedef object_id< protocol_ids, betting_market_object_type, betting_market_object> betting_market_id_type;
|
typedef object_id< protocol_ids, betting_market_object_type, betting_market_object> betting_market_id_type;
|
||||||
|
typedef object_id< protocol_ids, bet_object_type, bet_object> bet_id_type;
|
||||||
|
|
||||||
// implementation types
|
// implementation types
|
||||||
class global_property_object;
|
class global_property_object;
|
||||||
|
|
@ -366,6 +369,7 @@ FC_REFLECT_ENUM( graphene::chain::object_type,
|
||||||
(event_object_type)
|
(event_object_type)
|
||||||
(betting_market_group_object_type)
|
(betting_market_group_object_type)
|
||||||
(betting_market_object_type)
|
(betting_market_object_type)
|
||||||
|
(bet_object_type)
|
||||||
(OBJECT_TYPE_COUNT)
|
(OBJECT_TYPE_COUNT)
|
||||||
)
|
)
|
||||||
FC_REFLECT_ENUM( graphene::chain::impl_object_type,
|
FC_REFLECT_ENUM( graphene::chain::impl_object_type,
|
||||||
|
|
@ -410,6 +414,7 @@ FC_REFLECT_TYPENAME( graphene::chain::event_group_id_type )
|
||||||
FC_REFLECT_TYPENAME( graphene::chain::event_id_type )
|
FC_REFLECT_TYPENAME( graphene::chain::event_id_type )
|
||||||
FC_REFLECT_TYPENAME( graphene::chain::betting_market_group_id_type )
|
FC_REFLECT_TYPENAME( graphene::chain::betting_market_group_id_type )
|
||||||
FC_REFLECT_TYPENAME( graphene::chain::betting_market_id_type )
|
FC_REFLECT_TYPENAME( graphene::chain::betting_market_id_type )
|
||||||
|
FC_REFLECT_TYPENAME( graphene::chain::bet_id_type )
|
||||||
FC_REFLECT_TYPENAME( graphene::chain::global_property_id_type )
|
FC_REFLECT_TYPENAME( graphene::chain::global_property_id_type )
|
||||||
FC_REFLECT_TYPENAME( graphene::chain::dynamic_global_property_id_type )
|
FC_REFLECT_TYPENAME( graphene::chain::dynamic_global_property_id_type )
|
||||||
FC_REFLECT_TYPENAME( graphene::chain::asset_dynamic_data_id_type )
|
FC_REFLECT_TYPENAME( graphene::chain::asset_dynamic_data_id_type )
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,11 @@ void betting_market_create_operation::validate() const
|
||||||
FC_ASSERT( fee.amount >= 0 );
|
FC_ASSERT( fee.amount >= 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void bet_place_operation::validate() const
|
||||||
|
{
|
||||||
|
FC_ASSERT( fee.amount >= 0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
} } // graphene::chain
|
} } // graphene::chain
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue