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 }