@@ -2941,22 +2941,64 @@ bool operator!=(const TChangefeedDescription& lhs, const TChangefeedDescription&
29412941
29422942// //////////////////////////////////////////////////////////////////////////////
29432943
2944+ TEvictionTierSettings::TEvictionTierSettings (TString storageName, TDuration evictionDelay)
2945+ : StorageName_(storageName)
2946+ , EvictionDelay_(evictionDelay)
2947+ {}
2948+
2949+ TEvictionTierSettings::TEvictionTierSettings (const Ydb::Table::EvictionTier& tier)
2950+ : StorageName_(tier.storage_name())
2951+ , EvictionDelay_(TDuration::Seconds(tier.evict_after_seconds()))
2952+ {}
2953+
2954+ void TEvictionTierSettings::SerializeTo (Ydb::Table::EvictionTier& proto) const {
2955+ proto.set_storage_name (StorageName_);
2956+ proto.set_evict_after_seconds (EvictionDelay_.Seconds ());
2957+ }
2958+
2959+ const TString& TEvictionTierSettings::GetStorageName () const {
2960+ return StorageName_;
2961+ }
2962+
2963+ TDuration TEvictionTierSettings::GetEvictionDelay () const {
2964+ return EvictionDelay_;
2965+ }
2966+
29442967TDateTypeColumnModeSettings::TDateTypeColumnModeSettings (const TString& columnName, const TDuration& expireAfter)
29452968 : ColumnName_(columnName)
29462969 , ExpireAfter_(expireAfter)
29472970{}
29482971
2972+ TDateTypeColumnModeSettings::TDateTypeColumnModeSettings (const TString& columnName, const std::optional<TDuration>& expireAfter, const TVector<TEvictionTierSettings>& tiers)
2973+ : ColumnName_(columnName)
2974+ , ExpireAfter_(expireAfter)
2975+ , Tiers_(tiers)
2976+ {}
2977+
29492978void TDateTypeColumnModeSettings::SerializeTo (Ydb::Table::DateTypeColumnModeSettings& proto) const {
29502979 proto.set_column_name (ColumnName_);
2951- proto.set_expire_after_seconds (ExpireAfter_.Seconds ());
2980+ if (ExpireAfter_) {
2981+ proto.set_expire_after_seconds (ExpireAfter_->Seconds ());
2982+ }
2983+ for (const auto & tier : Tiers_) {
2984+ tier.SerializeTo (*proto.Addstorage_tiers ());
2985+ }
29522986}
29532987
29542988const TString& TDateTypeColumnModeSettings::GetColumnName () const {
29552989 return ColumnName_;
29562990}
29572991
29582992const TDuration& TDateTypeColumnModeSettings::GetExpireAfter () const {
2959- return ExpireAfter_;
2993+ if (ExpireAfter_) {
2994+ return *ExpireAfter_;
2995+ }
2996+ static constexpr TDuration DurationMax = TDuration::Max ();
2997+ return DurationMax;
2998+ }
2999+
3000+ bool TDateTypeColumnModeSettings::HasExpireAfter () const {
3001+ return !!ExpireAfter_;
29603002}
29613003
29623004TValueSinceUnixEpochModeSettings::TValueSinceUnixEpochModeSettings (const TString& columnName, EUnit columnUnit, const TDuration& expireAfter)
@@ -2965,10 +3007,22 @@ TValueSinceUnixEpochModeSettings::TValueSinceUnixEpochModeSettings(const TString
29653007 , ExpireAfter_(expireAfter)
29663008{}
29673009
3010+ TValueSinceUnixEpochModeSettings::TValueSinceUnixEpochModeSettings (const TString& columnName, EUnit columnUnit, const std::optional<TDuration>& expireAfter, const TVector<TEvictionTierSettings>& tiers)
3011+ : ColumnName_(columnName)
3012+ , ColumnUnit_(columnUnit)
3013+ , ExpireAfter_(expireAfter)
3014+ , Tiers_(tiers)
3015+ {}
3016+
29683017void TValueSinceUnixEpochModeSettings::SerializeTo (Ydb::Table::ValueSinceUnixEpochModeSettings& proto) const {
29693018 proto.set_column_name (ColumnName_);
29703019 proto.set_column_unit (TProtoAccessor::GetProto (ColumnUnit_));
2971- proto.set_expire_after_seconds (ExpireAfter_.Seconds ());
3020+ if (ExpireAfter_) {
3021+ proto.set_expire_after_seconds (ExpireAfter_->Seconds ());
3022+ }
3023+ for (const auto & tier : Tiers_) {
3024+ tier.SerializeTo (*proto.Addstorage_tiers ());
3025+ }
29723026}
29733027
29743028const TString& TValueSinceUnixEpochModeSettings::GetColumnName () const {
@@ -2980,7 +3034,15 @@ TValueSinceUnixEpochModeSettings::EUnit TValueSinceUnixEpochModeSettings::GetCol
29803034}
29813035
29823036const TDuration& TValueSinceUnixEpochModeSettings::GetExpireAfter () const {
2983- return ExpireAfter_;
3037+ if (ExpireAfter_) {
3038+ return *ExpireAfter_;
3039+ }
3040+ static constexpr TDuration DurationMax = TDuration::Max ();
3041+ return DurationMax;
3042+ }
3043+
3044+ bool TValueSinceUnixEpochModeSettings::HasExpireAfter () const {
3045+ return !!ExpireAfter_;
29843046}
29853047
29863048void TValueSinceUnixEpochModeSettings::Out (IOutputStream& out, EUnit unit) {
@@ -3023,12 +3085,24 @@ TValueSinceUnixEpochModeSettings::EUnit TValueSinceUnixEpochModeSettings::UnitFr
30233085 return EUnit::Unknown;
30243086}
30253087
3088+ TTtlSettings::TTtlSettings (const TString& columnName, const std::optional<TDuration>& expireAfter, const TVector<TEvictionTierSettings>& tiers)
3089+ : Mode_(TDateTypeColumnModeSettings(columnName, expireAfter, tiers))
3090+ {}
3091+
30263092TTtlSettings::TTtlSettings (const TString& columnName, const TDuration& expireAfter)
3027- : Mode_(TDateTypeColumnModeSettings( columnName, expireAfter) )
3093+ : TTtlSettings( columnName, expireAfter, {} )
30283094{}
30293095
30303096TTtlSettings::TTtlSettings (const Ydb::Table::DateTypeColumnModeSettings& mode, ui32 runIntervalSeconds)
3031- : TTtlSettings(mode.column_name(), TDuration::Seconds(mode.expire_after_seconds()))
3097+ : TTtlSettings(mode.column_name(),
3098+ mode.has_expire_after_seconds() ? std::optional<TDuration>(TDuration::Seconds(mode.expire_after_seconds())) : std::nullopt ,
3099+ [&tiers = mode.storage_tiers()]() {
3100+ TVector<TEvictionTierSettings> result;
3101+ for (const auto & tier : tiers) {
3102+ result.push_back (TEvictionTierSettings (tier));
3103+ }
3104+ return result;
3105+ }())
30323106{
30333107 RunInterval_ = TDuration::Seconds (runIntervalSeconds);
30343108}
@@ -3037,12 +3111,24 @@ const TDateTypeColumnModeSettings& TTtlSettings::GetDateTypeColumn() const {
30373111 return std::get<TDateTypeColumnModeSettings>(Mode_);
30383112}
30393113
3114+ TTtlSettings::TTtlSettings (const TString& columnName, EUnit columnUnit, const std::optional<TDuration>& expireAfter, const TVector<TEvictionTierSettings>& tiers)
3115+ : Mode_(TValueSinceUnixEpochModeSettings(columnName, columnUnit, expireAfter, tiers))
3116+ {}
3117+
30403118TTtlSettings::TTtlSettings (const TString& columnName, EUnit columnUnit, const TDuration& expireAfter)
3041- : Mode_(TValueSinceUnixEpochModeSettings( columnName, columnUnit, expireAfter) )
3119+ : TTtlSettings( columnName, columnUnit, expireAfter, {} )
30423120{}
30433121
30443122TTtlSettings::TTtlSettings (const Ydb::Table::ValueSinceUnixEpochModeSettings& mode, ui32 runIntervalSeconds)
3045- : TTtlSettings(mode.column_name(), TProtoAccessor::FromProto(mode.column_unit()), TDuration::Seconds(mode.expire_after_seconds()))
3123+ : TTtlSettings(mode.column_name(), TProtoAccessor::FromProto(mode.column_unit()),
3124+ mode.has_expire_after_seconds() ? std::optional<TDuration>(TDuration::Seconds(mode.expire_after_seconds())) : std::nullopt ,
3125+ [&tiers = mode.storage_tiers()]() {
3126+ TVector<TEvictionTierSettings> result;
3127+ for (const auto & tier : tiers) {
3128+ result.push_back (TEvictionTierSettings (tier));
3129+ }
3130+ return result;
3131+ }())
30463132{
30473133 RunInterval_ = TDuration::Seconds (runIntervalSeconds);
30483134}
0 commit comments