diff --git a/structful.go b/structful.go index 2179b3b..50fc3a8 100644 --- a/structful.go +++ b/structful.go @@ -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 }