COOPENOMICS  v1
Кооперативная Экономика
table_branch_branchstat.hpp
См. документацию.
1#pragma once
2
3
4#include "../core/ram_payer.hpp"
5#include <eosio/eosio.hpp>
6
7#include "../consts.hpp"
8
14struct [[eosio::table, eosio::contract(BRANCH)]] branchstat {
15 eosio::name coopname;
16 uint64_t count;
17
18 uint64_t primary_key() const { return coopname.value; }
19};
20
21typedef eosio::multi_index<"branchstat"_n, branchstat> branchstat_index;
22
23uint64_t add_branch_count(eosio::name coopname) {
24 branchstat_index stat(_branch, _branch.value);
25 auto st = stat.find(coopname.value);
26
27 uint64_t new_count = 0;
28
29 if (st == stat.end()) {
30 new_count = 1;
31 stat.emplace(RamPayer::of(stat, coopname), [&](auto &s) {
32 s.coopname = coopname;
33 s.count = new_count;
34 });
35 } else {
36 new_count = st->count + 1;
37 stat.modify(st, RamPayer::of(stat, coopname), [&](auto &s) { s.count += 1; });
38 }
39
40 return new_count;
41}
42
43uint64_t sub_branch_count(eosio::name coopname) {
44 branchstat_index stat(_branch, _branch.value);
45 auto st = stat.find(coopname.value);
46 uint64_t new_count = 0;
47
48 eosio::check(st != stat.end(), "Нет кооперативных участков");
49 eosio::check(st->count > 0, "Системная ошибка");
50
51 new_count = st->count - 1;
52
53 stat.modify(st, RamPayer::of(stat, coopname), [&](auto &s) { s.count -= 1; });
54
55 return new_count;
56}
57
58// Плательщик за оперативную память строк таблицы — правило в lib/core/ram_payer.hpp.
static constexpr eosio::name _branch
Definition: consts.hpp:181
contract
Definition: eosio.msig_tests.cpp:977
eosio::name of(const Table &table, eosio::name coopname)
Definition: ram_payer.hpp:78
Definition: eosio.msig.hpp:34
Definition: table_branch_branchstat.hpp:14
uint64_t count
Definition: table_branch_branchstat.hpp:16
uint64_t primary_key() const
Definition: table_branch_branchstat.hpp:18
eosio::name coopname
Definition: table_branch_branchstat.hpp:15
eosio::multi_index<"branchstat"_n, branchstat > branchstat_index
Definition: table_branch_branchstat.hpp:21
uint64_t add_branch_count(eosio::name coopname)
Definition: table_branch_branchstat.hpp:23
RAM_PAYER_CLASS(branchstat, contract)
uint64_t sub_branch_count(eosio::name coopname)
Definition: table_branch_branchstat.hpp:43