Skip to content
This repository has been archived by the owner on Nov 15, 2023. It is now read-only.

CountedNMap implementation #10621

Merged
merged 71 commits into from
Aug 4, 2023
Merged
Show file tree
Hide file tree
Changes from 35 commits
Commits
Show all changes
71 commits
Select commit Hold shift + click to select a range
c04769f
add initial CountedDoubleMap implementation
Mr-Leshiy Jan 7, 2022
da34fae
extend CountedDoubleMap functionality
Mr-Leshiy Jan 8, 2022
59f1444
add some traits implementation for CountedStorageDoubleMap
Mr-Leshiy Jan 8, 2022
43db3d0
add basic tests for CountedStorageDoubleMap
Mr-Leshiy Jan 8, 2022
1558d1e
add mutate functions implementation
Mr-Leshiy Jan 8, 2022
bf76962
add additional tests
Mr-Leshiy Jan 8, 2022
9cae6fe
add test_option_query test
Mr-Leshiy Jan 8, 2022
42fa3f5
add try_append_decode_len_works, append_decode_len_works tests
Mr-Leshiy Jan 8, 2022
c707346
add migrate_keys_works, translate_values tests
Mr-Leshiy Jan 8, 2022
9eb2989
add test_iter_drain_translate test
Mr-Leshiy Jan 8, 2022
b2085d7
add test_metadata test
Mr-Leshiy Jan 8, 2022
9b3db6d
add remove_prefix implementation, add test_iter_drain_prefix test
Mr-Leshiy Jan 9, 2022
603f7b6
update
Mr-Leshiy Jan 9, 2022
d8138b3
Merge branch 'master' into counted-double-map
Mr-Leshiy Jan 10, 2022
e923956
refactor PrefixIterator usage
Mr-Leshiy Jan 10, 2022
eac9616
Fix CI build
Mr-Leshiy Jan 10, 2022
34cdbfa
fix storage_ensure_span_are_ok_wrong_gen.rs storage_ensure_span_are_o…
Mr-Leshiy Jan 11, 2022
c14de25
Merge branch 'master' into counted-double-map
Mr-Leshiy Jan 27, 2022
845f24e
Merge branch 'master' into counted-double-map
Mr-Leshiy Feb 7, 2022
d97d5f6
Merge branch 'master' into counted-double-map
Mr-Leshiy Mar 5, 2022
135fbdd
Merge branch 'master' into counted-double-map
Mr-Leshiy Mar 29, 2022
baf9f7f
Merge branch 'master' into counted-double-map
Mr-Leshiy Jun 21, 2022
f419589
Merge branch 'master' into counted-double-map
Mr-Leshiy Jun 29, 2022
9af68cb
add counted_nmap implementation
Mr-Leshiy Jul 2, 2022
311534e
add tests, fixes
Mr-Leshiy Aug 17, 2022
050d182
remove counted double map impl
Mr-Leshiy Aug 17, 2022
b3318de
Merge branch 'master' into counted-double-map
Mr-Leshiy Aug 17, 2022
8897c27
fix metadata checks
Mr-Leshiy Aug 18, 2022
82fc3d5
Merge branch 'master' into counted-double-map
Mr-Leshiy Aug 18, 2022
71f78b2
update clear func
Mr-Leshiy Sep 13, 2022
802548e
Merge branch 'master' into counted-double-map
Mr-Leshiy Sep 13, 2022
4b2fded
fix clear, clear with prefix
Mr-Leshiy Oct 2, 2022
e9e30a9
fix set function
Mr-Leshiy Oct 2, 2022
09583a9
update
Mr-Leshiy Oct 24, 2022
235a605
final fix
Mr-Leshiy Nov 17, 2022
cfc599f
Update frame/support/src/storage/types/counted_nmap.rs
Mr-Leshiy Dec 29, 2022
9b800c5
Update frame/support/src/storage/types/counted_nmap.rs
Mr-Leshiy Dec 29, 2022
e86cb11
Update frame/support/src/storage/types/counted_nmap.rs
Mr-Leshiy Dec 29, 2022
2a5c778
Merge branch 'master' into counted-double-map
Mr-Leshiy Dec 29, 2022
8a3b79d
fix comments
Mr-Leshiy Jan 1, 2023
a781be2
Merge branch 'master' into counted-double-map
Mr-Leshiy Jan 9, 2023
7f0a8b1
Merge branch 'master' into counted-double-map
Mr-Leshiy Feb 10, 2023
e238146
fix suggestion
Mr-Leshiy Feb 10, 2023
f8e411b
cargo update
Mr-Leshiy Feb 10, 2023
226c24b
Relocate impl of Sealed for Ref to module root
KiChjang Feb 18, 2023
e4905c8
Merge branch 'master' into counted-double-map
Mr-Leshiy Feb 20, 2023
244aa02
Merge branch 'master' into counted-double-map
Mr-Leshiy May 24, 2023
9be8183
Merge branch 'master' into counted-double-map
Mr-Leshiy Jun 18, 2023
7b08187
fix StorageEntryMetadata type
Mr-Leshiy Jun 18, 2023
9c8b348
Update frame/support/src/storage/types/nmap.rs
Mr-Leshiy Jun 18, 2023
ac99475
removed StorageNMap and StoragePrefixedMap traits impl
Mr-Leshiy Jun 18, 2023
687ddfa
fix tests
Mr-Leshiy Jun 19, 2023
2cfb6ca
Update frame/support/src/storage/types/counted_nmap.rs
Mr-Leshiy Jun 19, 2023
ff2fa82
extend pallet::storage macro with CountedStorageNMap usage
Mr-Leshiy Jun 21, 2023
c2f7824
Merge branch 'master' into counted-double-map
Mr-Leshiy Jun 21, 2023
c9c3efe
fix
Mr-Leshiy Jun 21, 2023
918f8e7
add tests
Mr-Leshiy Jun 29, 2023
2aa851b
fix
Mr-Leshiy Jun 30, 2023
1d192b6
fix
Mr-Leshiy Jun 30, 2023
88d4423
Add counter_storage_final_key(), map_storage_final_prefix() functions
Mr-Leshiy Jul 8, 2023
fd52cac
Merge branch 'master' into counted-double-map
Mr-Leshiy Jul 8, 2023
3f72c95
update tests
Mr-Leshiy Jul 9, 2023
fe9d733
fix
Mr-Leshiy Jul 9, 2023
19a70a6
fix
Mr-Leshiy Jul 9, 2023
7739ac2
fix
Mr-Leshiy Jul 9, 2023
48faea8
update tests
Mr-Leshiy Jul 15, 2023
abb1cb9
Merge branch 'master' into counted-double-map
Mr-Leshiy Jul 16, 2023
8624682
Merge branch 'master' into counted-double-map
Mr-Leshiy Aug 1, 2023
3ef9de9
fix fmt
Mr-Leshiy Aug 1, 2023
4c29a0e
fix fmt
Mr-Leshiy Aug 1, 2023
6defd61
Merge remote-tracking branch 'origin/master' into counted-double-map
Aug 4, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 12 additions & 10 deletions frame/support/src/storage/types/counted_map.rs
Original file line number Diff line number Diff line change
Expand Up @@ -133,8 +133,12 @@ where
}

