COOPENOMICS  v1
Кооперативная Экономика
table_registrator_orgs.hpp
См. документацию.
1#pragma once
2
3#include <eosio/asset.hpp>
4#include <eosio/binary_extension.hpp>
5#include <eosio/eosio.hpp>
6#include <string>
7
8#include "../consts.hpp"
9#include "../core/utils.hpp"
10#include "document_core.hpp"
11
15struct [[eosio::table, eosio::contract(REGISTRATOR)]] cooperative {
16 eosio::name username;
17 eosio::name parent_username;
18
19 std::string announce;
20 std::string description;
21 bool is_cooperative = false;
22
23 bool is_branched = false;
24 bool is_enrolled = false;
25
26 eosio::name coop_type;
27
28 eosio::asset registration;
29 eosio::asset initial;
30 eosio::asset minimum;
31
32 eosio::binary_extension<eosio::asset> org_registration;
33 eosio::binary_extension<eosio::asset> org_initial;
34 eosio::binary_extension<eosio::asset> org_minimum;
35
36 eosio::binary_extension<eosio::name> status;
37 eosio::binary_extension<eosio::time_point_sec> created_at;
38 eosio::binary_extension<document> document;
39
40 uint64_t primary_key() const { return username.value; }
41
42 void check_symbol_or_fail(eosio::asset contribution) {
43 eosio::check(initial.symbol == contribution.symbol && minimum.symbol == contribution.symbol,
44 "Неверный контракт токена");
45 }
46
47 uint64_t by_status() const { return status.has_value() ? status.value().value : 0; }
48
49 uint64_t by_created() const {
50 return created_at.has_value() ? created_at.value().sec_since_epoch() : 0;
51 }
52
53 uint64_t by_parent() const { return parent_username.value; }
54
55 uint128_t by_coop_childs() const { return combine_ids(username.value, parent_username.value); }
56
57 uint64_t is_coop_index() const { return is_cooperative == true ? 1 : 0; }
58
59 uint64_t bycooptype() const { return coop_type.value; }
60
61 bool is_coop() const { return is_cooperative; }
62};
63
64typedef eosio::multi_index<
65 "orgs"_n, cooperative,
66 eosio::indexed_by<"iscoop"_n, eosio::const_mem_fun<cooperative, uint64_t, &cooperative::is_coop_index>>,
67 eosio::indexed_by<"byparent"_n, eosio::const_mem_fun<cooperative, uint64_t, &cooperative::by_parent>>,
68 eosio::indexed_by<"bycoopchilds"_n,
69 eosio::const_mem_fun<cooperative, uint128_t, &cooperative::by_coop_childs>>,
70 eosio::indexed_by<"bycooptype"_n, eosio::const_mem_fun<cooperative, uint64_t, &cooperative::bycooptype>>>
contract
Definition: eosio.msig_tests.cpp:977
Definition: eosio.msig.hpp:34
Definition: table_registrator_orgs.hpp:15
eosio::asset minimum
Definition: table_registrator_orgs.hpp:30
uint64_t is_coop_index() const
Definition: table_registrator_orgs.hpp:57
uint64_t by_parent() const
Definition: table_registrator_orgs.hpp:53
eosio::binary_extension< eosio::asset > org_initial
Definition: table_registrator_orgs.hpp:33
std::string description
Definition: table_registrator_orgs.hpp:20
eosio::binary_extension< document > document
Definition: table_registrator_orgs.hpp:38
std::string announce
Definition: table_registrator_orgs.hpp:19
eosio::binary_extension< eosio::asset > org_minimum
Definition: table_registrator_orgs.hpp:34
bool is_cooperative
Definition: table_registrator_orgs.hpp:21
eosio::binary_extension< eosio::time_point_sec > created_at
Definition: table_registrator_orgs.hpp:37
eosio::name parent_username
Definition: table_registrator_orgs.hpp:17
eosio::binary_extension< eosio::asset > org_registration
Definition: table_registrator_orgs.hpp:32
uint64_t by_status() const
Definition: table_registrator_orgs.hpp:47
eosio::name coop_type
Definition: table_registrator_orgs.hpp:26
bool is_coop() const
Definition: table_registrator_orgs.hpp:61
uint64_t bycooptype() const
Definition: table_registrator_orgs.hpp:59
uint128_t by_coop_childs() const
Definition: table_registrator_orgs.hpp:55
eosio::asset registration
Definition: table_registrator_orgs.hpp:28
eosio::asset initial
Definition: table_registrator_orgs.hpp:29
eosio::binary_extension< eosio::name > status
Definition: table_registrator_orgs.hpp:36
uint64_t by_created() const
Definition: table_registrator_orgs.hpp:49
void check_symbol_or_fail(eosio::asset contribution)
Definition: table_registrator_orgs.hpp:42
uint64_t primary_key() const
Definition: table_registrator_orgs.hpp:40
eosio::name username
Definition: table_registrator_orgs.hpp:16
eosio::multi_index< "orgs"_n, cooperative, eosio::indexed_by<"iscoop"_n, eosio::const_mem_fun< cooperative, uint64_t, &cooperative::is_coop_index > >, eosio::indexed_by<"byparent"_n, eosio::const_mem_fun< cooperative, uint64_t, &cooperative::by_parent > >, eosio::indexed_by<"bycoopchilds"_n, eosio::const_mem_fun< cooperative, uint128_t, &cooperative::by_coop_childs > >, eosio::indexed_by<"bycooptype"_n, eosio::const_mem_fun< cooperative, uint64_t, &cooperative::bycooptype > > > cooperatives_index
Definition: table_registrator_orgs.hpp:71
static uint128_t combine_ids(const uint64_t &x, const uint64_t &y)
Definition: utils.hpp:7