diff --git a/docs/content/api/openapi.yaml b/docs/content/api/openapi.yaml index 1417a2644c..e24074ee30 100644 --- a/docs/content/api/openapi.yaml +++ b/docs/content/api/openapi.yaml @@ -953,10 +953,12 @@ paths: schema: properties: data: - description: Produces Name data. Corresponds to the chifra names command line. + description: Produces Message or Name data. Corresponds to the chifra names command line. type: array items: - $ref: "#/components/schemas/name" + oneOf: + - $ref: "#/components/schemas/message" + - $ref: "#/components/schemas/name" example: [ { @@ -4611,6 +4613,18 @@ components: type: number format: uint64 description: "the number of records known by the API for this address" + message: + description: "used for various responses when no real data is generated" + type: object + properties: + msg: + type: string + format: string + description: "the message" + num: + type: string + format: int + description: "a number if needed" response: required: - result diff --git a/docs/content/chifra/accounts.md b/docs/content/chifra/accounts.md index 2140de5587..f6375d8299 100644 --- a/docs/content/chifra/accounts.md +++ b/docs/content/chifra/accounts.md @@ -317,6 +317,7 @@ Notes: Data models produced by this tool: +- [message](/data-model/other/#message) - [name](/data-model/accounts/#name) Links: diff --git a/docs/content/data-model/other.md b/docs/content/data-model/other.md index 88d9ed9cfd..a00dc3fec1 100644 --- a/docs/content/data-model/other.md +++ b/docs/content/data-model/other.md @@ -147,6 +147,21 @@ SlurpCounts consist of the following fields: | address | the address used to query the API | address | | count | the number of records known by the API for this address | uint64 | +## Message + +The Message type is used in various places to return information about a command. For example, when using the `chifra names --autoname` feature in the SDK, a Message type is returned. + +The following commands produce and manage Messages: + +- [chifra names](/chifra/accounts/#chifra-names) + +Messages consist of the following fields: + +| Field | Description | Type | +| ----- | ------------------ | ------ | +| msg | the message | string | +| num | a number if needed | int | + ## Base types This documentation mentions the following basic data types. diff --git a/src/apps/chifra/internal/blocks/handle_decache.go b/src/apps/chifra/internal/blocks/handle_decache.go index 0f66ff6827..29011e016a 100644 --- a/src/apps/chifra/internal/blocks/handle_decache.go +++ b/src/apps/chifra/internal/blocks/handle_decache.go @@ -22,7 +22,7 @@ func (opts *BlocksOptions) HandleDecache() error { } ctx := context.Background() - fetchData := func(modelChan chan types.Modeler[types.RawModeler], errorChan chan error) { + fetchData := func(modelChan chan types.Modeler[types.RawMessage], errorChan chan error) { if msg, err := decache.Decache(opts.Conn, itemsToRemove, silent, opts.getCacheType()); err != nil { errorChan <- err } else { diff --git a/src/apps/chifra/internal/chunks/handle_diff.go b/src/apps/chifra/internal/chunks/handle_diff.go index edddb52ff0..b06c981667 100644 --- a/src/apps/chifra/internal/chunks/handle_diff.go +++ b/src/apps/chifra/internal/chunks/handle_diff.go @@ -28,7 +28,7 @@ func (opts *ChunksOptions) HandleDiff(blockNums []uint64) error { testMode := opts.Globals.TestMode ctx, cancel := context.WithCancel(context.Background()) - fetchData := func(modelChan chan types.Modeler[types.RawModeler], errorChan chan error) { + fetchData := func(modelChan chan types.Modeler[types.RawMessage], errorChan chan error) { walker := walk.NewCacheWalker( chain, testMode, diff --git a/src/apps/chifra/internal/chunks/handle_tag.go b/src/apps/chifra/internal/chunks/handle_tag.go index 3a279631a4..6dc95c7728 100644 --- a/src/apps/chifra/internal/chunks/handle_tag.go +++ b/src/apps/chifra/internal/chunks/handle_tag.go @@ -36,7 +36,7 @@ func (opts *ChunksOptions) HandleTag(blockNums []uint64) error { userHitCtrlC := false ctx, cancel := context.WithCancel(context.Background()) - fetchData := func(modelChan chan types.Modeler[types.RawModeler], errorChan chan error) { + fetchData := func(modelChan chan types.Modeler[types.RawMessage], errorChan chan error) { nChunksTagged := 0 man, err := manifest.ReadManifest(chain, opts.PublisherAddr, manifest.LocalCache) if err != nil { diff --git a/src/apps/chifra/internal/chunks/handle_truncate.go b/src/apps/chifra/internal/chunks/handle_truncate.go index 6c99263452..3130fce0f8 100644 --- a/src/apps/chifra/internal/chunks/handle_truncate.go +++ b/src/apps/chifra/internal/chunks/handle_truncate.go @@ -46,7 +46,7 @@ func (opts *ChunksOptions) HandleTruncate(blockNums []uint64) error { }) ctx, cancel := context.WithCancel(context.Background()) - fetchData := func(modelChan chan types.Modeler[types.RawModeler], errorChan chan error) { + fetchData := func(modelChan chan types.Modeler[types.RawMessage], errorChan chan error) { // First, we will remove the chunks and update the manifest. We do this separately for // each chunk, so that if we get interrupted, we have a relatively sane state (although, diff --git a/src/apps/chifra/internal/export/handle_decache.go b/src/apps/chifra/internal/export/handle_decache.go index 2bef6b3efb..8a8a58147b 100644 --- a/src/apps/chifra/internal/export/handle_decache.go +++ b/src/apps/chifra/internal/export/handle_decache.go @@ -27,7 +27,7 @@ func (opts *ExportOptions) HandleDecache(monitorArray []monitor.Monitor) error { silent := opts.Globals.TestMode || len(opts.Globals.File) > 0 ctx := context.Background() - fetchData := func(modelChan chan types.Modeler[types.RawModeler], errorChan chan error) { + fetchData := func(modelChan chan types.Modeler[types.RawMessage], errorChan chan error) { for _, mon := range monitorArray { if !opts.Globals.IsApiMode() && !usage.QueryUser(getWarning(mon.Address.Hex(), mon.Count()), "Not decaching") { continue diff --git a/src/apps/chifra/internal/logs/handle_decache.go b/src/apps/chifra/internal/logs/handle_decache.go index 2ff405f24d..e97a0bff8b 100644 --- a/src/apps/chifra/internal/logs/handle_decache.go +++ b/src/apps/chifra/internal/logs/handle_decache.go @@ -22,7 +22,7 @@ func (opts *LogsOptions) HandleDecache() error { } ctx := context.Background() - fetchData := func(modelChan chan types.Modeler[types.RawModeler], errorChan chan error) { + fetchData := func(modelChan chan types.Modeler[types.RawMessage], errorChan chan error) { if msg, err := decache.Decache(opts.Conn, itemsToRemove, silent, walk.Cache_Logs); err != nil { errorChan <- err } else { diff --git a/src/apps/chifra/internal/monitors/handle_decache.go b/src/apps/chifra/internal/monitors/handle_decache.go index e7d86edbd6..621ecbfbec 100644 --- a/src/apps/chifra/internal/monitors/handle_decache.go +++ b/src/apps/chifra/internal/monitors/handle_decache.go @@ -24,7 +24,7 @@ func (opts *MonitorsOptions) HandleDecache() error { message := "Decaching complete" logger.Info(message) if opts.Globals.IsApiMode() { - _ = output.StreamMany(context.Background(), func(modelChan chan types.Modeler[types.RawModeler], errorChan chan error) { + _ = output.StreamMany(context.Background(), func(modelChan chan types.Modeler[types.RawMessage], errorChan chan error) { modelChan <- &types.Message{ Msg: message, } diff --git a/src/apps/chifra/internal/names/README.md b/src/apps/chifra/internal/names/README.md index 1b94c6add0..559205b0cb 100644 --- a/src/apps/chifra/internal/names/README.md +++ b/src/apps/chifra/internal/names/README.md @@ -47,6 +47,7 @@ Notes: Data models produced by this tool: +- [message](/data-model/other/#message) - [name](/data-model/accounts/#name) ### Other Options diff --git a/src/apps/chifra/internal/names/handle_autoname.go b/src/apps/chifra/internal/names/handle_autoname.go index 47cfd637c2..16c974194d 100644 --- a/src/apps/chifra/internal/names/handle_autoname.go +++ b/src/apps/chifra/internal/names/handle_autoname.go @@ -32,7 +32,7 @@ func (opts *NamesOptions) HandleAutoname() error { logger.Info(message) if opts.Globals.IsApiMode() { - _ = output.StreamMany(context.Background(), func(modelChan chan types.Modeler[types.RawModeler], errorChan chan error) { + _ = output.StreamMany(context.Background(), func(modelChan chan types.Modeler[types.RawMessage], errorChan chan error) { modelChan <- &types.Message{ Msg: message, } diff --git a/src/apps/chifra/internal/names/handle_clean.go b/src/apps/chifra/internal/names/handle_clean.go index eea4771b97..3859d2901b 100644 --- a/src/apps/chifra/internal/names/handle_clean.go +++ b/src/apps/chifra/internal/names/handle_clean.go @@ -45,12 +45,15 @@ func (opts *NamesOptions) HandleClean() error { message = fmt.Sprintf("The %s names database was not cleaned", label) logger.Warn(message) } else { - message = fmt.Sprintf("The %s names database was cleaned. %d name(s) has been modified", label, modifiedCount) + message = fmt.Sprintf("The %s names database was cleaned. %d names have been modified", label, modifiedCount) + if modifiedCount == 1 { + message = strings.Replace(message, "names have been", "name has been", 1) + } logger.Info(message) } if opts.Globals.IsApiMode() { - _ = output.StreamMany(context.Background(), func(modelChan chan types.Modeler[types.RawModeler], errorChan chan error) { + _ = output.StreamMany(context.Background(), func(modelChan chan types.Modeler[types.RawMessage], errorChan chan error) { modelChan <- &types.Message{ Msg: message, } diff --git a/src/apps/chifra/internal/state/handle_decache.go b/src/apps/chifra/internal/state/handle_decache.go index ac70e82e03..7cc5cbf111 100644 --- a/src/apps/chifra/internal/state/handle_decache.go +++ b/src/apps/chifra/internal/state/handle_decache.go @@ -44,7 +44,7 @@ func (opts *StateOptions) HandleDecache() error { } ctx := context.Background() - fetchData := func(modelChan chan types.Modeler[types.RawModeler], errorChan chan error) { + fetchData := func(modelChan chan types.Modeler[types.RawMessage], errorChan chan error) { if msg, err := decache.Decache(opts.Conn, itemsToRemove, silent, walk.Cache_State); err != nil { errorChan <- err } else { diff --git a/src/apps/chifra/internal/traces/handle_decache.go b/src/apps/chifra/internal/traces/handle_decache.go index 0fb0cf327c..9555bca457 100644 --- a/src/apps/chifra/internal/traces/handle_decache.go +++ b/src/apps/chifra/internal/traces/handle_decache.go @@ -22,7 +22,7 @@ func (opts *TracesOptions) HandleDecache() error { } ctx := context.Background() - fetchData := func(modelChan chan types.Modeler[types.RawModeler], errorChan chan error) { + fetchData := func(modelChan chan types.Modeler[types.RawMessage], errorChan chan error) { if msg, err := decache.Decache(opts.Conn, itemsToRemove, silent, walk.Cache_Traces); err != nil { errorChan <- err } else { diff --git a/src/apps/chifra/internal/transactions/handle_decache.go b/src/apps/chifra/internal/transactions/handle_decache.go index ede1dee41e..d4f0200be7 100644 --- a/src/apps/chifra/internal/transactions/handle_decache.go +++ b/src/apps/chifra/internal/transactions/handle_decache.go @@ -22,7 +22,7 @@ func (opts *TransactionsOptions) HandleDecache() error { } ctx := context.Background() - fetchData := func(modelChan chan types.Modeler[types.RawModeler], errorChan chan error) { + fetchData := func(modelChan chan types.Modeler[types.RawMessage], errorChan chan error) { if msg, err := decache.Decache(opts.Conn, itemsToRemove, silent, walk.Cache_Transactions); err != nil { errorChan <- err } else { diff --git a/src/apps/chifra/internal/when/handle_decache.go b/src/apps/chifra/internal/when/handle_decache.go index 9a5625dd23..b15e446263 100644 --- a/src/apps/chifra/internal/when/handle_decache.go +++ b/src/apps/chifra/internal/when/handle_decache.go @@ -22,7 +22,7 @@ func (opts *WhenOptions) HandleDecache() error { } ctx := context.Background() - fetchData := func(modelChan chan types.Modeler[types.RawModeler], errorChan chan error) { + fetchData := func(modelChan chan types.Modeler[types.RawMessage], errorChan chan error) { if msg, err := decache.Decache(opts.Conn, itemsToRemove, silent, walk.Cache_Blocks); err != nil { errorChan <- err } else { diff --git a/src/apps/chifra/pkg/types/types_message.go b/src/apps/chifra/pkg/types/types_message.go index 75ce2c9b52..d5e8cd61ce 100644 --- a/src/apps/chifra/pkg/types/types_message.go +++ b/src/apps/chifra/pkg/types/types_message.go @@ -1,24 +1,44 @@ -// Copyright 2021 The TrueBlocks Authors. All rights reserved. +// Copyright 2016, 2024 The TrueBlocks Authors. All rights reserved. // Use of this source code is governed by a license that can // be found in the LICENSE file. /* - * Parts of this file were generated with makeClass --run. Edit only those parts of + * Parts of this file were auto generated. Edit only those parts of * the code inside of 'EXISTING_CODE' tags. */ package types // EXISTING_CODE +import "encoding/json" // EXISTING_CODE +type RawMessage struct { + Msg string `json:"msg"` + Num string `json:"num"` + // EXISTING_CODE + // EXISTING_CODE +} + type Message struct { - Msg string `json:"msg,omitempty"` - Num int `json:"num,omitempty"` + Msg string `json:"msg,omitempty"` + Num int `json:"num,omitempty"` + raw *RawMessage `json:"-"` + // EXISTING_CODE + // EXISTING_CODE +} + +func (s Message) String() string { + bytes, _ := json.Marshal(s) + return string(bytes) +} + +func (s *Message) Raw() *RawMessage { + return s.raw } -func (s *Message) Raw() *RawModeler { - return nil +func (s *Message) SetRaw(raw *RawMessage) { + s.raw = raw } func (s *Message) Model(chain, format string, verbose bool, extraOptions map[string]any) Model { diff --git a/src/dev_tools/goMaker/templates/classDefinitions/fields/message.csv b/src/dev_tools/goMaker/templates/classDefinitions/fields/message.csv new file mode 100644 index 0000000000..4b5d139000 --- /dev/null +++ b/src/dev_tools/goMaker/templates/classDefinitions/fields/message.csv @@ -0,0 +1,3 @@ +name ,type ,strDefault ,attributes ,docOrder ,description +msg ,string , ,omitempty , 1 ,the message +num ,int , ,omitempty , 2 ,a number if needed diff --git a/src/dev_tools/goMaker/templates/classDefinitions/message.toml b/src/dev_tools/goMaker/templates/classDefinitions/message.toml new file mode 100644 index 0000000000..ec6cf77bcc --- /dev/null +++ b/src/dev_tools/goMaker/templates/classDefinitions/message.toml @@ -0,0 +1,6 @@ +[settings] + class = "Message" + doc_group = "05-Other" + doc_descr = "used for various responses when no real data is generated" + doc_route = "518-message" + produced_by = "names" diff --git a/src/dev_tools/goMaker/templates/model-intros/message.md b/src/dev_tools/goMaker/templates/model-intros/message.md new file mode 100644 index 0000000000..ea9bbd927f --- /dev/null +++ b/src/dev_tools/goMaker/templates/model-intros/message.md @@ -0,0 +1 @@ +The Message type is used in various places to return information about a command. For example, when using the `chifra names --autoname` feature in the SDK, a Message type is returned.