1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#![cfg_attr(not(feature = "std"), no_std)]
use frame_support::{
decl_module, decl_storage, decl_event,
dispatch,
weights::SimpleDispatchInfo,
};
use frame_system::{self as system, ensure_signed};
#[cfg(test)]
mod tests;
pub trait Trait: system::Trait {
type Event: From<Event> + Into<<Self as system::Trait>::Event>;
}
decl_storage! {
trait Store for Module<T: Trait> as TemplateModule {
Thing1 get(fn thing1): u32;
Thing2 get(fn thing2): u32;
}
}
decl_module! {
pub struct Module<T: Trait> for enum Call where origin: T::Origin {
fn deposit_event() = default;
#[weight = SimpleDispatchInfo::default()]
pub fn set_thing_1(origin, val: u32) -> dispatch::DispatchResult {
let _ = ensure_signed(origin)?;
Thing1::put(val);
Self::deposit_event(Event::ValueSet(1, val));
Ok(())
}
#[weight = SimpleDispatchInfo::default()]
pub fn set_thing_2(origin, val: u32) -> dispatch::DispatchResult {
let _ = ensure_signed(origin)?;
Thing2::put(val);
Self::deposit_event(Event::ValueSet(2, val));
Ok(())
}
}
}
impl<T: Trait> Module<T> {
pub fn get_sum() -> u32 {
Thing1::get() + Thing2::get()
}
}
decl_event!(
pub enum Event {
ValueSet(u32, u32),
}
);