generator

package
v0.1.15 Latest Latest
Warning

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

Go to latest
Published: Jul 5, 2024 License: MIT Imports: 13 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Assign added in v0.1.0

func Assign(to, from string, isNew bool) string

func ExecuteTemplate added in v0.0.10

func ExecuteTemplate(name string, data any) (string, error)

func NewCustomType added in v0.0.8

func NewCustomType(s string, baseSchema SchemaType) (CustomType, Imports)

func NewHandler

func NewHandler(o *Operation, basePathPrefix string, cfg Config) (zero *Handler, _ Imports, _ error)

func NewHandlerHeaderParameter added in v0.1.0

func NewHandlerHeaderParameter(p *HeaderParameter, cfg Config) (zero HandlerHeaderParameter, _ Imports, _ error)

func NewHandlerParameters added in v0.1.0

func NewHandlerParameters(p OperationParams, cfg Config) (zero HandlerParameters, _ Imports, _ error)

func NewHandlerPathParameter added in v0.1.0

func NewHandlerPathParameter(p *PathParameter) (zero HandlerPathParameter, _ Imports, _ error)

func NewHandlerQueryParameter added in v0.1.0

func NewHandlerQueryParameter(p *QueryParameter, cfg Config) (zero HandlerQueryParameter, _ Imports, _ error)

func NewHeaderParameter added in v0.0.2

func NewHeaderParameter(sr specification.Ref[specification.HeaderParameter]) (zero *HeaderParameter, _ Imports, _ error)

func NewOperation added in v0.0.2

func NewOperation(s *specification.Operation, components specification.Components) (zero *Operation, _ Imports, _ error)

func NewOperationParams added in v0.0.14

func NewOperationParams(params specification.OperationParameters) (zero OperationParams, _ Imports, _ error)

func NewQueryParameter added in v0.0.2

func NewQueryParameter(refP specification.Ref[specification.QueryParameter]) (zero *QueryParameter, _ Imports, _ error)

func NewResponse

func NewResponse(handlerName OperationName, status string, response *specification.Response) (*Response, Imports, error)

func NewResponseHeader added in v0.1.0

func NewResponseHeader(name string, ref specification.Ref[specification.Header]) (zero ResponseHeader, _ Imports, _ error)

func NewStructureField added in v0.0.11

func NewStructureField(s specification.SchemaProperty) (zero StructureField, _ Imports, _ error)

func NewStructureType added in v0.0.11

func NewStructureType(s *specification.Schema) (zero StructureType, _ Imports, _ error)

func PrefixTitle added in v0.0.2

func PrefixTitle(s specification.Prefix) string

func PrivateFieldName

func PrivateFieldName(name string) string

func PublicFieldName

func PublicFieldName(name string) string

func Title added in v0.0.2

func Title(s string) string

Types

type BoolType added in v0.0.10

type BoolType struct {
	SingleValue
}

func (BoolType) ParseString added in v0.1.0

func (b BoolType) ParseString(to string, from string, isNew bool, mkErr ErrorRender) (string, error)

func (BoolType) Render added in v0.0.11

func (b BoolType) Render() (string, error)

func (BoolType) RenderFormat added in v0.0.10

func (b BoolType) RenderFormat(from string) (string, error)

type Client added in v0.0.2

type Client struct {
	Imports []Import

	Operations []ClientOperation

	IsDecodeJSONFunc bool
}

func NewClient added in v0.0.2

func NewClient(s *specification.Spec, ops []*Operation) Client

func (Client) Render added in v0.1.0

func (c Client) Render() (string, error)

type ClientHeader added in v0.0.14

type ClientHeader struct {
	Name      string
	FieldName string
	Required  bool
	Type      Formatter
}

type ClientOperation added in v0.0.14

type ClientOperation struct {
	*Operation

	RequestVarName string
	IsRequestBody  bool

	Headers []ClientHeader
}

func NewClientOperation added in v0.0.14

func NewClientOperation(o *Operation) ClientOperation

func (ClientOperation) PathFormat added in v0.0.14

func (c ClientOperation) PathFormat() (Renders, error)

type Components

