codegen

package
v0.0.0-...-62343dc Latest Latest
Warning

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

Go to latest
Published: May 8, 2022 License: MIT Imports: 10 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrNotAStruct           = errors.New("given objects underlying type is not a struct")
	ErrUnsupportedFieldType = errors.New("given field type is not supported")
)

Functions

func Deduplicate

func Deduplicate(s []string) []string

func GenerateAwsServiceCode

func GenerateAwsServiceCode(template *AwsTemplate) error

func PopulateChildStructs

func PopulateChildStructs(structModel *StructModel, children []*ChildConfig, servicePackages []*packages.Package)

func SnakeToHyphen

func SnakeToHyphen(str string) string

func ToSnakeCase

func ToSnakeCase(str string) string

Types

type AwsReferencedResourceTemplate

type AwsReferencedResourceTemplate struct {
	ServiceName       string
	ReferencedStructs []*StructModel
	RequiredImports   []string
}

func (*AwsReferencedResourceTemplate) DetermineRequiredImports

func (t *AwsReferencedResourceTemplate) DetermineRequiredImports()

func (*AwsReferencedResourceTemplate) GetAwsReferencedResourceFileCode

func (t *AwsReferencedResourceTemplate) GetAwsReferencedResourceFileCode() string

type AwsResourceConfig

type AwsResourceConfig struct {
	Label               string              `hcl:"name,label"`
	FetchFunction       string              `hcl:"fetch_function,attr"`           // the API function used to fetch the resource
	ObjectSourceName    string              `hcl:"object_source_name,attr"`       // the name of the object in the API
	ObjectSingularName  string              `hcl:"object_singular_name,optional"` // the singular name of the object
	ObjectPluralName    string              `hcl:"object_plural_name"`            // the plural name of the object
	ObjectUniqueId      string              `hcl:"object_unique_id,attr"`         // the name of a field in the object that uniquely identifies it
	ObjectResponseField string              `hcl:"object_response_field,attr"`    // the name of the object in the API response
	ModelOnly           bool                `hcl:"model_only,attr"`               // whether or not to only generate data models, not fetching code
	Pagination          bool                `hcl:"pagination,attr"`               // whether or not the API supports pagination
	UsePostProcessing   bool                `hcl:"use_post_processing,attr"`      // whether or not to use post processing
	ConvertTags         bool                `hcl:"convert_tags,attr"`             // whether or not to convert tags to map[string]string
	TagFieldName        string              `hcl:"tag_field_name,optional"`       // the name of the field that contains the tags
	DisplayFields       []string            `hcl:"display_fields,optional"`       // the fields to display when listing resources
	ExcludedFields      []string            `hcl:"excluded_fields,optional"`
	ExtraFields         []*ExtraFieldConfig `hcl:"extra_field,block"`
	Children            []*ChildConfig      `hcl:"child,block"`
}

func (AwsResourceConfig) ObjectPluralSnakeName

func (c AwsResourceConfig) ObjectPluralSnakeName() string

func (AwsResourceConfig) ObjectSingularSnakeName

func (c AwsResourceConfig) ObjectSingularSnakeName() string

func (AwsResourceConfig) ObjectUniqueIdSnakeCase

func (c AwsResourceConfig) ObjectUniqueIdSnakeCase() string

type AwsResourceTemplate

type AwsResourceTemplate struct {
	ServiceName       string
	ServiceCapName    string
	ResourceStruct    *StructModel
	ResourceConfig    *AwsResourceConfig
	RequiredImports   []string
	SdkClientName     string
	ShouldConvertTags bool
	TagListFieldName  string
}

func (*AwsResourceTemplate) DetermineRequiredImports

func (t *AwsResourceTemplate) DetermineRequiredImports()

func (*AwsResourceTemplate) GetAwsApiRouteCode

func (t *AwsResourceTemplate) GetAwsApiRouteCode() string

func (*AwsResourceTemplate) GetAwsFetchingFileCode

func (t *AwsResourceTemplate) GetAwsFetchingFileCode() string

func (*AwsResourceTemplate) GetResourceFileCode

func (t *AwsResourceTemplate) GetResourceFileCode() string

type AwsServiceConfig

type AwsServiceConfig struct {
	Name                   string               `hcl:"name,label"`
	ServiceCapName         string               `hcl:"service_cap_name,attr"`
	SdkPath                string               `hcl:"sdk_path,attr"`
	Resources              []*AwsResourceConfig `hcl:"resource,block"`
	ExtraUtilizedFunctions []string             `hcl:"extra_utilized_functions,optional"`
	RegionOverride         string               `hcl:"region_override,optional"`
	TagObjectName          string               `hcl:"tag_object_name,optional"` // the name of the object in the SDK which represents a tag
}

