/* Copyright © 2026 Thomas von Dein This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ package es import ( "context" "codeberg.org/scip/esctl/pkg/cfg" "github.com/elastic/go-elasticsearch/v9/typedapi/esdsl" "github.com/elastic/go-elasticsearch/v9/typedapi/indices/rollover" "github.com/elastic/go-elasticsearch/v9/typedapi/types" ) func RolloverConditions(conf *cfg.Config) types.RolloverConditionsVariant { cond := esdsl.NewRolloverConditions() if conf.MaxAge != "" { cond.MaxAge(esdsl.NewDuration().String(conf.MaxAge)) } if conf.MaxDocs > 0 { cond.MaxDocs(int64(conf.MaxDocs)) } if conf.MaxShardSize > 0 { bs := esdsl.NewByteSize() bs.Int64(int64(conf.MaxShardSize)) cond.MaxPrimaryShardSize(bs) } if conf.MaxShardDocs > 0 { cond.MaxPrimaryShardDocs(int64(conf.MaxShardDocs)) } return cond } func RolloverAlias(conf *cfg.Config, alias string) (*rollover.Response, error) { roll := conf.DefaultCluster.ES.Indices.Rollover(alias) if conf.Wait { roll.WaitForActiveShards("all") } if conf.DryRun { roll.DryRun(true) } cond := RolloverConditions(conf) roll.Conditions(cond) return roll.Do(context.Background()) }