type Components struct {
	HasComponent bool

	Imports Imports

	Schemas          []SchemaComponent
	Headers          []HeaderComponent
	RequestBodies    []RequestBodyComponent
	QueryParameters  []QueryParameterComponent
	HeaderParameters []HeaderParameterComponent
	PathParameters   []PathParameterComponent
	Responses        []ResponseComponent

	HasContentJSON bool
}

func NewComponents

func NewComponents(spec specification.Components) (zero Components, _ error)

func (Components) Render added in v0.1.0

func (c Components) Render() (string, error)

type Config added in v0.1.7

type Config struct {
	Maybe struct {
		Import string `yaml:"import"`
		Type   string `yaml:"type"`
	} `yaml:"maybe"`

	Cors struct {
		Enable bool `yaml:"enable"`
	} `yaml:"cors"`
}

func LoadConfig added in v0.1.7

func LoadConfig(filepath string) (zero Config, _ error)

type CookieParameter added in v0.0.14

type CookieParameter struct {
	specification.CookieParameter
}

type CustomType added in v0.0.5

type CustomType struct {
	Multivalue
	Type   string
	Import string

	Base SchemaType
}

func (CustomType) ParseString added in v0.1.0

func (c CustomType) ParseString(to string, from string, isNew bool, mkErr ErrorRender) (string, error)

func (CustomType) Render added in v0.0.11

func (c CustomType) Render() (string, error)

func (CustomType) RenderFormat added in v0.0.11

func (c CustomType) RenderFormat(from string) (string, error)

type ErrorRender added in v0.0.10

type ErrorRender interface {
	Wrap(reason string, errVar string) string
	New(message string) string
}

type FileHandler added in v0.1.0

type FileHandler struct {
	Imports []Import

	Handlers []*Handler

	IsWriteJSONFunc bool
	IsCustomMaybe   bool
}

func NewFileHandler added in v0.1.0

func NewFileHandler(os []*Operation, basePathPrefix string, cfg Config) (zero FileHandler, _ error)

func (FileHandler) Render added in v0.1.0

func (f FileHandler) Render() (string, error)

type FloatType added in v0.0.10

type FloatType struct {
	SingleValue
	BitSize int
}

func (FloatType) ParseString added in v0.1.0

func (i FloatType) ParseString(to string, from string, isNew bool, mkErr ErrorRender) (string, error)

func (FloatType) Render added in v0.0.11

func (f FloatType) Render() (string, error)

func (FloatType) RenderFormat added in v0.0.10

func (i FloatType) RenderFormat(from string) (string, error)

type Formatter added in v0.0.10

type Formatter interface {
	RenderFormat(from string) (string, error)
}

Formatter formats 'string' from '<type>'.

type FormatterFunc added in v0.0.10

type FormatterFunc func(from string) (string, error)

func (FormatterFunc) RenderFormat added in v0.0.10

func (f FormatterFunc) RenderFormat(from string) (string, error)

type GenOption added in v0.0.2

type GenOption interface {
	// contains filtered or unexported methods
}

func BasePath added in v0.0.14

func BasePath(basePath string) GenOption

func IfOption added in v0.0.2

func IfOption(opt GenOption, ifCond ...bool) GenOption

func PackageName added in v0.0.2

func PackageName(packageName string) GenOption

func SkipDoNotEdit added in v0.0.2

func SkipDoNotEdit() GenOption

func SpecFilename added in v0.0.14

func SpecFilename(specFilename string) GenOption

type Generator added in v0.0.2

type Generator struct {
	Options GeneratorOptions

	Spec *specification.Spec

	Imports    Imports
	Operations []*Operation
	Paths      []*PathItem

	Client     Client
	Components Components

	Router      Router
	FileHandler FileHandler
}

func NewGenerator added in v0.0.2

func NewGenerator(spec *specification.Spec, cfg Config, opts ...GenOption) (*Generator, error)

func (*Generator) ClientFile added in v0.0.2

func (g *Generator) ClientFile() GoFile

func (*Generator) ComponentsFile added in v0.1.0

func (g *Generator) ComponentsFile() GoFile

func (*Generator) HandlerFile added in v0.1.0

func (g *Generator) HandlerFile() (GoFile, error)

