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.