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

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

#include <table_apps_subs.hpp>

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

uint64_t primary_key () const
 
uint128_t by_cooppkg () const
 
uint64_t by_coop () const
 
uint64_t by_expires () const
 

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

uint64_t id
 
name coopname
 
name package_id
 
checksum256 chain_id
 
name plan
 
bool active
 
time_point_sec start_at
 
time_point_sec end_at
 
time_point_sec created_at
 
time_point_sec updated_at
 

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

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

Идентификация подписки — composite (coopname, package_id, chain_id):

  • coopname — кто подписан (Antelope name).
  • package_id — на какой пакет.
  • chain_id — в какой подсети действует подписка. Контракт apps деплоится на корневой координационной KE-цепи и обслуживает несколько подсетей; chain_id привязывает подписку к конкретной подсети, в которой кооператив находится.

plan — имя плана (basic, premium, ...). Это только метка: биллинг (расчёт стоимости, приём оплаты, выставление счёта) — задача кабинета ВОСХОД и контракта pay.coopenomics. Сюда приходит уже факт «подписка активна с X по Y по плану Z».

regsub идемпотентно по (coopname, package_id): повторный вызов с тем же ключом продлевает end_at (= max(текущее, новое)) и обновляет plan/active. Это поведение сознательное — биллинг при retry не должен бояться дубликатов.

expsub НЕ удаляет row, а ставит active=false. Запись остаётся для аудита истечения подписки. Cleanup просроченных записей — задача отдельного периодического действия (вне MVP).

Indexing:

  • PK id — auto-inc.
  • bycooppkg — composite (coopname, package_id) для idempotent upsert и проверки «есть ли активная подписка коопа X на пакет Y».
  • bycoop — все подписки одного кооператива.
  • byexpires — sorted by end_at для будущего auto-cleanup.
См. также
lib/domain/table_apps_coops.hppchain_id ↔ кооператив.

Методы

◆ by_coop()

uint64_t Apps::sub::by_coop ( ) const
inline

◆ by_cooppkg()

uint128_t Apps::sub::by_cooppkg ( ) const
inline

◆ by_expires()

uint64_t Apps::sub::by_expires ( ) const
inline

◆ primary_key()

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

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

◆ active

bool Apps::sub::active

◆ chain_id

checksum256 Apps::sub::chain_id

◆ coopname

name Apps::sub::coopname

◆ created_at

time_point_sec Apps::sub::created_at

◆ end_at

time_point_sec Apps::sub::end_at

◆ id

uint64_t Apps::sub::id

◆ package_id

name Apps::sub::package_id

◆ plan

name Apps::sub::plan

◆ start_at

time_point_sec Apps::sub::start_at

◆ updated_at

time_point_sec Apps::sub::updated_at

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