func (*Generator) RouterFile added in v0.0.2

func (g *Generator) RouterFile() (GoFile, error)

func (*Generator) SpecFile added in v0.1.0

func (g *Generator) SpecFile(fileContent []byte) GoFile

type GeneratorOptions added in v0.0.14

type GeneratorOptions struct {
	DoNotEdit    bool
	PackageName  string
	BasePath     string
	SpecFilename string
	IsCors       bool
}

type GoFile

type GoFile struct {
	SkipDoNotEdit bool
	PackageName   string
	Imports       Imports
	Body          Render
}

func (GoFile) Render added in v0.0.11

func (g GoFile) Render() (string, error)

type Handler

type Handler struct {
	*Operation

	HandlerFuncName string
	BasePathPrefix  string

	CanParseError bool

	Parameters  HandlerParameters
	PathParsers []Parser

	DefaultResponse *HandlerResponse
	Responses       []HandlerResponse
}

func (Handler) Render added in v0.1.0

func (h Handler) Render() (string, error)

type HandlerHeaderParameter added in v0.1.0

type HandlerHeaderParameter struct {
	HandlerParameter

	ParameterName string
	Required      bool
	Parser        Parser
}

type HandlerParameter added in v0.1.0

type HandlerParameter struct {
	FieldName    string
	FieldType    Render
	FieldComment string
}

func (HandlerParameter) Render added in v0.1.0

func (h HandlerParameter) Render() (string, error)

type HandlerParameters added in v0.1.0

type HandlerParameters struct {
	Query  []HandlerQueryParameter
	Path   []HandlerPathParameter
	Header []HandlerHeaderParameter
}

type HandlerPathParameter added in v0.1.0

type HandlerPathParameter struct {
	HandlerParameter

	ParameterName string
	Parser        Parser
}

type HandlerQueryParameter added in v0.1.0

type HandlerQueryParameter struct {
	HandlerParameter

	ParameterName string
	Required      bool
	Parser        Parser
}

func (HandlerQueryParameter) ParseStrings added in v0.1.0

func (p HandlerQueryParameter) ParseStrings(to, from string, isNew bool, mkErr ErrorRender) (string, error)

type HandlerResponse added in v0.1.0

type HandlerResponse struct {
	*Response

	Name string
	// PrivateName string
	HandlerName OperationName

	Status    string
	IsDefault bool

	UsedIn []ResponseUsedIn

	IsBody       bool
	BodyTypeName Render
	Body         Render
	BodyRenders  Renders
	ContentType  string

	Struct StructureType

	Args []ResponseArg
}

func NewHandlerResponse added in v0.1.0

func NewHandlerResponse(r *Response, name OperationName, status string, ifaceNames ...ResponseUsedIn) HandlerResponse

func (HandlerResponse) Render added in v0.1.0

func (h HandlerResponse) Render() (string, error)

type HeaderComponent added in v0.1.2

type HeaderComponent struct {
	Name        string
	Description string
	Type        Render
}

func (HeaderComponent) Render added in v0.1.2

func (s HeaderComponent) Render() (string, error)

type HeaderParameter added in v0.0.2

type HeaderParameter struct {
	Name          string
	FieldName     string
	FieldTypeName string
	Type          SchemaType
	Required      bool
	// contains filtered or unexported fields
}

type HeaderParameterComponent added in v0.1.2

type HeaderParameterComponent struct {
	Name        string
	Description string
	Type        SchemaType
}

func (HeaderParameterComponent) Render added in v0.1.2

func (c HeaderParameterComponent) Render() (string, error)

type Import added in v0.0.14

type Import string

type Imports added in v0.0.14

type Imports []Import

func NewImportsS added in v0.0.14

func NewImportsS(ss ...string) Imports

func (Imports) AppendS added in v0.0.14

func (i Imports) AppendS(s string) Imports

type IntType added in v0.0.2

type IntType struct {
	SingleValue
	BitSize int
}

func (IntType) ParseString added in v0.1.0

func (i IntType) ParseString(to string, from string, isNew bool, mkErr ErrorRender) (string, error)

func (IntType) Render added in v0.0.11

func (i IntType) Render() (string, error)

func (IntType) RenderFormat added in v0.0.10

func (i IntType) RenderFormat(from string) (string, error)

type MapType added in v0.1.0

type MapType struct {
	SingleValue
	Key   SchemaType
	Value SchemaType
}

func NewMapType added in v0.1.0

func NewMapType(k, v SchemaType) MapType

func (MapType) ParseString added in v0.1.0

func (m MapType) ParseString(to string, from string, isNew bool, mkErr ErrorRender) (string, error)

func (MapType) Render added in v0.1.0

func (m MapType) Render() (string, error)

func (MapType) RenderFormat added in v0.1.0

func (m MapType) RenderFormat(from string) (string, error)

type Maybe added in v0.1.5

type Maybe[T any] struct {
	IsSet bool
	Value T
}

func Just added in v0.1.5

func Just[T any](v T) Maybe[T]

type Multivalue added in v0.1.4

type Multivalue struct{}

func (Multivalue) IsMultivalue added in v0.1.4

func (Multivalue) IsMultivalue() bool

type Operation added in v0.0.2

type Operation struct {
	*specification.Operation

	Name        OperationName
	Description string
	Summary     string

	PathBuilder []OperationPathElement

	APIHandlerFieldName string
	HandlerTypeName     string

	RequestTypeName  string
	ResponseTypeName string

	Params OperationParams

	Body struct {
		TypeName Render
	}

	DefaultResponse *ResponseCode
	Responses       []*ResponseCode
}

type OperationName added in v0.0.2

type OperationName string

func NewOperationName added in v0.0.14

func NewOperationName(s *specification.Operation) OperationName

type OperationParams added in v0.0.14

type OperationPathElement added in v0.1.0

type OperationPathElement struct {
	Raw   string
	Param Maybe[*PathParameter]
}

type OptionalType added in v0.1.5

type OptionalType struct {
	V         SchemaType
	MaybeType string
}

func NewOptionalType added in v0.1.5

func NewOptionalType(v SchemaType, typename string) OptionalType

func (OptionalType) IsMultivalue added in v0.1.5

func (p OptionalType) IsMultivalue() bool

func (OptionalType) ParseString added in v0.1.5

func (p OptionalType) ParseString(to string, from string, _ bool, mkErr ErrorRender) (string, error)

func (OptionalType) Render added in v0.1.5

func (p OptionalType) Render() (string, error)

func (OptionalType) RenderFormat added in v0.1.5

func (p OptionalType) RenderFormat(from string) (string, error)

type Parser added in v0.0.10

type Parser interface {
	ParseString(to, from string, isNew bool, mkErr ErrorRender) (string, error)
	IsMultivalue() bool
}

Parser parses 'string' to '<type>'.

type ParserFunc added in v0.0.10

type ParserFunc func(to, from string, isNew bool, mkErr ErrorRender) (string, error)

func (ParserFunc) ParseString added in v0.1.0

func (p ParserFunc) ParseString(to, from string, isNew bool, mkErr ErrorRender) (string, error)

type PathItem

type PathItem struct {
	*specification.PathItem
	Operations []*Operation
}

type PathParameter

type PathParameter struct {
	Name          string
	FieldName     string
	FieldTypeName string
	Type          SchemaType
	// contains filtered or unexported fields
}

type PathParameterComponent added in v0.1.2

type PathParameterComponent struct {
	Name        string
	Description string
	Type        SchemaType
}

func (PathParameterComponent) Render added in v0.1.2

func (c PathParameterComponent) Render() (string, error)

type PathParameters added in v0.0.2

type PathParameters []*PathParameter

func (PathParameters) Get added in v0.0.2

func (s PathParameters) Get(name string) (zero *PathParameter, _ error)

type PathParserConstant added in v0.1.0

type PathParserConstant struct {
	SingleValue
	Prefix   string
	FullPath string
}

func (PathParserConstant) ParseString added in v0.1.0

func (p PathParserConstant) ParseString(_, _ string, _ bool, _ ErrorRender) (string, error)

type PathParserVariable added in v0.1.0

type PathParserVariable struct {
	SingleValue
	FieldName string
	Name      string
	Convert   Parser
}

func (PathParserVariable) ParseString added in v0.1.0

func (p PathParserVariable) ParseString(to, from string, isNew bool, mkErr ErrorRender) (string, error)

type QueryParameter added in v0.0.2

type QueryParameter struct {
	Name      string
	FieldName string
	Required  bool
	Type      SchemaType
	// contains filtered or unexported fields
}

func (QueryParameter) ExecuteFormat added in v0.0.2

func (p QueryParameter) ExecuteFormat(to, from string) (string, error)

type QueryParameterComponent added in v0.1.2

type QueryParameterComponent struct {
	Name            string
	Description     string
	Type            SchemaType
	IsStringsParser bool
	IsArray         bool
}

func (QueryParameterComponent) Render added in v0.1.2

func (c QueryParameterComponent) Render() (string, error)

type QuotedRender added in v0.0.14

type QuotedRender string

func (QuotedRender) Render added in v0.0.14

func (s QuotedRender) Render() (string, error)

type Ref

type Ref[T any] struct {
	// Multivalue
	Ref        string
	SchemaType specification.Ref[T]
}

func NewRef

func NewRef[T any](ref *specification.Object[string, specification.Ref[T]]) Ref[T]

func (Ref[T]) IsMultivalue added in v0.1.4

func (r Ref[T]) IsMultivalue() bool

func (Ref[T]) ParseQuery added in v0.1.2

func (r Ref[T]) ParseQuery(to string, from string, isNew bool, mkErr ErrorRender) (string, error)

func (Ref[T]) ParseSchema added in v0.1.4

func (r Ref[T]) ParseSchema(to string, from string, isNew bool, mkErr ErrorRender) (string, error)

func (Ref[T]) ParseString added in v0.1.0

func (r Ref[T]) ParseString(to string, from string, isNew bool, mkErr ErrorRender) (string, error)

func (Ref[T]) Render added in v0.0.11

func (r Ref[T]) Render() (string, error)

func (Ref[T]) RenderFormat added in v0.1.0

func (r Ref[T]) RenderFormat(from string) (string, error)

type Render

type Render interface {
	Render() (string, error)
}

type RenderFunc added in v0.0.10

type RenderFunc func() (string, error)

func (RenderFunc) Render added in v0.0.10

func (r RenderFunc) Render() (string, error)

type Renders added in v0.0.14

type Renders []Render

func (Renders) Render added in v0.0.14

func (r Renders) Render() (string, error)

type RequestBodyComponent added in v0.1.2

type RequestBodyComponent struct {
	Name        string
	Description string
	Type        Render
}

func (RequestBodyComponent) Render added in v0.1.2

func (s RequestBodyComponent) Render() (string, error)

type Response

type Response struct {
	*specification.Response

	Name string

	Headers []ResponseHeader

	// Content specification.Map[specification.Ref[SchemaType]]
	ContentJSON Maybe[Schema]
}

type ResponseArg

type ResponseArg struct {
	FieldName string
	ArgName   string
	IsHeader  bool
	Type      Render
}

type ResponseCode added in v0.1.8

type ResponseCode struct {
	*Response
	StatusCode   string
	ComponentRef *specification.Object[string, specification.Ref[specification.Response]]
}

type ResponseComponent added in v0.1.8

type ResponseComponent struct {
	Name        string
	Description string
	Alias       string
	IsComponent bool

	HandlerResponse
}

func (ResponseComponent) Render added in v0.1.8

func (c ResponseComponent) Render() (string, error)

type ResponseHeader

type ResponseHeader struct {
	Spec *specification.Header

	FieldName    string
	Key          string
	Required     bool
	Schema       SchemaType
	Formatter    Formatter
	IsMultivalue bool
}

type ResponseUsedIn added in v0.1.8

type ResponseUsedIn struct {
	OperationName OperationName
	Status        string
}

type Route

type Route struct {
	Name     string
	BasePath string
	Prefix   string

	PrefixPathItems []*RoutePathItem
	Variable        *RoutePathItem

	Routes []*Route

	VariableRoute *Route
	// contains filtered or unexported fields
}

func (*Route) Add added in v0.0.14

func (r *Route) Add(pi *RouterPathItem)

