fixed indices sorting and lottery end checking by date
This commit is contained in:
parent
c32269ee8e
commit
8cb335a515
3 changed files with 18 additions and 3 deletions
|
|
@ -950,7 +950,7 @@ vector<asset_object> database_api_impl::get_account_lotteries( account_id_type i
|
||||||
{
|
{
|
||||||
vector<asset_object> result;
|
vector<asset_object> result;
|
||||||
if( limit > 100 ) limit = 100;
|
if( limit > 100 ) limit = 100;
|
||||||
const auto& assets = _db.get_index_type<asset_index>().indices().get<by_lottery>();
|
const auto& assets = _db.get_index_type<asset_index>().indices().get<by_lottery_owner>();
|
||||||
|
|
||||||
const auto range = assets.equal_range( boost::make_tuple( true, issuer.instance.value ) );
|
const auto range = assets.equal_range( boost::make_tuple( true, issuer.instance.value ) );
|
||||||
for( const auto& a : boost::make_iterator_range( range.first, range.second ) )
|
for( const auto& a : boost::make_iterator_range( range.first, range.second ) )
|
||||||
|
|
|
||||||
|
|
@ -187,12 +187,13 @@ void database::close(bool rewind)
|
||||||
void database::check_ending_lotteries()
|
void database::check_ending_lotteries()
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
const auto& lotteries_idx = get_index_type<asset_index>().indices().get<active_lotteries>();
|
const auto& lotteries_idx = get_index_type<asset_index>().indices().get<active_lotteries>();
|
||||||
for( auto checking_asset: lotteries_idx )
|
for( auto checking_asset: lotteries_idx )
|
||||||
{
|
{
|
||||||
FC_ASSERT( checking_asset.is_lottery() );
|
FC_ASSERT( checking_asset.is_lottery() );
|
||||||
FC_ASSERT( checking_asset.lottery_options->is_active );
|
FC_ASSERT( checking_asset.lottery_options->is_active );
|
||||||
FC_ASSERT( checking_asset.lottery_options->end_date < head_block_time() );
|
FC_ASSERT( checking_asset.lottery_options->end_date != time_point_sec() );
|
||||||
|
if( checking_asset.lottery_options->end_date > head_block_time() ) continue;
|
||||||
checking_asset.end_lottery(*this);
|
checking_asset.end_lottery(*this);
|
||||||
}
|
}
|
||||||
} catch( ... ) {}
|
} catch( ... ) {}
|
||||||
|
|
|
||||||
|
|
@ -259,6 +259,7 @@ namespace graphene { namespace chain {
|
||||||
if ( !lhs.is_lottery() ) return false;
|
if ( !lhs.is_lottery() ) return false;
|
||||||
if ( !lhs.lottery_options->is_active && !rhs.is_lottery()) return true; // not active lotteries first, just assets then
|
if ( !lhs.lottery_options->is_active && !rhs.is_lottery()) return true; // not active lotteries first, just assets then
|
||||||
if ( !lhs.lottery_options->is_active ) return false;
|
if ( !lhs.lottery_options->is_active ) return false;
|
||||||
|
if ( lhs.lottery_options->is_active && ( !rhs.is_lottery() || !rhs.lottery_options->is_active ) ) return true;
|
||||||
return lhs.get_lottery_expiration() > rhs.get_lottery_expiration();
|
return lhs.get_lottery_expiration() > rhs.get_lottery_expiration();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
@ -267,6 +268,7 @@ namespace graphene { namespace chain {
|
||||||
struct by_type;
|
struct by_type;
|
||||||
struct active_lotteries;
|
struct active_lotteries;
|
||||||
struct by_lottery;
|
struct by_lottery;
|
||||||
|
struct by_lottery_owner;
|
||||||
typedef multi_index_container<
|
typedef multi_index_container<
|
||||||
asset_object,
|
asset_object,
|
||||||
indexed_by<
|
indexed_by<
|
||||||
|
|
@ -277,6 +279,17 @@ namespace graphene { namespace chain {
|
||||||
lottery_asset_comparer
|
lottery_asset_comparer
|
||||||
>,
|
>,
|
||||||
ordered_unique< tag<by_lottery>,
|
ordered_unique< tag<by_lottery>,
|
||||||
|
composite_key<
|
||||||
|
asset_object,
|
||||||
|
const_mem_fun<asset_object, bool, &asset_object::is_lottery>,
|
||||||
|
member<object, object_id_type, &object::id>
|
||||||
|
>,
|
||||||
|
composite_key_compare<
|
||||||
|
std::greater< bool >,
|
||||||
|
std::greater< object_id_type >
|
||||||
|
>
|
||||||
|
>,
|
||||||
|
ordered_unique< tag<by_lottery_owner>,
|
||||||
composite_key<
|
composite_key<
|
||||||
asset_object,
|
asset_object,
|
||||||
const_mem_fun<asset_object, bool, &asset_object::is_lottery>,
|
const_mem_fun<asset_object, bool, &asset_object::is_lottery>,
|
||||||
|
|
@ -299,6 +312,7 @@ namespace graphene { namespace chain {
|
||||||
> asset_object_multi_index_type;
|
> asset_object_multi_index_type;
|
||||||
typedef generic_index<asset_object, asset_object_multi_index_type> asset_index;
|
typedef generic_index<asset_object, asset_object_multi_index_type> asset_index;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief contains properties that only apply to dividend-paying assets
|
* @brief contains properties that only apply to dividend-paying assets
|
||||||
*
|
*
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue