func (s *Schedule) PutMetadata(k metadata.Metakey, v interface{}) error { isCoreMeta := (k.Name == "desc" || k.Name == "unit" || k.Name == "rate") if !isCoreMeta { s.DataAccess.Metadata().PutTagMetadata(k.TagSet(), k.Name, fmt.Sprint(v), utcNow()) return nil } if k.Metric == "" { err := fmt.Errorf("desc, rate, and unit require metric name") slog.Error(err) return err } strVal, ok := v.(string) if !ok { err := fmt.Errorf("desc, rate, and unit require value to be string. Found: %s", reflect.TypeOf(v)) slog.Error(err) return err } return s.DataAccess.Metadata().PutMetricMetadata(k.Metric, k.Name, strVal) }