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 ( import (
"log" "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 var structful *Structful
type IStructful interface { type IStructful interface {
@@ -65,7 +102,7 @@ type StructfulProps struct {
} }
func(s *Structful) Save(data map[string]any) error { 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 return err
} }