contract

package
v0.4.0 Latest Latest
Warning

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

Go to latest
Published: Apr 4, 2024 License: MIT Imports: 5 Imported by: 0

Documentation

Index

Constants

View Source
const (
	FilterLogicAnd FilterLogic = "and"
	FilterLogicOr  FilterLogic = "or"

	FilterOperatorEqual                   FilterOperator = "eq"
	FilterOperatorNotEqual                FilterOperator = "neq"
	FilterOperatorGreaterThan             FilterOperator = "gt"
	FilterOperatorGreaterThanOrEqual      FilterOperator = "gte"
	FilterOperatorGreaterThanOrEqualOrNil FilterOperator = "gten"
	FilterOperatorLowerThan               FilterOperator = "lt"
	FilterOperatorLowerThanOrEqual        FilterOperator = "lte"
	FilterOperatorLowerThanOrEqualOrNil   FilterOperator = "lten"
	FilterOperatorBegins                  FilterOperator = "begins"
	FilterOperatorContains                FilterOperator = "contains"
	FilterOperatorNotContains             FilterOperator = "not-contains"
	FilterOperatorEnds                    FilterOperator = "ends"
	FilterOperatorIsNil                   FilterOperator = "nil"
	FilterOperatorIsNotNil                FilterOperator = "not-null"
	FilterOperatorIsEmpty                 FilterOperator = "empty"
	FilterOperatorIsNotEmpty              FilterOperator = "not-empty"
	FilterOperatorIn                      FilterOperator = "in"
	FilterOperatorNotIn                   FilterOperator = "not-in"

	ValidationErrorEmpty           = "empty value"
	ValidationErrorInvalidOperator = "invalid operator"
)

Variables

View Source
var ErrorCodes = map[ErrorCode]string{
	Unknown:                   "unknown error",
	UnreadableInputData:       "unreadable input data",
	InvalidInputDataStructure: "invalid input data structure",
	InvalidFiltersStructure:   "invalid filters structure",
	NonWriteableOutputData:    "can't write output data",
}

Functions

func NewInputOutputType

func NewInputOutputType[T any, IOT InputOutputInterface[T]](data T, i IOT) (IOT, error)

Types

type Error

type Error struct {
	Err     error
	Code    ErrorCode
	Payload interface{}
}

func NewError

func NewError(code ErrorCode, payload interface{}) *Error

type ErrorCode

type ErrorCode int
const (
	Unknown ErrorCode = iota
	UnreadableInputData
	InvalidInputDataStructure
	InvalidFiltersStructure
	NonWriteableOutputData
)

type FilterCondition

type FilterCondition struct {
	Field    string
	Operator FilterOperator
	Value    interface{}
}

func (*FilterCondition) IsNegative

func (c *FilterCondition) IsNegative() bool

func (*FilterCondition) UnmarshalJSON added in v0.4.0

func (c *FilterCondition) UnmarshalJSON(data []byte) error

type FilterConditions

type FilterConditions struct {
	Conditions []FilterCondition
	Filters    []Filters
}

func (*FilterConditions) IsEmpty added in v0.3.0

func (fc *FilterConditions) IsEmpty() bool

func (*FilterConditions) UnmarshalJSON

func (fc *FilterConditions) UnmarshalJSON(data []byte) error

type FilterLogic

type FilterLogic string

type FilterOperator

type FilterOperator string

type Filters

type Filters struct {
	Logic      FilterLogic
	Conditions FilterConditions
}

func (*Filters) IsEmpty

func (f *Filters) IsEmpty() bool

func (*Filters) Validate added in v0.3.0

func (f *Filters) Validate(validationFunc *ValidationFunc) []ValidationError

type InputOutputInterface

type InputOutputInterface[T any] interface {
	SetData(data T) error
	GetData() (T, error)
	GetDataString() (string, error)
	GetDataJson() ([]byte, error)
}

type InputOutputType

type InputOutputType[T any] struct {
	// contains filtered or unexported fields
}

func (*InputOutputType[T]) GetData

func (i *InputOutputType[T]) GetData() (T, error)

func (*InputOutputType[T]) SetData

func (i *InputOutputType[T]) SetData(data T) error

type InputTransformerInterface

type InputTransformerInterface[T any, IOT InputOutputInterface[T]] interface {
	Transform(input IOT) (Filters, *Error)
}

type OutputTransformerInterface

type OutputTransformerInterface[T any, IOT InputOutputInterface[T]] interface {
	Transform(input Filters) (IOT, *Error)
}

type ValidationError added in v0.3.0

type ValidationError struct {
	Path    string
	Error   string
	Field   string
	Payload any
}

type ValidationFunc added in v0.3.0

type ValidationFunc func(filterCondition FilterCondition, path string, validationErrors *[]ValidationError)

Jump to

Keyboard shortcuts

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