Documentation
¶
Index ¶
- Constants
- Variables
- func CreateFileFromTemplate(fileName string, template *template.Template, data interface{})
- func CreatePool(modules []*ModuleInfo, dir string)
- func ExtractFunctionName(node *ast.CallExpr) (string, error)
- func GetModelsASTData(modules []*ModuleInfo) map[string]ModelASTData
- func GetModelsASTDataForModules(modInfos []*ModuleInfo, validate bool) map[string]ModelASTData
- type FieldASTData
- type MethodASTData
- type ModelASTData
- type ModuleInfo
- type PackageType
- type ParamData
- type TypeData
Constants ¶
const ( // HexyaPath is the go import path of the base hexya package HexyaPath = "github.com/hexya-erp/hexya" // ModelsPath is the go import path of the hexya/models package ModelsPath = HexyaPath + "/src/models" // DatesPath is the go import path of the hexya/models/types/dates package DatesPath = HexyaPath + "/src/models/types/dates" // PoolPath is the go import path of the autogenerated pool package PoolPath = "github.com/hexya-erp/pool" // PoolModelPackage is the name of the pool package with model data PoolModelPackage = "h" // PoolQueryPackage is the name of the pool package with query dat PoolQueryPackage = "q" // PoolInterfacesPackage is the name of the pool packages with all model interfaces PoolInterfacesPackage = "m" )
Variables ¶
Functions ¶
func CreateFileFromTemplate ¶
CreateFileFromTemplate generates a new file from the given template and data
func CreatePool ¶
func CreatePool(modules []*ModuleInfo, dir string)
CreatePool generates the pool package by parsing the source code AST of the given program. The generated package will be put in the given dir.
func ExtractFunctionName ¶
ExtractFunctionName returns the name of the called function in the given call expression.
func GetModelsASTData ¶
func GetModelsASTData(modules []*ModuleInfo) map[string]ModelASTData
GetModelsASTData returns the ModelASTData of all models found when parsing program.
func GetModelsASTDataForModules ¶
func GetModelsASTDataForModules(modInfos []*ModuleInfo, validate bool) map[string]ModelASTData
GetModelsASTDataForModules returns the MethodASTData for all methods in given modules. If validate is true, then only models that have been explicitly declared will appear in the result. Mixins and embeddings will be inflated too. Use this if you want validate the whole application.
Types ¶
type FieldASTData ¶
type FieldASTData struct {
Name string
JSON string
Help string
Description string
Selection map[string]string
RelModel string
Type TypeData
FType fieldtype.Type
IsRS bool
MixinField bool
EmbedField bool
// contains filtered or unexported fields
}
A FieldASTData is a holder for a field's data that will be used for pool code generation
type MethodASTData ¶
type MethodASTData struct {
Name string
Doc string
PkgPath string
Params []ParamData
Returns []TypeData
ToDeclare bool
}
A MethodASTData is a holder for a method's data that will be used for pool code generation
type ModelASTData ¶
type ModelASTData struct {
Name string
ModelType string
IsModelMixin bool
Fields map[string]FieldASTData
Methods map[string]MethodASTData
Mixins map[string]bool
Embeds map[string]bool
Validated bool
}
A ModelASTData holds fields and methods data of a Model
type ModuleInfo ¶
type ModuleInfo struct {
packages.Package
ModType PackageType
FSet *token.FileSet
}
A ModuleInfo is a wrapper around packages.Package with additional data to describe a module.
func GetModulePackages ¶
func GetModulePackages(packs []*packages.Package) []*ModuleInfo
GetModulePackages returns a slice of PackageInfo for packages that are hexya modules, that is: - A package that declares a "MODULE_NAME" constant - A package that is in a subdirectory of a package Also returns the 'hexya/models' package since all models are initialized there
func NewModuleInfo ¶
func NewModuleInfo(pack *packages.Package, modType PackageType, fSet *token.FileSet) *ModuleInfo
NewModuleInfo returns a pointer to a new moduleInfo instance
type PackageType ¶
type PackageType int8
A PackageType describes a type of module
const ( // Base is the PackageType for the base package of a module Base PackageType = iota // Models is the PackageType for the hexya/models package Models )