Add jsonschema validator

This commit is contained in:
George Suntres
2026-03-31 11:10:46 -04:00
parent 47f7fdf9c0
commit c78aed6441

View File

@@ -3,9 +3,46 @@ package structful
import (
"log"
"git.gsuntres.com/general/commons"
"github.com/ianlancetaylor/jsonschema"
"github.com/ianlancetaylor/jsonschema/draft7"
)
// import (
// // "io"
// // "encoding/json"
// "log"
// "fmt"
// "errors"
// )
var validator *jsonschema.Schema
func init() {
builder := draft7.NewBuilder()
builder.AddType("object")
builder.AddProperties(map[string]*jsonschema.Schema{
"_group": draft7.NewSubBuilder().
AddType("string").
Build(),
"_name": draft7.NewSubBuilder().
AddType("string").
Build(),
"_version": draft7.NewSubBuilder().
AddType("string").
Build(),
})
builder.AddRequired([]string{"_group", "_name", "_version"})
builder.AddAdditionalProperties(draft7.NewSubBuilder().BoolSchema(true))
validator = builder.Build()
}
var structful *Structful
type IStructful interface {
@@ -65,7 +102,7 @@ type StructfulProps struct {
}
func(s *Structful) Save(data map[string]any) error {
if err := commons.Validate(data); err != nil {
if err := validator.Validate(data); err != nil {
return err
}