controllers

package
v1.0.0-rc.2 Latest Latest
Warning

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

Go to latest
Published: Jul 8, 2026 License: MIT Imports: 22 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ActionInjector added in v1.0.0

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

ActionInjector handles injecting action code into existing controller and route files.

func NewActionInjector added in v1.0.0

func NewActionInjector() *ActionInjector

NewActionInjector creates a new ActionInjector.

func (*ActionInjector) InjectControllerMethod added in v1.0.0

func (ai *ActionInjector) InjectControllerMethod(controllerPath string, data ActionMethodData) error

InjectControllerMethod appends a method stub to the end of the controller file. It checks for duplicate methods before injecting.

func (*ActionInjector) InjectRouteRegistration added in v1.0.0

func (ai *ActionInjector) InjectRouteRegistration(controllerPath string, data ActionRegistrationData) error

InjectRouteRegistration inserts a route registration block before the final error return in the controller RegisterRoutes method. If the return statement is not found, it prints manual instructions.

func (*ActionInjector) InjectRouteVariable added in v1.0.0

func (ai *ActionInjector) InjectRouteVariable(routesPath string, data ActionRouteData) error

InjectRouteVariable appends a route variable declaration to the end of the routes file. It checks for duplicate route variables before injecting.

type ActionMethodData added in v1.0.0

type ActionMethodData struct {
	ReceiverName       string
	PluralResourceName string
	MethodName         string
}

ActionMethodData holds data for rendering the action_method.tmpl template.

type ActionRegistrationData added in v1.0.0

type ActionRegistrationData struct {
	ResourceName    string
	Namespace       string
	NamespacePascal string
	MethodName      string
	HTTPMethod      string
	HandlerVar      string
}

ActionRegistrationData holds data for rendering the action_registration.tmpl template.

type ActionRouteData added in v1.0.0

type ActionRouteData struct {
	ResourceName    string
	Namespace       string
	NamespacePascal string
	MethodName      string
	ConstructorName string
	ParamsStruct    string // non-empty for RouteWithSlugs: the generated params struct definition
	Path            string
	PluralName      string
	LowerMethodName string
}

ActionRouteData holds data for rendering the action_route.tmpl template.

type Config

type Config struct {
	ResourceName             string
	ModelName                string
	PluralName               string
	ModelPluralName          string
	TableName                string
	ModelTableName           string
	Namespace                string
	PackageName              string
	ModulePath               string
	ControllerType           ControllerType
	TableNameOverridden      bool
	ModelTableNameOverridden bool
	PrimaryKeyColumn         string // Override PK column name (empty = auto-detect)
	Actions                  []string
	IsAPI                    bool // Controller is JSON API
}

type ControllerType

type ControllerType int
const (
	ResourceController ControllerType = iota
	NormalController
)

type FileGenerator

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

func NewFileGenerator

func NewFileGenerator() *FileGenerator

func (*FileGenerator) GenerateController

func (fg *FileGenerator) GenerateController(
	cat *catalog.Catalog,
	resourceName string,
	namespace string,
	tableName string,
	controllerType ControllerType,
	modulePath string,
	databaseType string,
	tableNameOverridden bool,
	nullType string,
	primaryKeyColumn string,
	inertia string,
) error

func (*FileGenerator) GenerateControllerWithActionsForModel added in v1.0.0

func (fg *FileGenerator) GenerateControllerWithActionsForModel(
	cat *catalog.Catalog,
	resourceName string,
	namespace string,
	modelName string,
	tableName string,
	modelTableName string,
	controllerType ControllerType,
	modulePath string,
	databaseType string,
	tableNameOverridden bool,
	modelTableNameOverridden bool,
	nullType string,
	primaryKeyColumn string,
	inertia string,
	actions []string,
	isAPI bool,
) error

type GeneratedController

type GeneratedController struct {
	ResourceName            string
	ModelName               string
	PluralName              string
	ModelPluralName         string
	PluralResourceName      string // The pluralized form of ResourceName (respects --table-name override)
	ModelPluralResourceName string
	ReceiverName            string // Short receiver name for methods (e.g., "sf" for StudentFeedback)
	Namespace               string // "admin" (empty if no namespace)
	NamespacePascal         string // "Admin" (PascalCase for prefixing)
	Package                 string
	Fields                  []GeneratedField
	ModulePath              string
	Type                    ControllerType
	DatabaseType            string
	TableNameOverridden     bool
	IDType                  string // "uuid.UUID", "int32", "int64", "string"
	IsAutoIncrementID       bool   // True for serial/bigserial
	IDGoFieldName           string // Go struct field name of PK (e.g., "ID", "UserID")
	HasPrimaryKey           bool   // Whether the table has any primary key
	Actions                 []string
	IsAPI                   bool // Generate JSON API controller under controllers/api
}

type GeneratedField

type GeneratedField struct {
	Name          string
	GoType        string
	GoFormType    string
	DBName        string
	CamelCase     string
	IsSystemField bool
	IsPointer     bool
}

type Generator

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

func NewGenerator

func NewGenerator(databaseType string) *Generator

func (*Generator) Build

func (g *Generator) Build(cat *catalog.Catalog, config Config) (*GeneratedController, error)

func (*Generator) SetNullType added in v1.0.0

func (g *Generator) SetNullType(nullType string)

type MainInjector added in v1.0.0

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

func NewMainInjector added in v1.0.0

func NewMainInjector() *MainInjector

func (*MainInjector) InjectController added in v1.0.0

func (mi *MainInjector) InjectController(resourceName, namespace, pluralName string) error

InjectController adds a generated resource controller to controllers.Module. Returns nil if the file or expected module shape is not found, after printing instructions for a manual update.

type RouteGenerator

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

func NewRouteGenerator

func NewRouteGenerator() *RouteGenerator

func (*RouteGenerator) GenerateRoutes

func (rg *RouteGenerator) GenerateRoutes(resourceName, namespace, pluralName, idType string, actions []string) error

type RouteType added in v1.0.0

type RouteType int

RouteType represents the type of route constructor to use

const (
	SimpleRoute RouteType = iota
	RouteWithID
	RouteWithSlug
	RouteWithToken
	RouteWithFile
	RouteWithSlugs
)

func DetectRouteType added in v1.0.0

func DetectRouteType(path string) RouteType

DetectRouteType analyzes a path string and returns the appropriate RouteType. It inspects path segments for :param patterns and maps them to routing constructors.

func (RouteType) ConstructorName added in v1.0.0

func (rt RouteType) ConstructorName(idType, paramsTypeName string) string

ConstructorName returns the routing package constructor function name for this RouteType. For RouteWithID, the idType parameter selects the appropriate type-specific constructor. For RouteWithSlugs, paramsTypeName is the generated params struct name used as the type parameter.

type TemplateRenderer

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

func NewTemplateRenderer

func NewTemplateRenderer() *TemplateRenderer

func (*TemplateRenderer) RenderControllerFile

func (tr *TemplateRenderer) RenderControllerFile(controller *GeneratedController, inertia string) (string, error)

Jump to

Keyboard shortcuts

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