Documentation
¶
Overview ¶
Package est provides the Encore Syntax Tree (EST).
It is an Encore-specific syntax tree that represents the higher-level representation of the application that Encore understands.
Index ¶
- type AccessType
- type Application
- type AuthHandler
- type CacheCluster
- type CacheKeyspace
- type Config
- type CronJob
- type File
- type Middleware
- type Node
- type NodeType
- type Package
- type Param
- type PubSubGuarantee
- type PubSubPublisher
- type PubSubSubscriber
- type PubSubTopic
- type RPC
- type Resource
- type ResourceType
- type SQLDB
- type SelectorLookup
- type Service
- type ServiceStruct
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AccessType ¶
type AccessType string
const ( Public AccessType = "public" Private AccessType = "private" // Auth is like public but requires authentication. Auth AccessType = "auth" )
type Application ¶
type Application struct {
ModulePath string
Packages []*Package
Services []*Service
CronJobs []*CronJob
PubSubTopics []*PubSubTopic
CacheClusters []*CacheCluster
Decls []*schema.Decl
AuthHandler *AuthHandler
Middleware []*Middleware
}
func (*Application) MatchingMiddleware ¶ added in v1.5.0
func (a *Application) MatchingMiddleware(rpc *RPC) []*Middleware
MatchingMiddleware reports which middleware applies to the given RPC, and the order they apply in.
func (*Application) SelectorLookup ¶ added in v1.9.3
func (a *Application) SelectorLookup() *SelectorLookup
SelectorLookup creates a selector lookup from this application
type AuthHandler ¶
type AuthHandler struct {
Svc *Service
Name string
Doc string
Func *ast.FuncDecl
File *File
Params *schema.Type // builtin string or named type
SvcStruct *ServiceStruct // nil if not defined on a service struct
// AuthData is the custom auth data type the app may specify
// as part of the returns from the auth handler.
// It is nil if no such auth data type is specified.
AuthData *Param
}
type CacheCluster ¶ added in v1.7.0
type CacheCluster struct {
Name string // The unique name of the cache cluster
Doc string // The documentation on the cluster
DeclFile *File // What file the cache is declared in
IdentAST *ast.Ident // The AST node representing the value this cache cluster is bound against
EvictionPolicy string
Keyspaces []*CacheKeyspace
}
func (*CacheCluster) AllowOnlyParsedUsage ¶ added in v1.7.0
func (p *CacheCluster) AllowOnlyParsedUsage() bool
func (*CacheCluster) File ¶ added in v1.7.0
func (p *CacheCluster) File() *File
func (*CacheCluster) Ident ¶ added in v1.7.0
func (p *CacheCluster) Ident() *ast.Ident
func (*CacheCluster) NodeType ¶ added in v1.7.0
func (p *CacheCluster) NodeType() NodeType
func (*CacheCluster) Type ¶ added in v1.7.0
func (p *CacheCluster) Type() ResourceType
type CacheKeyspace ¶ added in v1.7.0
type CacheKeyspace struct {
Cluster *CacheCluster
Svc *Service
Doc string // The documentation on the cluster
DeclFile *File // What file the cache is declared in
IdentAST *ast.Ident // The AST node representing the value this cache cluster is bound against
ConfigLit *ast.CompositeLit
KeyType *schema.Type // The key type for this keyspace
ValueType *schema.Type // The value type for this keyspace
Path *paths.Path // The keyspace path
}
func (*CacheKeyspace) AllowOnlyParsedUsage ¶ added in v1.7.0
func (p *CacheKeyspace) AllowOnlyParsedUsage() bool
func (*CacheKeyspace) File ¶ added in v1.7.0
func (p *CacheKeyspace) File() *File
func (*CacheKeyspace) Ident ¶ added in v1.7.0
func (p *CacheKeyspace) Ident() *ast.Ident
func (*CacheKeyspace) NodeType ¶ added in v1.7.0
func (p *CacheKeyspace) NodeType() NodeType
func (*CacheKeyspace) Type ¶ added in v1.7.0
func (p *CacheKeyspace) Type() ResourceType
type Config ¶ added in v1.8.0
type Config struct {
Svc *Service // The service the config is loaded for
DeclFile *File // The file that the subscriber is defined in
IdentAST *ast.Ident // The AST node representing the value this topic is bound against
FuncCall *ast.CallExpr // The AST node representing the call to the config load function (we use this for rewriting)
ConfigStruct *Param // The type the config loads in as
}
Config represents a config load statement.
func (*Config) AllowOnlyParsedUsage ¶ added in v1.8.0
func (*Config) Type ¶ added in v1.8.0
func (c *Config) Type() ResourceType
type CronJob ¶ added in v0.19.0
type CronJob struct {
ID string
Title string
Doc string
Schedule string
RPC *RPC
DeclFile *File
AST *ast.Ident
}
func (*CronJob) AllowOnlyParsedUsage ¶ added in v1.3.0
func (*CronJob) Type ¶ added in v1.3.0
func (cj *CronJob) Type() ResourceType
type Middleware ¶ added in v1.5.0
type Param ¶
func (*Param) GetWithPointer ¶ added in v1.9.3
GetWithPointer ensures that if the parameter is marked as a pointer you get the pointer schema.type back
type PubSubGuarantee ¶ added in v1.3.0
type PubSubGuarantee int
const ( AtLeastOnce PubSubGuarantee = iota ExactlyOnce )
type PubSubPublisher ¶ added in v1.3.0
type PubSubPublisher struct {
DeclFile *File // The file the publisher is declared in
// One of
Service *Service // The service the publisher is declared in
GlobalMiddleware *Middleware // The name of the middleware target
}
type PubSubSubscriber ¶ added in v1.3.0
type PubSubSubscriber struct {
Name string // The unique name of the subscriber
NameAST ast.Node // The AST node that defines the name of the subscriber
Topic *PubSubTopic // The topic the subscriber is registered against
CallSite ast.Node // The AST node representing the creation of the subscriber
Func ast.Node // The function that is the subscriber (either a *ast.FuncLit or a *ast.FuncDecl)
FuncFile *File // The file the subscriber function is declared in
DeclFile *File // The file that the subscriber is defined in
IdentAST *ast.Ident // The AST node representing the value this topic is bound against
AckDeadline time.Duration
MessageRetention time.Duration
MinRetryBackoff time.Duration
MaxRetryBackoff time.Duration
MaxRetries int64 // number of attempts
}
func (*PubSubSubscriber) AllowOnlyParsedUsage ¶ added in v1.3.0
func (p *PubSubSubscriber) AllowOnlyParsedUsage() bool
func (*PubSubSubscriber) File ¶ added in v1.3.0
func (p *PubSubSubscriber) File() *File
func (*PubSubSubscriber) Ident ¶ added in v1.3.0
func (p *PubSubSubscriber) Ident() *ast.Ident
func (*PubSubSubscriber) NodeType ¶ added in v1.3.0
func (p *PubSubSubscriber) NodeType() NodeType
func (*PubSubSubscriber) Type ¶ added in v1.3.0
func (p *PubSubSubscriber) Type() ResourceType
type PubSubTopic ¶ added in v1.3.0
type PubSubTopic struct {
Name string // The unique name of the pub sub topic
NameAST ast.Node // The AST node that defines the name of the pub sub topic
Doc string // The documentation on the pub sub topic
DeliveryGuarantee PubSubGuarantee // What guarantees does the pub sub topic have?
OrderingKey string // What field in the message type should be used to ensure First-In-First-Out (FIFO) for messages with the same key
DeclFile *File // What file the topic is declared in
MessageType *Param // The message type of the pub sub topic
IdentAST *ast.Ident // The AST node representing the value this topic is bound against
Subscribers []*PubSubSubscriber
Publishers []*PubSubPublisher
}
func (*PubSubTopic) AllowOnlyParsedUsage ¶ added in v1.3.0
func (p *PubSubTopic) AllowOnlyParsedUsage() bool
func (*PubSubTopic) File ¶ added in v1.3.0
func (p *PubSubTopic) File() *File
func (*PubSubTopic) Ident ¶ added in v1.3.0
func (p *PubSubTopic) Ident() *ast.Ident
func (*PubSubTopic) NodeType ¶ added in v1.3.0
func (p *PubSubTopic) NodeType() NodeType
func (*PubSubTopic) Type ¶ added in v1.3.0
func (p *PubSubTopic) Type() ResourceType
type RPC ¶
type RPC struct {
Svc *Service
Name string
Doc string
Func *ast.FuncDecl
File *File
Access AccessType
Raw bool
Path *paths.Path
HTTPMethods []string
Request *Param // request data; nil for Raw RPCs
Response *Param // response data; nil for Raw RPCs
Tags selector.Set
// SvcStruct is the service struct this RPC is defined on,
// or nil otherwise. It is always a pointer receiver.
SvcStruct *ServiceStruct
}
type ResourceType ¶ added in v0.17.2
type ResourceType int
const ( SQLDBResource ResourceType = iota + 1 CronJobResource PubSubTopicResource PubSubSubscriptionResource CacheClusterResource CacheKeyspaceResource ConfigResource )
func (ResourceType) String ¶ added in v0.17.2
func (i ResourceType) String() string
type SQLDB ¶ added in v0.17.2
type SQLDB struct {
DeclFile *File
DeclName *ast.Ident // where the resource is declared
DBName string
}
func (*SQLDB) AllowOnlyParsedUsage ¶ added in v1.3.0
func (*SQLDB) Type ¶ added in v0.17.2
func (r *SQLDB) Type() ResourceType
type SelectorLookup ¶ added in v1.9.3
type SelectorLookup struct {
// contains filtered or unexported fields
}
SelectorLookup is a helper cache for looking up services and RPC's by selector
func (*SelectorLookup) GetRPCs ¶ added in v1.9.3
func (sm *SelectorLookup) GetRPCs(targets selector.Set) (rtn []*RPC)
GetRPCs returns all the rpcs which match any of the given selectors
func (*SelectorLookup) GetServices ¶ added in v1.9.3
func (sm *SelectorLookup) GetServices(targets selector.Set) (rtn []*Service)
GetServices returns all services which match any of the given selectors
type Service ¶
type Service struct {
Name string
Root *Package
Pkgs []*Package
RPCs []*RPC
Middleware []*Middleware
ConfigLoads []*Config
// Struct is the dependency injection struct, or nil if none exists.
Struct *ServiceStruct
}
A Service is a Go package that defines one or more RPCs. Its name is defined by the Go package name. A Service may not be a located in a child directory of another service.
type ServiceStruct ¶ added in v1.5.0
type ServiceStruct struct {
Name string
Svc *Service
File *File // where the struct is defined
Doc string
Decl *ast.TypeSpec
RPCs []*RPC // RPCs defined on the service struct
// Init is the function for initializing this group.
// It is nil if there is no initialization function.
Init *ast.FuncDecl
InitFile *File // where the init func is declared
}
ServiceStruct describes a dependency injection struct a particular service defines.