Add jsonschema validator
This commit is contained in:
41
structful.go
41
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
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user