github.com/TrueBlocks/trueblocks-core/src/apps/chifra@v0.0.0-20241022031540-b362680128f7/internal/monitors/handle_decache.go (about)

     1  package monitorsPkg
     2  
     3  import (
     4  	"github.com/TrueBlocks/trueblocks-core/src/apps/chifra/pkg/monitor"
     5  	"github.com/TrueBlocks/trueblocks-core/src/apps/chifra/pkg/output"
     6  	"github.com/TrueBlocks/trueblocks-core/src/apps/chifra/pkg/types"
     7  	"github.com/TrueBlocks/trueblocks-core/src/apps/chifra/pkg/usage"
     8  )
     9  
    10  func (opts *MonitorsOptions) HandleDecache(rCtx *output.RenderCtx) error {
    11  	monitorArray := make([]monitor.Monitor, 0, len(opts.Addrs))
    12  	var updater = monitor.NewUpdater(opts.Globals.Chain, opts.Globals.TestMode, true /* skipFreshen */, opts.Addrs)
    13  	if canceled, err := updater.FreshenMonitors(&monitorArray); err != nil || canceled {
    14  		return err
    15  	}
    16  
    17  	fetchData := func(modelChan chan types.Modeler, errorChan chan error) {
    18  		doIt := true
    19  		for _, mon := range monitorArray {
    20  			if doIt && !opts.Globals.IsApiMode() && !usage.QueryUser(mon.GetRemoveWarning(), "Not decaching") {
    21  				continue
    22  			}
    23  			doIt = false
    24  			showProgress := opts.Globals.ShowProgressNotTesting()
    25  			if result, err := mon.Decache(opts.Conn, showProgress); err != nil {
    26  				errorChan <- err
    27  				continue
    28  			} else {
    29  				modelChan <- &types.Message{
    30  					Msg: result,
    31  				}
    32  			}
    33  		}
    34  	}
    35  	opts.Globals.NoHeader = true
    36  	return output.StreamMany(rCtx, fetchData, opts.Globals.OutputOpts())
    37  }