/// Store or remove the value to be associated with `key` so that `get` returns the `query`.
Mr-Leshiy marked this conversation as resolved.
Show resolved Hide resolved
pub fn set<KeyArg: EncodeLike<Key>>(key: KeyArg, q: QueryKind::Query) {
<Self as MapWrapper>::Map::set(key, q)
pub fn set<KeyArg: EncodeLike<Key>>(key: KeyArg, query: QueryKind::Query) {
let option = QueryKind::from_query_to_optional_value(query);
if option.is_none() {
CounterFor::<Prefix>::mutate(|value| value.saturating_dec());
}
<Self as MapWrapper>::Map::set(key, QueryKind::from_optional_value_to_query(option))
}

/// Swap the values of two keys.
Expand All @@ -143,10 +147,7 @@ where
}

/// Store a value to be associated with the given key from the map.
pub fn insert<KeyArg: EncodeLike<Key> + Clone, ValArg: EncodeLike<Value>>(
key: KeyArg,
val: ValArg,
) {
pub fn insert<KeyArg: EncodeLike<Key>, ValArg: EncodeLike<Value>>(key: KeyArg, val: ValArg) {
if !<Self as MapWrapper>::Map::contains_key(Ref::from(&key)) {
CounterFor::<Prefix>::mutate(|value| value.saturating_inc());
}
Expand Down Expand Up @@ -602,8 +603,9 @@ mod test {
assert_eq!(A::count(), 2);

// Insert an existing key, shouldn't increment counted values.
A::insert(3, 11);
A::insert(3, 12);

assert_eq!(A::try_get(3), Ok(12));
assert_eq!(A::count(), 2);

// Remove non-existing.
Expand Down Expand Up @@ -696,17 +698,17 @@ mod test {
// Try succeed mutate existing to existing.
A::try_mutate_exists(1, |query| {
assert_eq!(*query, Some(43));
*query = Some(43);
*query = Some(45);
Result::<(), ()>::Ok(())
})
.unwrap();

assert_eq!(A::try_get(1), Ok(43));
assert_eq!(A::try_get(1), Ok(45));
assert_eq!(A::count(), 4);

// Try succeed mutate existing to non-existing.
A::try_mutate_exists(1, |query| {
assert_eq!(*query, Some(43));
assert_eq!(*query, Some(45));
*query = None;
Result::<(), ()>::Ok(())
})
Expand Down
Loading