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