template

package
v0.0.0-...-9e23852 Latest Latest
Warning

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

Go to latest
Published: Nov 15, 2023 License: MIT Imports: 9 Imported by: 0

Documentation

Index

Constants

View Source
const GetEnvHelper = "getEnvHelper"

GetEnvHelper global identifier for getEnv helper function.

Variables

This section is empty.

Functions

func AddGetEnvHelper

func AddGetEnvHelper(f *File)

AddGetEnvHelper creates heper function to get environment variable.

func AddIfErrorGuard

func AddIfErrorGuard(scope *Group, statement *Statement, errId string, code Code)

AddIfErrorGuard adds to scope error check.

func AssignResultsToErr

func AssignResultsToErr(err *Statement, respId string, fields parser.ResultFields) (statement *Statement)

AssignResultsToErr assign response error to err statement.

func ClientMethod

func ClientMethod(fn parser.Function, info *PackageInfo, body ClientMethodBody, f *File)

ClientMethod creates client method for given function.

func ClientReceiverType

func ClientReceiverType(receiver parser.Field, constructor OptionalConstructor, info *PackageInfo) (
	typeDecl, constructorDecl Code)

ClientReceiverType creates constructor and client-side receiver type. Type contains only fields from constructor arguments. Contructor match original one by signature but only initializes recevier fieds. Example: type Foo{...}; NewFoo(x int) -> type Foo { x int }; NewFoo(x int)

func CreateArgsList

func CreateArgsList(
	args []parser.Field,
	transform func(*Statement, parser.Field) *Statement,
	params ...string,
) func(*Group)

CreateArgsList creates list from parser.Field array. Transform function is used to modify each element list. Optional param 1 is used to specify prefix for each element. Optional param 2 is used to specify allowed argument types (format: type1,type2,).

func CreateArgsListFunc

func CreateArgsListFunc(args []parser.Field, params ...string) func(*Group)

CreateArgsListFunc creates list from Fields (see CreateArgListFunc).

func CreateCombinedHandlerArgs

func CreateCombinedHandlerArgs(fn parser.Function, info *PackageInfo) (fields []types.Field)

func CreateReqRespTypes

func CreateReqRespTypes(info *PackageInfo, f *File)

CreateReqRespTypes creates request response types for each method.

func CreateSignatureFromArgs

func CreateSignatureFromArgs(args []parser.Field, info *PackageInfo, params ...string) func(*Group)

CreateSignatureFromArgs creates signature from Fields (see CreateArgListFunc).

func CreateTypeAliases

func CreateTypeAliases(info *PackageInfo, f *File)

CreateTypeAliases creates aliases to types that found in functions signatures.

func DefaultRpcHandler

func DefaultRpcHandler(info *PackageInfo, f *File, fn parser.Function)

func ForEachFunction

func ForEachFunction(info *PackageInfo, skipInit bool, cb func(parser.Function))

ForEachFunction executes callback for each function in package expecept special Stop function that shoudn't be externaly exposed.

func GetMethodTypes

func GetMethodTypes(fn parser.Function) (handler, request, response string)

TODO move to PackageInfo

func GetReceiverVarName

func GetReceiverVarName(receiverTypeName string) string

func GetResourceName

func GetResourceName(info *PackageInfo) string

func GetRpcHandlerArgsList

func GetRpcHandlerArgsList(request, response string) *Statement

GetRpcHandlerArgsList creates args list for rpc handler wrapper.

func GracefulShutdown

func GracefulShutdown(info *PackageInfo, g *Group, f *File)

GracefulShutdown calls Stop methods on receivers before program termination.

func HasReceiver

func HasReceiver(fn parser.Function) bool

func HasTopLevelReceiver

func HasTopLevelReceiver(fn parser.Function, info *PackageInfo) bool

HasTopLevelReceiver returns false if function has other receiver as argumenet.

func ID

func ID(name ...string) string

func MakeForEachReceiver

func MakeForEachReceiver(
	info *PackageInfo, cb ForEachRecCb,
) (receiversProcessed map[string]parser.Field)

TODO save receivers during PackageInfo initialization MakeForEachReceiver executes callback for each receiver.

func MakeHandlerWrapper

func MakeHandlerWrapper(
	f *File, handlerBody func(g *Group, resource string), info *PackageInfo, fn parser.Function,
	args, returns *Statement,
)

HandlerWrapper creates method wrapper to inject dependencies (top level receiver).

func MakeInitService

func MakeInitService(info *PackageInfo, main *Group)

func MakeOriginalCall