func (*Route) GetRoutes added in v0.0.14

func (r *Route) GetRoutes() []*Route

type RoutePathItem added in v0.0.14

type RoutePathItem struct {
	*RouterPathItem
	Prefix string
}

type Router

type Router struct {
	BasePath     string
	SpecFilename string
	SpecFileExt  string

	Imports    Imports
	PathItems  []*RouterPathItem
	Operations []*Operation
	Routes     []*Route

	JWT  bool
	Cors bool
}

func NewRouter

func NewRouter(s *specification.Spec, ps []*PathItem, os []*Operation, opt GeneratorOptions) Router

func (Router) Render added in v0.1.0

func (r Router) Render() (string, error)

type RouterPathItem added in v0.0.14

type RouterPathItem struct {
	RawPath string

	Operations []RouterPathItemOperation

	JWT        bool
	HasOptions bool
}

type RouterPathItemOperation added in v0.1.14

type RouterPathItemOperation struct {
	Name     OperationName
	Method   specification.HTTPMethodTitle
	PathSpec string
	Handler  string
}

type Schema added in v0.0.2

type Schema struct {
	Spec specification.Ref[specification.Schema]
	Type SchemaType
}

type SchemaComponent added in v0.0.11

type SchemaComponent struct {
	Name              string
	Description       string
	Type              SchemaType
	IgnoreParseFormat bool
	IsMultivalue      bool
	IsAlias           bool

	CustomJSONMarshaler bool
	StructureType       StructureType
}

func (SchemaComponent) Render added in v0.1.0

func (s SchemaComponent) Render() (string, error)

type SchemaType added in v0.1.0

type SchemaType interface {
	Render
	Parser
	Formatter
}

type SingleValue added in v0.1.4

type SingleValue struct{}

func (SingleValue) IsMultivalue added in v0.1.4

func (SingleValue) IsMultivalue() bool

type SliceType added in v0.0.2

type SliceType struct {
	Multivalue
	Items SchemaType
}

func (SliceType) ParseString added in v0.1.0

func (s SliceType) ParseString(to string, from string, isNew bool, mkErr ErrorRender) (string, error)

func (SliceType) ParseStrings added in v0.1.0

func (s SliceType) ParseStrings(to string, from string, isNew bool, mkErr ErrorRender) (string, error)

func (SliceType) Render added in v0.0.11

func (s SliceType) Render() (string, error)

func (SliceType) RenderFormat added in v0.0.11

func (s SliceType) RenderFormat(from string) (string, error)

type StringRender added in v0.0.10

type StringRender string

func (StringRender) Render added in v0.0.10

func (s StringRender) Render() (string, error)

type StringType

type StringType struct {
	SingleValue
}

func (StringType) ParseString added in v0.1.0

func (_ StringType) ParseString(to, from string, isNew bool, mkErr ErrorRender) (string, error)

func (StringType) Render added in v0.0.11

func (s StringType) Render() (string, error)

func (StringType) RenderFormat added in v0.0.11

func (_ StringType) RenderFormat(from string) (string, error)

type StructureField added in v0.0.11

type StructureField struct {
	Comment string
	Name    string
	Type    Render
	Tags    []StructureFieldTag
	JSONTag string
}

func (StructureField) GetTag added in v0.1.0

func (sf StructureField) GetTag(k string) (zero StructureFieldTag, _ bool)

func (StructureField) Render added in v0.1.0

func (s StructureField) Render() (string, error)

type StructureFieldTag added in v0.0.11

type StructureFieldTag struct {
	Key    string
	Values []string
}

type StructureType added in v0.0.11

type StructureType struct {
	SingleValue
	Fields []StructureField

	AdditionalProperties Maybe[SchemaType]
}

func (StructureType) ParseString added in v0.1.0

func (s StructureType) ParseString(to string, from string, isNew bool, mkErr ErrorRender) (string, error)

func (StructureType) Render added in v0.0.11

func (s StructureType) Render() (string, error)

func (StructureType) RenderFormat added in v0.1.0

func (s StructureType) RenderFormat(from string) (string, error)

type TData added in v0.0.2

type TData map[string]any

Jump to

Keyboard shortcuts

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