agents/config/scribe.go
package config
import (
"context"
"fmt"
scribeConfig "github.com/synapsecns/sanguine/services/scribe/config"
)
// ScribeConfig is used to configure a scribe for the Executor.
type ScribeConfig struct {
// Type is the type of scribe. This can be either "embedded" or "remote".
Type string `yaml:"type"`
// EmbeddedDBConfig is the database configuration for an embedded scribe.
EmbeddedDBConfig scribeConfig.DBConfig `yaml:"embedded_db_config,omitempty"`
// EmbeddedScribeConfig is the config for the embedded scribe.
EmbeddedScribeConfig scribeConfig.Config `yaml:"embedded_scribe_config,omitempty"`
// Port is the port to listen on for the remote scribe.
Port uint `yaml:"port,omitempty"`
// URL is the URL to connect to for the remote scribe.
URL string `yaml:"url,omitempty"`
}
// IsValid makes sure the config is valid. This is done by calling IsValid() on each
// submodule. If any method returns an error that is returned here and the entirety
// of IsValid returns false. Any warnings are logged by the submodules respective loggers.
func (c *ScribeConfig) IsValid(ctx context.Context) (ok bool, err error) {
if ok, err = c.EmbeddedScribeConfig.IsValid(); !ok {
return false, fmt.Errorf("embedded scribe config is invalid: %w", err)
}
return true, nil
}