generator

package
v0.0.8 Latest Latest
Warning

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

Go to latest
Published: Apr 4, 2019 License: MIT Imports: 15 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

DefaultControlTypeFunc is the injected function that determines the default control type for a particular type of database column. It gets initialized here, so that if you want to replace it, you can first call the default function

View Source
var DefaultWrapper = "page.Label"

DefaultWrapper defines what wrapper will be used for generated controls. It should correspond to the string the wrapper was registered with.

View Source
var GenerateControlIDs = true

GenerateControlIDs will determine if the code generator will assign ids to the controls based on table and column names

View Source
var OneTimeTemplates []OneTimeTemplateI
View Source
var TableTemplates []TableTemplateI

Will be populated by the individual templates found

View Source
var TypeTableTemplates []TypeTableTemplateI

Functions

func AddOneTimeTemplate

func AddOneTimeTemplate(t OneTimeTemplateI)

func AddTableTemplate

func AddTableTemplate(t TableTemplateI)

func AddTypeTableTemplate

func AddTypeTableTemplate(t TypeTableTemplateI)

func AsConstant

func AsConstant(i interface{}, typ query.GoColumnType) string

Returns the value formatted as a constant. Essentially this just surrounds strings in quotes.

func Generate

func Generate()

func RegisterControlGenerator

func RegisterControlGenerator(c ControlGenerator)

Types

type Codegen

type Codegen struct {
	Tables     map[string]map[string]TableType // TODO: Change to ordered maps for consistent codegeneration
	TypeTables map[string]map[string]TypeTableType
}

type ColumnType

type ColumnType struct {
	*db.ColumnDescription
	// Related control information
	ControlDescription
}

ColumnType combines a database ColumnDescription with a ControlDescription

type ConnectorParam

type ConnectorParam struct {
	Name        string
	Description string
	Typ         ControlType
	Template    string
	DoFunc      func(c page.ControlI, val interface{})
}

type ControlCreationInfo

type ControlCreationInfo struct {
	Typ        string
	CreateFunc string
	ImportName string
}

func DefaultControlType

func DefaultControlType(col *db.ColumnDescription) ControlCreationInfo

type ControlDescription

type ControlDescription struct {
	Import         *ImportType
	ControlType    string
	NewControlFunc string
	ControlName    string
	ControlID      string // default id to generate
	DefaultLabel   string
	Generator      ControlGenerator
}

ControlDescription is matched with a ColumnDescription below and provides additional information regarding how information in a column can be used to generated a default control to edit that information.

type ControlGenerator

type ControlGenerator interface {
	Type() string
	NewFunc() string
	Imports() []string
	SupportsColumn(col *ColumnType) bool
	ConnectorParams() *maps.SliceMap
	GenerateCreate(namespace string, col *ColumnType) string
	GenerateGet(ctrlName string, objName string, col *ColumnType) string
	GeneratePut(ctrlName string, objName string, col *ColumnType) string
}

func GetControlGenerator

func GetControlGenerator(imp string, typ string) ControlGenerator

type ControlGeneratorRegistryKey

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

type ControlType

type ControlType int
const (
	ControlTypeInteger ControlType = iota + 1
	ControlTypeString
)

type ImportType

type ImportType struct {
	Path      string
	Namespace string
	Alias     string // blank if not needing an alias
	Primary   bool
}

ImportType represents an import path required for a control. This is analyzed per-table.

type OneTimeTemplateI

type OneTimeTemplateI interface {
	GenerateOnce(codegen Codegen, dd *db.DatabaseDescription, buf *bytes.Buffer)
	FileName(key string) string
	Overwrite() bool
}

type TableTemplateI

type TableTemplateI interface {
	GenerateTable(codegen Codegen, dd *db.DatabaseDescription, t TableType, buf *bytes.Buffer)
	FileName(key string, t TableType) string
	Overwrite() bool
}

type TableType

type TableType struct {
	*db.TableDescription
	Columns []ColumnType
	Imports []*ImportType
}

func (*TableType) GetColumnByDbName

func (t *TableType) GetColumnByDbName(name string) *ColumnType

type Template

type Template struct {
	Overwrite bool
	TargetDir string
}

type TypeTableTemplateI

type TypeTableTemplateI interface {
	GenerateTypeTable(codegen Codegen, dd *db.DatabaseDescription, t TypeTableType, buf *bytes.Buffer)
	FileName(key string, t TypeTableType) string
	Overwrite() bool
}

type TypeTableType

type TypeTableType struct {
	*db.TypeTableDescription
}

Jump to

Keyboard shortcuts

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