package rest

import (
	"git.ali33.ru/fcg-xvii/go-tools/json"
)

type IErrorArgs interface {
	Name() string
	Args() json.Map
	Error() string
	Map() json.Map
}

//////////////////////////////////

func ErrorFiled(field, message string) IErrorArgs {
	return &Error{
		name: "ErrField",
		args: json.Map{
			"field":   field,
			"message": message,
		},
	}
}

func NewError(name string, args json.Map) IErrorArgs {
	return &Error{
		name: name,
		args: args,
	}
}

func ErrorMessage(name, text string) IErrorArgs {
	return &Error{
		name: name,
		args: json.Map{
			"message": text,
		},
	}
}

//////////////////////////////////////////////

type Error struct {
	name string
	args json.Map
}

func (s *Error) Name() string {
	return s.name
}

func (s *Error) Args() json.Map {
	return s.args
}

func (s *Error) Error() string {
	m := json.Map{
		"name": s.name,
		"args": s.args,
	}
	return m.JSONString()
}

func (s *Error) Map() json.Map {
	return json.Map{
		"error": true,
		"name":  s.name,
		"args":  s.args,
	}
}