Selaa lähdekoodia

Move Role from membership to roles module

Shamil Gadelshin 4 vuotta sitten
vanhempi
commit
3de78ff2c5

+ 4 - 3
Cargo.lock

@@ -4691,7 +4691,7 @@ dependencies = [
 
 [[package]]
 name = "substrate-content-working-group-module"
-version = "1.0.0"
+version = "1.1.0"
 dependencies = [
  "parity-scale-codec",
  "serde",
@@ -4708,6 +4708,7 @@ dependencies = [
  "substrate-membership-module",
  "substrate-primitives",
  "substrate-recurring-reward-module",
+ "substrate-roles-module",
  "substrate-stake-module",
  "substrate-token-mint-module",
  "substrate-versioned-store",
@@ -4913,7 +4914,7 @@ dependencies = [
 
 [[package]]
 name = "substrate-membership-module"
-version = "1.0.1"
+version = "1.1.0"
 dependencies = [
  "parity-scale-codec",
  "serde",
@@ -5196,7 +5197,7 @@ dependencies = [
 
 [[package]]
 name = "substrate-roles-module"
-version = "1.0.1"
+version = "1.1.0"
 dependencies = [
  "parity-scale-codec",
  "serde",

+ 7 - 1
runtime-modules/content-working-group/Cargo.toml

@@ -1,6 +1,6 @@
 [package]
 name = 'substrate-content-working-group-module'
-version = '1.0.0'
+version = '1.1.0'
 authors = ['Joystream contributors']
 edition = '2018'
 
@@ -15,6 +15,7 @@ std = [
     'primitives/std',
     'rstd/std',
     'membership/std',
+    'roles/std',
     'forum/std',
     'hiring/std',
     'stake/std',
@@ -106,6 +107,11 @@ default_features = false
 package = 'substrate-membership-module'
 path = '../membership'
 
+[dependencies.roles]
+default_features = false
+package = 'substrate-roles-module'
+path = '../roles'
+
 [dev-dependencies.runtime-io]
 default_features = false
 git = 'https://github.com/paritytech/substrate.git'

+ 1 - 1
runtime-modules/membership/Cargo.toml

@@ -1,6 +1,6 @@
 [package]
 name = 'substrate-membership-module'
-version = '1.0.1'
+version = '1.1.0'
 authors = ['Joystream contributors']
 edition = '2018'
 

+ 0 - 3
runtime-modules/membership/src/lib.rs

@@ -7,7 +7,6 @@
 
 pub mod genesis;
 pub(crate) mod mock;
-pub mod role_types;
 mod tests;
 
 use codec::{Codec, Decode, Encode};
@@ -20,8 +19,6 @@ use system::{self, ensure_root, ensure_signed};
 
 use common::currency::{BalanceOf, GovernanceCurrency};
 
-pub use role_types::*;
-
 pub trait Trait: system::Trait + GovernanceCurrency + timestamp::Trait {
     type Event: From<Event<Self>> + Into<<Self as system::Trait>::Event>;
 

+ 0 - 72
runtime-modules/membership/src/role_types.rs

@@ -1,72 +0,0 @@
-#![allow(clippy::new_without_default)] // disable because Default for enums doesn't make sense
-
-use codec::{Decode, Encode};
-use rstd::collections::btree_set::BTreeSet;
-use rstd::prelude::*;
-
-#[cfg(feature = "std")]
-use serde::{Deserialize, Serialize};
-
-#[cfg_attr(feature = "std", derive(Serialize, Deserialize))]
-#[derive(Encode, Decode, Copy, Clone, Ord, PartialOrd, Eq, PartialEq, Debug)]
-pub enum Role {
-    StorageProvider,
-    ChannelOwner,
-    CuratorLead,
-    Curator,
-}
-
-/// Must be default constructible because it indirectly is a value in a storage map.
-/// ***SHOULD NEVER ACTUALLY GET CALLED, IS REQUIRED TO DUE BAD STORAGE MODEL IN SUBSTRATE***
-impl Default for Role {
-    fn default() -> Self {
-        Self::Curator
-    }
-}
-
-#[derive(Encode, Decode, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Debug, Default)]
-pub struct ActorInRole<ActorId> {
-    pub role: Role,
-    pub actor_id: ActorId,
-}
-
-impl<ActorId> ActorInRole<ActorId> {
-    pub fn new(role: Role, actor_id: ActorId) -> Self {
-        ActorInRole { role, actor_id }
-    }
-}
-
-#[derive(Encode, Decode, Eq, PartialEq, Ord, PartialOrd, Default)]
-pub struct ActorInRoleSet<ActorId: Ord + Copy>(BTreeSet<ActorInRole<ActorId>>);
-
-impl<ActorId: Ord + Copy> ActorInRoleSet<ActorId> {
-    pub fn new() -> Self {
-        Self(BTreeSet::<ActorInRole<ActorId>>::new())
-    }
-
-    fn role_instance_count(&self, role: Role) -> usize {
-        self.0.iter().fold(0, |count, actor_in_role| {
-            if actor_in_role.role == role {
-                count + 1
-            } else {
-                count
-            }
-        })
-    }
-
-    pub fn occupies_role(&self, role: Role) -> bool {
-        self.role_instance_count(role) > 0
-    }
-
-    pub fn register_role(&mut self, actor_in_role: &ActorInRole<ActorId>) -> bool {
-        self.0.insert(*actor_in_role)
-    }
-
-    pub fn unregister_role(&mut self, actor_in_role: &ActorInRole<ActorId>) -> bool {
-        self.0.remove(actor_in_role)
-    }
-
-    pub fn has_registered_role(&self, actor_in_role: &ActorInRole<ActorId>) -> bool {
-        self.0.contains(actor_in_role)
-    }
-}

+ 1 - 1
runtime-modules/roles/Cargo.toml

@@ -1,6 +1,6 @@
 [package]
 name = 'substrate-roles-module'
-version = '1.0.1'
+version = '1.1.0'
 authors = ['Joystream contributors']
 edition = '2018'
 

+ 1 - 1
runtime-modules/roles/src/actors.rs

@@ -15,7 +15,7 @@ use system::{self, ensure_root, ensure_signed};
 #[cfg(feature = "std")]
 use serde::{Deserialize, Serialize};
 
-pub use membership::Role;
+pub use crate::Role;
 
 const STAKING_ID: LockIdentifier = *b"role_stk";
 

+ 3 - 0
runtime-modules/roles/src/lib.rs

@@ -2,7 +2,10 @@
 #![cfg_attr(not(feature = "std"), no_std)]
 
 pub mod actors;
+mod role_types;
 pub mod traits;
 
 mod mock;
 mod tests;
+
+pub use role_types::Role;

+ 22 - 0
runtime-modules/roles/src/role_types.rs

@@ -0,0 +1,22 @@
+use codec::{Decode, Encode};
+use rstd::prelude::*;
+
+#[cfg(feature = "std")]
+use serde::{Deserialize, Serialize};
+
+#[cfg_attr(feature = "std", derive(Serialize, Deserialize))]
+#[derive(Encode, Decode, Copy, Clone, Ord, PartialOrd, Eq, PartialEq, Debug)]
+pub enum Role {
+    StorageProvider,
+    ChannelOwner,
+    CuratorLead,
+    Curator,
+}
+
+/// Must be default constructable because it indirectly is a value in a storage map.
+/// ***SHOULD NEVER ACTUALLY GET CALLED, IS REQUIRED TO DUE BAD STORAGE MODEL IN SUBSTRATE***
+impl Default for Role {
+    fn default() -> Self {
+        Self::Curator
+    }
+}

+ 1 - 1
runtime/src/test/proposals_integration.rs

@@ -6,13 +6,13 @@ use crate::{BlockNumber, ElectionParameters, ProposalCancellationFee, Runtime};
 use codec::Encode;
 use governance::election::CouncilElected;
 use membership;
-use membership::role_types::Role;
 use proposals_engine::{
     ActiveStake, ApprovedProposalStatus, BalanceOf, Error, FinalizationData, Proposal,
     ProposalDecisionStatus, ProposalParameters, ProposalStatus, VoteKind, VotersParameters,
     VotingResults,
 };
 use roles::actors::RoleParameters;
+use roles::Role;
 
 use sr_primitives::traits::{DispatchResult, OnFinalize, OnInitialize};
 use sr_primitives::AccountId32;