add more debug info to schema errors

This commit is contained in:
Matthew Rich 2025-08-25 03:53:49 +00:00
parent 2d4234c6a0
commit 00d12be3f5

View File

@ -20,10 +20,10 @@ type Schema struct {
schema gojsonschema.JSONLoader schema gojsonschema.JSONLoader
} }
func New(name string, fs fs.FS) *Schema { func New(name string, schemaFS fs.FS) *Schema {
path := fmt.Sprintf("file://schemas/%s.schema.json", name) path := fmt.Sprintf("file://schemas/%s.schema.json", name)
return &Schema{schema: gojsonschema.NewReferenceLoaderFileSystem(path, http.FS(fs))} return &Schema{schema: gojsonschema.NewReferenceLoaderFileSystem(path, http.FS(schemaFS))}
//return &Schema{schema: gojsonschema.NewReferenceLoader(path)} //return &Schema{schema: gojsonschema.NewReferenceLoader(path)}
} }
@ -36,10 +36,10 @@ func (s *Schema) Validate(source string) error {
slog.Info("schema error", "source", source, "schema", s.schema, "result", result, "err", err) slog.Info("schema error", "source", source, "schema", s.schema, "result", result, "err", err)
return err return err
} }
slog.Info("schema.Validate()", "schema", s.schema, "result", result, "err", err)
if !result.Valid() { if !result.Valid() {
schemaErrors := strings.Builder{} schemaErrors := strings.Builder{}
schemaErrors.WriteString(fmt.Sprintf("source: %s schema: %#v ", source, s.schema))
for _, err := range result.Errors() { for _, err := range result.Errors() {
schemaErrors.WriteString(err.String() + "\n") schemaErrors.WriteString(err.String() + "\n")
} }
@ -56,3 +56,11 @@ func (s *Schema) ValidateSchema() error {
slog.Info("validate schema definition", "schemaloader", sl, "err", schemaErr) slog.Info("validate schema definition", "schemaloader", sl, "err", schemaErr)
return schemaErr return schemaErr
} }
func (s *Schema) Debug(schemaFS fs.FS) {
if files, err := fs.ReadDir(schemaFS, "schemas"); err == nil {
for _, f := range files {
slog.Info("Schema.Debug()", "file", f.Name())
}
}
}