func MakeOriginalCall(
	info *PackageInfo, fn parser.Function, g *Group,
	deps DepsMap, errGuard IfErrorGuard,
	resourceInstance string,
)

MakeOriginalCall creates dependencies and make original method call (response object must be created)

func MakeReceiversForHandlers

func MakeReceiversForHandlers(info *PackageInfo, g *Group) (receiversCreated map[string]parser.Field)

MakeReceiversForHandlers cerates instances for each top level receiver.

func MakeStartRPCServer

func MakeStartRPCServer(info *PackageInfo, cb StartRPCServerCb, main *Group, f *File)

MakeStartRPCServer creates server initialization method.

func MakeStartServerInit

func MakeStartServerInit(info *PackageInfo, g *Group)

MakeStartServerInit creates port and address initialization (from env or random).

func ReqRecName

func ReqRecName(fn parser.Function) string

func TemplateClient

func TemplateClient(info *PackageInfo, f *File, body ClientMethodBody)

TemplateServer creates template module for RPC client.

func TemplateRpcServer

func TemplateRpcServer(info *PackageInfo, f *File, config TemplateServerConfig)

TemplateRpcServer creates template module for RPC server.

func TrimPrefix

func TrimPrefix(str string) string

func TypeDeclFormFields

func TypeDeclFormFields(name string, args []types.Field, info *PackageInfo) Code

TODO replace to to Struct type TypeDeclFormFields creates type declaration from []types.Field

Types

type ClientMethodBody

type ClientMethodBody = func(ids ClientMethodIds, g *Group)

ClientMethodBody is used to insert specific code to client method template.

type ClientMethodIds

type ClientMethodIds struct {
	Request  string //Request variable identifier
	Response string //Response valiable identifier
	Method   string //RPC Method string
	Resource string //RPC Resource string
	Err      string //Error variable identifer
}

ClientMethodIds contains identifiers that available in client method template.

type Constructor

type Constructor struct {
	Function parser.Function
	Receiver parser.Field
}

func NewTypeConstructor

func NewTypeConstructor(fn parser.Function, rec parser.Field) (constructor *Constructor)

type DepsMap

type DepsMap = map[string]*Statement

type Field

type Field struct {
	// contains filtered or unexported fields
}

func NewField

func NewField(name, typeName string) Field

func (Field) Name

func (field Field) Name() string

func (Field) TypeName

func (field Field) TypeName() string

func (Field) TypeParts

func (field Field) TypeParts() (prefix, path, local string)

type ForEachRecCb

type ForEachRecCb = func(receiver parser.Field, constructor OptionalConstructor)

type IfErrorGuard

type IfErrorGuard = func(scope *Group, statement *Statement)

type Module

type Module = modutils.Module

func NewMainModule

func NewMainModule(p *parser.Parser, deps []Module) Module

type OptionalConstructor

type OptionalConstructor = func(func(Constructor), ...func())

func NewOptionalConstructor

func NewOptionalConstructor(constructors ...Constructor) OptionalConstructor

type Package

type Package = modutils.Package

func GetMainPackage

func GetMainPackage(packagePath string, modules []string) *Package

type PackageInfo

type PackageInfo struct {
	Functions     []parser.Function
	Constructors  map[string]Constructor
	PackageName   string
	IsInitService bool
	IsStopService bool
	Service       *types.Service

	ModulePath string
	// contains filtered or unexported fields
}

func NewPackageInfoFromParser

func NewPackageInfoFromParser(p *parser.Parser) *PackageInfo

func (PackageInfo) GetConstructor

func (info PackageInfo) GetConstructor(field types.Field) (constructor Constructor, ok bool)

func (PackageInfo) GetFunction

func (info PackageInfo) GetFunction(receiver types.Field, functionName string) (function parser.Function, ok bool)

check if receiver receiver have function with specified name

func (PackageInfo) GetServicePath

func (info PackageInfo) GetServicePath() string

func (PackageInfo) IsReceiverType

func (info PackageInfo) IsReceiverType(field types.Field) bool

TODO check receiver taht does not have constructors

func (*PackageInfo) SetServicePath

func (info *PackageInfo) SetServicePath(path string)

type StartRPCServerCb

type StartRPCServerCb = func(g *Group, resource, instance string)

StartRPCServerCb is used to insert specific code to server init template.

type TemplateServerConfig

type TemplateServerConfig struct {
	GenResourceScope StartRPCServerCb
	GenHandler       func(info *PackageInfo, f *File, fn parser.Function)
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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