COOPENOMICS  v1
Кооперативная Экономика
Структура Apps::release

Запись каталога: один релиз пакета. Подробнее...

#include <table_apps_releases.hpp>

Открытые члены

uint64_t primary_key () const
 
uint64_t by_package () const
 
uint128_t by_pkg_status () const
 
uint64_t by_superseded () const
 

Открытые атрибуты

uint64_t id
 
name package_id
 
std::string version
 
scope_t scope
 
name status
 
time_point_sec published_at
 
time_point_sec superseded_at
 
name moderated_by
 
checksum256 tarball_sha256
 
std::string meta
 

Подробное описание

Запись каталога: один релиз пакета.

Жизненный цикл записи:

  1. setrelease создаёт row со status=active, superseded_at=0.
  2. Любой существующий active с тем же (package_id, scope) переходит в superseded, superseded_at=now.
  3. withdraw ставит status=withdrawn (релиз скомпрометирован / отозван юридически). withdrawn НЕ удаляются по TTL — храним до явной чистки.
  4. TTL retention: superseded старше 90 дней удаляются inline в setrelease (до 50 за вызов) или по явному cleanup(package_id).

Решение НЕ хранить полную историю принято намеренно: каталог — это source-of-truth текущего состояния, история живёт в git/docker registry. RAM-budget при 1000 пакетов × ~10 релизов в окне = ~40K записей.

Indexing strategy:

  • PK id — auto-inc через get_global_id(_apps, "release"_n).
  • bypackage — выборка всех релизов пакета (CA для scope-resolver).
  • bypkgstat — выборка active/superseded/withdrawn внутри пакета (composite package_id<<8 | status_code); удобно для cleanup «найти все superseded для пакета X».
  • bysuperseded — sorted by superseded_at; используется в cleanup для нахождения самых старых записей под удаление.
Заметки
tarball_sha256 — содержательный хэш артефакта, нужен для integrity-check при скачивании. Сама проверка — на CA-auth, контракт хэш только хранит.
См. также
lib/domain/table_apps_packages.hpp

Методы

◆ by_package()

uint64_t Apps::release::by_package ( ) const
inline

◆ by_pkg_status()

uint128_t Apps::release::by_pkg_status ( ) const
inline

◆ by_superseded()

uint64_t Apps::release::by_superseded ( ) const
inline

◆ primary_key()

uint64_t Apps::release::primary_key ( ) const
inline

Данные класса

◆ id

uint64_t Apps::release::id

◆ meta

std::string Apps::release::meta

◆ moderated_by

name Apps::release::moderated_by

◆ package_id

name Apps::release::package_id

◆ published_at

time_point_sec Apps::release::published_at

◆ scope

scope_t Apps::release::scope

◆ status

name Apps::release::status

◆ superseded_at

time_point_sec Apps::release::superseded_at

◆ tarball_sha256

checksum256 Apps::release::tarball_sha256

◆ version

std::string Apps::release::version

Объявления и описания членов структуры находятся в файле: