COOPENOMICS  v1
Кооперативная Экономика
table_apps_releases.hpp
См. документацию.
1#pragma once
2
3
4#include "../core/ram_payer.hpp"
5#include <eosio/eosio.hpp>
6#include <eosio/crypto.hpp>
7#include <string>
8#include <vector>
9
10#include "../consts.hpp"
11#include "../core/utils.hpp"
12
13namespace Apps {
14
15using namespace eosio;
16
32struct scope_t {
33 name kind; // "all" | "subnet" | "canary"
34 std::vector<name> targets; // labels подсетей или coopname'ы
35
36 EOSLIB_SERIALIZE(scope_t, (kind)(targets))
37};
38
72struct [[eosio::table, eosio::contract(APPS)]] release {
73 uint64_t id;
74 name package_id; // FK → packages.package_id
75 std::string version; // semver
77 name status; // "active" | "superseded" | "withdrawn"
78 time_point_sec published_at;
79 time_point_sec superseded_at; // 0 пока active
80 name moderated_by; // имя модератора (audit)
81 checksum256 tarball_sha256;
82 std::string meta; // JSON-строка: changelog, релиз-нотес и т.п.
83
84 uint64_t primary_key() const { return id; }
85 uint64_t by_package() const { return package_id.value; }
86 uint128_t by_pkg_status() const { return ((uint128_t)package_id.value << 64) | status.value; }
87 uint64_t by_superseded() const { return superseded_at.sec_since_epoch(); }
88};
89
90typedef eosio::multi_index<
91 "releases"_n, release,
92 eosio::indexed_by<"bypackage"_n, eosio::const_mem_fun<release, uint64_t, &release::by_package>>,
93 eosio::indexed_by<"bypkgstat"_n, eosio::const_mem_fun<release, uint128_t, &release::by_pkg_status>>,
94 eosio::indexed_by<"bysuperseded"_n, eosio::const_mem_fun<release, uint64_t, &release::by_superseded>>>
96
97} // namespace Apps
98
99// Плательщик за оперативную память строк таблицы — правило в lib/core/ram_payer.hpp.
contract
Definition: eosio.msig_tests.cpp:977
Definition: apps.hpp:75
eosio::multi_index< "releases"_n, release, eosio::indexed_by<"bypackage"_n, eosio::const_mem_fun< release, uint64_t, &release::by_package > >, eosio::indexed_by<"bypkgstat"_n, eosio::const_mem_fun< release, uint128_t, &release::by_pkg_status > >, eosio::indexed_by<"bysuperseded"_n, eosio::const_mem_fun< release, uint64_t, &release::by_superseded > > > releases_index
Definition: table_apps_releases.hpp:95
Definition: eosio.msig.hpp:34
Запись каталога: один релиз пакета.
Definition: table_apps_releases.hpp:72
uint64_t primary_key() const
Definition: table_apps_releases.hpp:84
name moderated_by
Definition: table_apps_releases.hpp:80
time_point_sec superseded_at
Definition: table_apps_releases.hpp:79
name status
Definition: table_apps_releases.hpp:77
scope_t scope
Definition: table_apps_releases.hpp:76
std::string meta
Definition: table_apps_releases.hpp:82
std::string version
Definition: table_apps_releases.hpp:75
uint64_t by_superseded() const
Definition: table_apps_releases.hpp:87
uint128_t by_pkg_status() const
Definition: table_apps_releases.hpp:86
time_point_sec published_at
Definition: table_apps_releases.hpp:78
uint64_t by_package() const
Definition: table_apps_releases.hpp:85
uint64_t id
Definition: table_apps_releases.hpp:73
name package_id
Definition: table_apps_releases.hpp:74
checksum256 tarball_sha256
Definition: table_apps_releases.hpp:81
Описание области видимости релиза.
Definition: table_apps_releases.hpp:32
name kind
Definition: table_apps_releases.hpp:33
std::vector< name > targets
Definition: table_apps_releases.hpp:34
RAM_PAYER_CLASS(Apps::release, contract)