From cea6a77e963d0a61d0a93a45f85e396a38c9c754 Mon Sep 17 00:00:00 2001 From: Hasan2k5 Date: Thu, 2 Jan 2025 23:27:38 +0530 Subject: [PATCH] Adding and making some changes in lib.rs file of the test --- pallets/network-score/src/lib.rs | 89 ++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) diff --git a/pallets/network-score/src/lib.rs b/pallets/network-score/src/lib.rs index 50d12ab63..272ce6c41 100644 --- a/pallets/network-score/src/lib.rs +++ b/pallets/network-score/src/lib.rs @@ -835,3 +835,92 @@ impl Pallet { pallet_timestamp::Pallet::::get() } } + + + +#![cfg_attr(not(feature = "std"), no_std)] + +pub use pallet::*; + +#[frame_support::pallet] +pub mod pallet { + use frame_support::{dispatch::DispatchResult, pallet_prelude::*}; + use frame_system::pallet_prelude::*; + + #[pallet::pallet] + #[pallet::generate_store(pub(super) trait Store)] + pub struct Pallet(_); + + #[pallet::config] + pub trait Config: frame_system::Config { + type RuntimeEvent: From> + IsType<::RuntimeEvent>; + } + + #[pallet::storage] + #[pallet::getter(fn members)] + pub type Members = StorageMap<_, Blake2_128Concat, T::AccountId, ()>; + + #[pallet::storage] + #[pallet::getter(fn members_count)] + pub type MembersCount = StorageValue<_, u32, ValueQuery>; + + #[pallet::genesis_config] + pub struct GenesisConfig { + pub initial_members: Vec, + } + + #[cfg(feature = "std")] + impl Default for GenesisConfig { + fn default() -> Self { + Self { initial_members: Vec::new() } + } + } + + #[pallet::genesis_build] + impl GenesisBuild for GenesisConfig { + fn build(&self) { + for member in &self.initial_members { + Members::::insert(member, ()); + } + MembersCount::::put(self.initial_members.len() as u32); + } + } + + #[pallet::event] + #[pallet::generate_deposit(pub(super) fn deposit_event)] + pub enum Event { + MemberAdded(T::AccountId), + MemberRemoved(T::AccountId), + } + + #[pallet::error] + pub enum Error { + NotAuthorized, + } + + #[pallet::call] + impl Pallet { + #[pallet::weight(10_000)] + pub fn nominate( + origin: OriginFor, + account: T::AccountId, + add_member: bool, + ) -> DispatchResult { + let sender = ensure_signed(origin)?; + + ensure!(Members::::contains_key(&sender), Error::::NotAuthorized); + + if add_member { + Members::::insert(&account, ()); + MembersCount::::mutate(|count| *count += 1); + Self::deposit_event(Event::MemberAdded(account)); + } else { + Members::::remove(&account); + MembersCount::::mutate(|count| *count -= 1); + Self::deposit_event(Event::MemberRemoved(account)); + } + + Ok(()) + } + } +}