CatapultServer  v0.5.0.1 (Elephant)
LockInfoMapper.h
Go to the documentation of this file.
1 
21 #pragma once
25 #include "catapult/utils/Casting.h"
26 
27 namespace catapult { namespace mongo { namespace plugins {
28 
30  template<typename TTraits>
32  private:
33  using LockInfoType = typename TTraits::LockInfoType;
34 
35  // region ToDbModel
36 
37  private:
38  static void StreamLockMetadata(mappers::bson_stream::document& builder) {
39  builder << "meta" << mappers::bson_stream::open_document << mappers::bson_stream::close_document;
40  }
41 
42  static void StreamLockInfo(
43  mappers::bson_stream::document& builder,
44  const state::LockInfo& lockInfo,
45  const Address& accountAddress) {
46  using namespace catapult::mongo::mappers;
47 
48  builder
49  << "account" << ToBinary(lockInfo.Account)
50  << "accountAddress" << ToBinary(accountAddress)
51  << "mosaicId" << ToInt64(lockInfo.MosaicId)
52  << "amount" << ToInt64(lockInfo.Amount)
53  << "height" << ToInt64(lockInfo.Height)
54  << "status" << utils::to_underlying_type(lockInfo.Status);
55  }
56 
57  public:
58  static bsoncxx::document::value ToDbModel(const LockInfoType& lockInfo, const Address& accountAddress) {
59  // lock metadata
60  mappers::bson_stream::document builder;
61  StreamLockMetadata(builder);
62 
63  // lock data
64  auto doc = builder << "lock" << mappers::bson_stream::open_document;
65  StreamLockInfo(builder, lockInfo, accountAddress);
66  TTraits::StreamLockInfo(builder, lockInfo);
67  return doc
68  << mappers::bson_stream::close_document
69  << mappers::bson_stream::finalize;
70  }
71 
72  // endregion
73  };
74 }}}
catapult::state::LockInfo
A lock info.
Definition: LockInfo.h:36
MapperUtils.h
catapult::mongo::plugins::LockInfoMapper::StreamLockMetadata
static void StreamLockMetadata(mappers::bson_stream::document &builder)
Definition: LockInfoMapper.h:38
catapult::state::LockInfo::MosaicId
catapult::MosaicId MosaicId
Mosaic id.
Definition: LockInfo.h:56
catapult::utils::to_underlying_type
constexpr std::underlying_type_t< TEnum > to_underlying_type(TEnum value)
Converts a strongly typed enumeration value to its underlying integral value.
Definition: Casting.h:37
catapult::mongo::mappers::ToInt64
int64_t ToInt64(TBaseValue value)
Converts base value to int64_t.
Definition: MapperUtils.h:75
LockInfo.h
catapult::state::LockInfo::Amount
catapult::Amount Amount
Amount.
Definition: LockInfo.h:59
catapult::state::LockInfo::Height
catapult::Height Height
Height at which the lock expires.
Definition: LockInfo.h:62
catapult::mongo::mappers
Definition: AccountStateMapper.cpp:26
catapult::mongo::plugins::LockInfoMapper
Traits based lock info mapper.
Definition: LockInfoMapper.h:31
catapult::state::LockInfo::Status
LockStatus Status
Flag indicating whether or not the lock was already used.
Definition: LockInfo.h:65
catapult::mongo::plugins::LockInfoMapper::LockInfoType
typename TTraits::LockInfoType LockInfoType
Definition: LockInfoMapper.h:33
Casting.h
catapult
Definition: AddressExtractionExtension.cpp:28
catapult::mongo::mappers::ToBinary
bsoncxx::types::b_binary ToBinary(const uint8_t *pData, size_t size)
Converts raw array (pData) of size elements into bson binary type.
Definition: MapperUtils.cpp:30
catapult::utils::ByteArray< Address_Decoded_Size, Address_tag >
catapult::state::LockInfo::Account
Key Account
Account.
Definition: LockInfo.h:53
catapult::mongo::plugins::LockInfoMapper::StreamLockInfo
static void StreamLockInfo(mappers::bson_stream::document &builder, const state::LockInfo &lockInfo, const Address &accountAddress)
Definition: LockInfoMapper.h:42
MapperInclude.h
catapult::mongo::plugins::LockInfoMapper::ToDbModel
static bsoncxx::document::value ToDbModel(const LockInfoType &lockInfo, const Address &accountAddress)
Definition: LockInfoMapper.h:58