genesis.rs 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #![cfg(feature = "std")]
  2. use crate::{GenesisConfig, Trait};
  3. use common::currency::BalanceOf;
  4. use serde::{Deserialize, Serialize};
  5. #[derive(Clone, Serialize, Deserialize)]
  6. pub struct Member<MemberId, AccountId, Moment> {
  7. pub member_id: MemberId,
  8. pub root_account: AccountId,
  9. pub controller_account: AccountId,
  10. pub handle: String,
  11. pub avatar_uri: String,
  12. pub about: String,
  13. pub registered_at_time: Moment,
  14. }
  15. /// Builder fo membership module genesis configuration.
  16. pub struct GenesisConfigBuilder<T: Trait> {
  17. default_paid_membership_fee: BalanceOf<T>,
  18. members: Vec<(T::MemberId, T::AccountId)>,
  19. }
  20. impl<T: Trait> Default for GenesisConfigBuilder<T> {
  21. fn default() -> Self {
  22. Self {
  23. default_paid_membership_fee: BalanceOf::<T>::default(), // Was 100, will this break any tests??
  24. members: vec![],
  25. }
  26. }
  27. }
  28. impl<T: Trait> GenesisConfigBuilder<T> {
  29. pub fn default_paid_membership_fee(
  30. mut self,
  31. default_paid_membership_fee: BalanceOf<T>,
  32. ) -> Self {
  33. self.default_paid_membership_fee = default_paid_membership_fee;
  34. self
  35. }
  36. pub fn members(mut self, members: Vec<(T::MemberId, T::AccountId)>) -> Self {
  37. self.members = members;
  38. self
  39. }
  40. /// Construct GenesisConfig for mocked testing purposes only
  41. pub fn build(&self) -> GenesisConfig<T> {
  42. GenesisConfig::<T> {
  43. default_paid_membership_fee: self.default_paid_membership_fee,
  44. members: self
  45. .members
  46. .iter()
  47. .enumerate()
  48. .map(|(ix, (ref member_id, ref account_id))| Member {
  49. member_id: *member_id,
  50. root_account: account_id.clone(),
  51. controller_account: account_id.clone(),
  52. // hack to get min handle length to 5
  53. handle: (10000 + ix).to_string(),
  54. avatar_uri: "".into(),
  55. about: "".into(),
  56. registered_at_time: T::Moment::from(0),
  57. })
  58. .collect(),
  59. }
  60. }
  61. }