schema

package
v0.11.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 1, 2026 License: Apache-2.0 Imports: 7 Imported by: 0

Documentation

Overview

Package schema provides the `@schema NAME { Field Type `json:"..." validate:"..."` ... }` directive. The declaration lands in meta["schemas"]; the `:schema=NAME` modifier attaches the name to an atom so the strict-mode validation hook can find it.

Typical use:

@schema TestUser {
  Name  string `json:"name"  validate:"required"`
  Email string `json:"email" validate:"email"`
}
{ name: "Ada" } -> noop:schema=TestUser

Index

Constants

View Source
const ID = "schema"

Variables

View Source
var Directive = core.Directive{
	Name:    "schema",
	Example: `@schema Plan { Summary string }`,
	Handler: handleDirective,
}

Directive parses `@schema NAME { ... }` into a Schema appended to meta["schemas"]. Duplicate names are a compile error.

View Source
var SchemaModifier = core.String("schema",
	func(b *action.Builder[any, any], name string) *action.Builder[any, any] {
		return b.Tag("schema:" + name)
	})

SchemaModifier attaches a schema name to an atom as a tag. The tag is read by the strict-mode validation hook.

Functions

func Bundle

func Bundle(_ map[string]string) core.Bundle

func Validate

func Validate(schema Schema, payload any) error

Validate checks payload against schema. It only enforces required fields and coarse type compatibility; richer validation is the job of the validation package.

Types

type Field

type Field struct {
	Name     string
	JSONName string
	Type     string
	Kind     Kind
	ElemType string
	Pointer  bool
	Slice    bool
	Map      bool
	Tags     map[string]string
}

SchemaField is one parsed field declaration.

type Kind

type Kind uint8

SchemaKind is a coarse classification used by Validate.

const (
	KindString Kind = iota
	KindInt
	KindFloat
	KindBool
	KindAny
	KindStruct
)

type Schema

type Schema struct {
	Name   string
	Fields []Field
}

Schema is one complete declaration.

func ByName

func ByName(meta map[string]any, name string) (Schema, bool)

SchemaByName returns the named schema if declared.

func SchemasFromMap

func SchemasFromMap(meta map[string]any) []Schema

SchemasFromMap returns the schemas stored under meta["schemas"]. Nil-safe.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL