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