func (*AwsServiceConfig) HasRegionOverride

func (c *AwsServiceConfig) HasRegionOverride() bool

type AwsServiceTemplate

type AwsServiceTemplate struct {
	ServiceName       string
	TagObjectName     string
	SdkPath           string
	SdkClientName     string
	UtilizedFunctions []string
	ServiceConfig     *AwsServiceConfig
}

func (*AwsServiceTemplate) GetAwsHelpersFileCode

func (t *AwsServiceTemplate) GetAwsHelpersFileCode() string

func (*AwsServiceTemplate) GetAwsServiceClientInterfaceFileCode

func (t *AwsServiceTemplate) GetAwsServiceClientInterfaceFileCode() string

func (*AwsServiceTemplate) GetAwsServiceInventoryFileCode

func (t *AwsServiceTemplate) GetAwsServiceInventoryFileCode() string

func (*AwsServiceTemplate) GetServiceMetadataRouteFileCode

func (t *AwsServiceTemplate) GetServiceMetadataRouteFileCode() string

type AwsTemplate

type AwsTemplate struct {
	Services []*AwsServiceConfig `hcl:"aws_service,block"`
}

func (*AwsTemplate) GetAwsCatalogFileCode

func (t *AwsTemplate) GetAwsCatalogFileCode() string

func (*AwsTemplate) GetAwsClientFileCode

func (t *AwsTemplate) GetAwsClientFileCode() string

func (*AwsTemplate) GetAwsRouterFileCode

func (t *AwsTemplate) GetAwsRouterFileCode() string

func (*AwsTemplate) GetClientInterfaceFileCode

func (t *AwsTemplate) GetClientInterfaceFileCode() string

func (*AwsTemplate) GetDAOFileCode

func (t *AwsTemplate) GetDAOFileCode() string

func (*AwsTemplate) GetDynamoDBDAOFileCode

func (t *AwsTemplate) GetDynamoDBDAOFileCode() string

func (*AwsTemplate) GetImplementedResourcesCode

func (t *AwsTemplate) GetImplementedResourcesCode() string

func (*AwsTemplate) GetMongoDAOFileCode

func (t *AwsTemplate) GetMongoDAOFileCode() string

func (*AwsTemplate) GetMultiDAOFileCode

func (t *AwsTemplate) GetMultiDAOFileCode() string

func (*AwsTemplate) GetS3IonDAOFileCode

func (t *AwsTemplate) GetS3IonDAOFileCode() string

func (*AwsTemplate) GetS3ParquetDAOFileCode

func (t *AwsTemplate) GetS3ParquetDAOFileCode() string

type ChildConfig

type ChildConfig struct {
	ObjectSourceName string              `hcl:"object_source_name"`
	NewFieldName     string              `hcl:"new_field_name"`
	FieldType        string              `hcl:"field_type"`
	ExcludedFields   []string            `hcl:"excluded_fields,optional"`
	ExtraFields      []*ExtraFieldConfig `hcl:"extra_field,block"`
	Children         []*ChildConfig      `hcl:"child,block"`
}

type ExtraFieldConfig

type ExtraFieldConfig struct {
	Name string `hcl:"name"`
	Type string `hcl:"type"`
}

type FieldModel

type FieldModel struct {
	Name              string
	Type              string
	Tags              string
	IsTimeField       bool
	ReferencedStructs []*StructModel // Parsed structs referenced by this field, could be multiple if it's a map
}

FieldModel represents a parsed source-code of a struct field

func ParseStructField

func ParseStructField(field *types.Var, excludedFields []string) (*FieldModel, error)

ParseStructField parses a single struct field

type StructModel

type StructModel struct {
	Name   string
	Fields []*FieldModel
}

StructModel represents a parsed source-code of a struct and all its fields

func DeduplicateStructs

func DeduplicateStructs(structs []*StructModel) []*StructModel

func ParseStruct

func ParseStruct(object *types.Named, excludedFields []string, nameOverride *string) (*StructModel, error)

ParseStruct parses a struct and all its fields

func (*StructModel) ConvertTagFields

func (p *StructModel) ConvertTagFields()

func (*StructModel) GetReferencedStructs

func (p *StructModel) GetReferencedStructs() []*StructModel

func (*StructModel) GetRequiredImports

func (p *StructModel) GetRequiredImports() []string

func (*StructModel) MarshalToSourceCode

func (p *StructModel) MarshalToSourceCode() string

func (*StructModel) PopulateFieldTags

func (p *StructModel) PopulateFieldTags(primaryObjectField string)

Jump to

Keyboard shortcuts

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