Documentation
¶
Overview ¶
Package depgraph builds a Zero's dependeny injection type graph.
Index ¶
- type API
- type Config
- type CronJob
- type Graph
- func (g *Graph) FunctionRef(fn *types.Func) Ref
- func (g *Graph) GenerateOpenAPISpec(title, version string) *spec.Swagger
- func (g *Graph) GetProviders(typeStr string) []*Provider
- func (g *Graph) Graph() map[string][]string
- func (g *Graph) ImportAlias(pkg string) string
- func (g *Graph) TypeRef(t types.Type) Ref
- type Middleware
- type Option
- type Provider
- type Ref
- type Subscription
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type API ¶
type API struct { // Position is the position of the function declaration. Position token.Position // Pattern is the parsed HTTP mux pattern Pattern *directiveparser.DirectiveAPI // Function is the function that handles the API Function *types.Func // Documentation is the extracted function comments Documentation string // Package is the package that contains the function Package *packages.Package // OpenAPI is the OpenAPI operation spec for this endpoint OpenAPI *spec.Operation }
API represents a method that is an exposed API endpoint. API endpoints are annotated like so:
//zero:api [<method>] [<host>]/[<path>] [<option>[=<value>] ...]
func (*API) GenerateOpenAPIOperation ¶ added in v0.14.0
func (a *API) GenerateOpenAPIOperation(definitions spec.Definitions) *spec.Operation
GenerateOpenAPIOperation creates an OpenAPI operation spec for this API endpoint
type Config ¶ added in v0.5.0
type Config struct { // Position of the type declaration. Position token.Position Type types.Type Directive *directiveparser.DirectiveConfig // IsGeneric indicates if this config is a generic type IsGeneric bool // TypeParams holds the type parameters for generic configs TypeParams *types.TypeParamList }
Config represents command-line/file configuration. Config structs are annotated like so:
//zero:config [prefix="<prefix>"]
type CronJob ¶ added in v0.12.0
type CronJob struct { // Position is the position of the function declaration. Position token.Position // Schedule is the parsed cron schedule directive Schedule *directiveparser.DirectiveCron // Function is the function that handles the cron job Function *types.Func // Package is the package that contains the function Package *packages.Package }
CronJob represents a cron job method in the graph.
//zero:cron <schedule>
type Graph ¶
type Graph struct { Dest *types.Package Providers map[string][]*Provider // All providers including multi and generic Configs map[string]*Config GenericConfigs map[string][]*Config // Generic configs by base type name APIs []*API CronJobs []*CronJob Subscriptions []*Subscription Middleware []*Middleware Missing map[*types.Func][]types.Type }
func Analyse ¶
Analyse statically loads Go packages, then analyses them for //zero:... annotations in order to build the Zero's dependency injection graph.
func (*Graph) FunctionRef ¶ added in v0.1.0
FunctionRef returns a reference to a function, including import information if needed.
func (*Graph) GenerateOpenAPISpec ¶ added in v0.14.0
GenerateOpenAPISpec creates a complete OpenAPI specification from all API endpoints
func (*Graph) GetProviders ¶ added in v0.7.0
GetProviders returns all providers for a given type (both single and multi).
func (*Graph) Graph ¶
Graph returns the dependency graph as a map where keys are type strings and values are slices of their dependency type strings.
func (*Graph) ImportAlias ¶
ImportAlias returns an alias for the given package path, or "" if the package is the destination package.
type Middleware ¶ added in v0.1.0
type Middleware struct { // Position is the position of the function declaration. Position token.Position // Directive is the parsed middleware directive Directive *directiveparser.DirectiveMiddleware // Function is the function that implements the middleware Function *types.Func // Package is the package that contains the function Package *packages.Package // Requires are the dependencies required by this middleware Requires []types.Type // Factory represents whether the middleware is a factory, or direct middleware function Factory bool }
Middleware represents a function that is an HTTP middleware. Middleware functions are annotated like so:
//zero:middleware [<label>]
func (*Middleware) Match ¶ added in v0.1.0
func (m *Middleware) Match(api *API) bool
type Option ¶
type Option func(*graphOptions) error
func WithOptions ¶ added in v0.0.2
func WithPatterns ¶
WithPatterns adds additional package patterns to search for annotations.
func WithProviders ¶
WithProviders selects a provider for a type if multiple are available.
type Provider ¶
type Provider struct { // Position is the position of the function declaration. Position token.Position Directive *directiveparser.DirectiveProvider // Function is the function that provides the type. Function *types.Func // Package is the package that contains the function. Package *packages.Package Provides types.Type Requires []types.Type // IsGeneric indicates if this provider is a generic function IsGeneric bool // TypeParams holds the type parameters for generic providers TypeParams *types.TypeParamList }
A Provider represents a constructor for a type.
type Ref ¶ added in v0.1.0
type Ref struct { Pkg string // database/sql Import string // "database/sql" or impe1d11ad6baa4124f "database/sql" Ref string // *sql.DB or *impe1d11ad6baa4124f.DB }
Ref represents a reference to a symbol.
type Subscription ¶ added in v0.21.0
type Subscription struct { // Position is the position of the function declaration. Position token.Position // Function is the function that handles the subscription Function *types.Func // Package is the package that contains the function Package *packages.Package // TopicType is the event type extracted from pubsub.Event[T] TopicType types.Type }