COOPENOMICS  v1
Кооперативная Экономика
agreements.hpp
См. документацию.
1
12struct [[eosio::table, eosio::contract(SOVIET)]] coagreement {
13 eosio::name type;
14 eosio::name coopname;
15 uint64_t program_id;
16 uint64_t draft_id;
17
18 uint64_t primary_key() const { return type.value;};
19
20};
21
22typedef eosio::multi_index<"coagreements"_n, coagreement> coagreements_index;
23
24
25coagreement get_coagreement_or_fail(eosio::name coopname, eosio::name type) {
26 coagreements_index coagreements(_soviet, coopname.value);
27 auto coagreement = coagreements.find(type.value);
28 eosio::check(coagreement != coagreements.end(), "Соглашение указанного типа не найдено");
29
30 return *coagreement;
31};
32
33
45struct [[eosio::table, eosio::contract(SOVIET)]] agreement {
46 uint64_t id;
47 eosio::name coopname;
48 eosio::name username;
49 eosio::name type;
50 uint64_t program_id;
51 uint64_t draft_id;
52 uint64_t version;
54 eosio::name status;
55 eosio::time_point_sec updated_at;
56 uint64_t primary_key() const { return id; };
57 uint64_t by_username() const { return username.value; };
58 uint64_t by_status() const {return coopname.value; };
59 uint64_t by_draft() const {return draft_id; };
60
65 uint128_t by_user_and_draft() const {
66 return combine_ids(username.value, draft_id);
67 };
68
69};
70
71typedef eosio::multi_index<"agreements"_n, agreement,
72 eosio::indexed_by<"byusername"_n, eosio::const_mem_fun<agreement, uint64_t, &agreement::by_username>>,
73 eosio::indexed_by<"bystatus"_n, eosio::const_mem_fun<agreement, uint64_t, &agreement::by_status>>,
74 eosio::indexed_by<"bydraft"_n, eosio::const_mem_fun<agreement, uint64_t, &agreement::by_draft>>,
75 eosio::indexed_by<"byuserdraft"_n, eosio::const_mem_fun<agreement, uint128_t, &agreement::by_user_and_draft>>
77
78
90struct [[eosio::table, eosio::contract(SOVIET)]] agreement2 {
91 uint64_t id;
92 eosio::name coopname;
93 eosio::name username;
94 eosio::name type;
95 uint64_t program_id;
96 uint64_t draft_id;
97 uint64_t version;
99 eosio::name status;
100 eosio::time_point_sec updated_at;
101 uint64_t primary_key() const { return id; };
102 uint64_t by_username() const { return username.value; };
103 uint64_t by_status() const {return coopname.value; };
104 uint64_t by_draft() const {return draft_id; };
105
110 uint128_t by_user_and_draft() const {
111 return combine_ids(username.value, draft_id);
112 };
113
114};
115
116typedef eosio::multi_index<"agreements3"_n, agreement2,
117 eosio::indexed_by<"byusername"_n, eosio::const_mem_fun<agreement2, uint64_t, &agreement2::by_username>>,
118 eosio::indexed_by<"bystatus"_n, eosio::const_mem_fun<agreement2, uint64_t, &agreement2::by_status>>,
119 eosio::indexed_by<"bydraft"_n, eosio::const_mem_fun<agreement2, uint64_t, &agreement2::by_draft>>,
120 eosio::indexed_by<"byuserdraft"_n, eosio::const_mem_fun<agreement2, uint128_t, &agreement2::by_user_and_draft>>
eosio::multi_index<"coagreements"_n, coagreement > coagreements_index
Definition: agreements.hpp:22
eosio::multi_index<"agreements"_n, agreement, eosio::indexed_by<"byusername"_n, eosio::const_mem_fun< agreement, uint64_t, &agreement::by_username > >, eosio::indexed_by<"bystatus"_n, eosio::const_mem_fun< agreement, uint64_t, &agreement::by_status > >, eosio::indexed_by<"bydraft"_n, eosio::const_mem_fun< agreement, uint64_t, &agreement::by_draft > >, eosio::indexed_by<"byuserdraft"_n, eosio::const_mem_fun< agreement, uint128_t, &agreement::by_user_and_draft > > > agreements_index
Definition: agreements.hpp:76
coagreement get_coagreement_or_fail(eosio::name coopname, eosio::name type)
Definition: agreements.hpp:25
eosio::multi_index<"agreements3"_n, agreement2, eosio::indexed_by<"byusername"_n, eosio::const_mem_fun< agreement2, uint64_t, &agreement2::by_username > >, eosio::indexed_by<"bystatus"_n, eosio::const_mem_fun< agreement2, uint64_t, &agreement2::by_status > >, eosio::indexed_by<"bydraft"_n, eosio::const_mem_fun< agreement2, uint64_t, &agreement2::by_draft > >, eosio::indexed_by<"byuserdraft"_n, eosio::const_mem_fun< agreement2, uint128_t, &agreement2::by_user_and_draft > > > agreements2_index
Definition: agreements.hpp:121
static constexpr eosio::name _soviet
Definition: consts.hpp:156
contract
Definition: eosio.msig_tests.cpp:977
Definition: eosio.msig.hpp:34
Таблица соглашений (новая версия)
Definition: agreements.hpp:90
eosio::name type
Тип принимаемого документа (соответствует действию в контракте)
Definition: agreements.hpp:94
uint64_t version
Версия шаблона (draft), связанного с типовым документом
Definition: agreements.hpp:97
uint64_t program_id
Вторичный индекс используется для связи с типовой таблицей
Definition: agreements.hpp:95
eosio::time_point_sec updated_at
Дата-время последнего обновления
Definition: agreements.hpp:100
uint64_t draft_id
Шаблон документа по регистру
Definition: agreements.hpp:96
uint64_t id
Уникальный идентификатор соглашения
Definition: agreements.hpp:91
eosio::name username
Имя пользователя
Definition: agreements.hpp:93
eosio::name status
Статус приёма документа
Definition: agreements.hpp:99
uint64_t primary_key() const
Definition: agreements.hpp:101
uint64_t by_status() const
Definition: agreements.hpp:103
uint64_t by_draft() const
Definition: agreements.hpp:104
eosio::name coopname
Имя кооператива
Definition: agreements.hpp:92
uint128_t by_user_and_draft() const
Возвращает ключ для индекса указанного соглашения пользователя.
Definition: agreements.hpp:110
document2 document
Документ соглашения
Definition: agreements.hpp:98
uint64_t by_username() const
Definition: agreements.hpp:102
Таблица соглашений (устаревшая версия)
Definition: agreements.hpp:45
document document
Документ соглашения
Definition: agreements.hpp:53
uint64_t by_draft() const
Definition: agreements.hpp:59
uint64_t draft_id
Шаблон документа по регистру
Definition: agreements.hpp:51
uint64_t by_status() const
Definition: agreements.hpp:58
uint64_t by_username() const
Definition: agreements.hpp:57
eosio::name coopname
Имя кооператива
Definition: agreements.hpp:47
eosio::name username
Имя пользователя
Definition: agreements.hpp:48
uint64_t version
Версия шаблона (draft), связанного с типовым документом
Definition: agreements.hpp:52
eosio::name status
Статус приёма документа
Definition: agreements.hpp:54
uint64_t program_id
Вторичный индекс используется для связи с типовой таблицей
Definition: agreements.hpp:50
uint128_t by_user_and_draft() const
Возвращает ключ для индекса указанного соглашения пользователя.
Definition: agreements.hpp:65
uint64_t primary_key() const
Definition: agreements.hpp:56
eosio::time_point_sec updated_at
Дата-время последнего обновления
Definition: agreements.hpp:55
eosio::name type
Тип принимаемого документа (соответствует действию в контракте)
Definition: agreements.hpp:49
uint64_t id
Уникальный идентификатор соглашения
Definition: agreements.hpp:46
Таблица типовых соглашений кооператива
Definition: agreements.hpp:12
uint64_t draft_id
Идентификатор шаблона документа
Definition: agreements.hpp:16
eosio::name coopname
Имя кооператива
Definition: agreements.hpp:14
uint64_t primary_key() const
Definition: agreements.hpp:18
uint64_t program_id
Идентификатор программы
Definition: agreements.hpp:15
eosio::name type
Тип соглашения (wallet | user | signature | privacy | ...)
Definition: agreements.hpp:13
Definition: drafts.hpp:28
Definition: drafts.hpp:7
static uint128_t combine_ids(const uint64_t &x, const uint64_t &y)
Definition: utils.hpp:5