cmd

package
v1.17.1 Latest Latest
Warning

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

Go to latest
Published: Jan 12, 2026 License: MIT Imports: 17 Imported by: 0

Documentation

Overview

Package cmd provides the command-line interface for the Goca CLI tool.

This package contains all the CLI commands and their implementations for generating Go Clean Architecture projects. It uses the Cobra library for command-line parsing and organization.

Available Commands

The cmd package provides these main commands:

- init: Initialize a new Clean Architecture project - feature: Generate complete feature with all layers - entity: Generate domain entities with validation - usecase: Generate use cases and business logic - repository: Generate data access layer - handler: Generate interface adapters - di: Generate dependency injection container - interfaces: Generate interfaces for TDD - messages: Generate error messages and responses - version: Show version information

Each command is implemented in its own file and provides specific functionality for code generation following Clean Architecture principles.

Index

Constants

View Source
const (
	DatabaseFlag       = "database"
	FieldsFlag         = "fields"
	InterfaceOnlyFlag  = "interface-only"
	ImplementationFlag = "implementation"
	CacheFlag          = "cache"
	TransactionsFlag   = "transactions"
	HTTPFlag           = "http"
	GRPCFlag           = "grpc"
	GraphQLFlag        = "graphql"
)

Flag names - Nombres de flags

View Source
const (
	DatabaseFlagUsage       = "Database type (postgres, postgres-json, mysql, mongodb, sqlite, sqlserver, elasticsearch, dynamodb)"
	FieldsFlagUsage         = "Comma-separated list of fields (ex: name:string,age:int)"
	InterfaceOnlyFlagUsage  = "Generate interfaces only"
	ImplementationFlagUsage = "Generate implementation only"
	CacheFlagUsage          = "Include cache layer"
	TransactionsFlagUsage   = "Include transaction support"
	HTTPFlagUsage           = "Include HTTP handlers"
	GRPCFlagUsage           = "Include gRPC handlers"
	GraphQLFlagUsage        = "Include GraphQL handlers"
)

Flag usage messages - Flag usage messages

View Source
const (
	DBPostgres      = "postgres"
	DBPostgresJSON  = "postgres-json"
	DBMySQL         = "mysql"
	DBMongoDB       = "mongodb"
	DBSQLite        = "sqlite"
	DBSQLServer     = "sqlserver"
	DBElasticsearch = "elasticsearch"
	DBDynamoDB      = "dynamodb"
)

Database constants

View Source
const (
	HandlerHTTP   = "http"
	HandlerGRPC   = "grpc"
	HandlerCLI    = "cli"
	HandlerWorker = "worker"
)

Handler/Protocol constants

View Source
const (
	OpCreate = "create"
	OpRead   = "read"
	OpUpdate = "update"
	OpDelete = "delete"
	OpList   = "list"
)

Operation constants

View Source
const (
	DefaultOperations = "create,read,update,delete,list"
	BasicOperations   = "create,read"
	CRUDOperations    = "create,read,update,delete"
)

Default operation combinations

View Source
const (
	APITypeRest    = "rest"
	APITypeGraphQL = "graphql"
	APITypeGRPC    = "grpc"
)

API Types constants

View Source
const (
	FieldString    = "string"
	FieldInt       = "int"
	FieldInt8      = "int8"
	FieldInt16     = "int16"
	FieldInt32     = "int32"
	FieldInt64     = "int64"
	FieldUint      = "uint"
	FieldUint8     = "uint8"
	FieldUint16    = "uint16"
	FieldUint32    = "uint32"
	FieldUint64    = "uint64"
	FieldUintptr   = "uintptr"
	FieldByte      = "byte"
	FieldRune      = "rune"
	FieldFloat32   = "float32"
	FieldFloat64   = "float64"
	FieldBool      = "bool"
	FieldTime      = "time.Time"
	FieldBytes     = "[]byte"
	FieldInterface = "interface{}"
)

Field Types constants

View Source
const (
	TemplateEntity     = "entity"
	TemplateUseCase    = "usecase"
	TemplateRepository = "repository"
	TemplateHandler    = "handler"
	TemplateDI         = "di"
)

Template constants

View Source
const (
	ExtGo   = ".go"
	ExtYAML = ".yaml"
	ExtYML  = ".yml"
	ExtJSON = ".json"
	ExtSQL  = ".sql"
)

File extensions

View Source
const (
	DirInternal   = "internal"
	DirDomain     = "domain"
	DirUseCase    = "usecase"
	DirRepository = "repository"
	DirHandler    = "handler"
	DirHTTP       = "http"
	DirGRPC       = "grpc"
	DirCLI        = "cli"
	DirWorker     = "worker"
	DirSOAP       = "soap"
	DirMessages   = "messages"
	DirInterfaces = "interfaces"
	DirPkg        = "pkg"
	DirConfig     = "config"
	DirLogger     = "logger"
	DirAuth       = "auth"
	DirCmd        = "cmd"
	DirServer     = "server"
	DirMigrations = "migrations"
)

Directory names

View Source
const (
	MinFieldNameLength  = 1
	MaxFieldNameLength  = 50
	MinEntityNameLength = 1
	MaxEntityNameLength = 50
)

Validation constants

View Source
const (
	ErrInvalidDatabase    = "invalid database. Options: postgres, mysql, mongodb, sqlite"
	ErrInvalidHandler     = "invalid handler. Options: http, grpc, cli, worker"
	ErrInvalidOperation   = "invalid operation. Options: create, read, update, delete, list"
	ErrInvalidFieldType   = "invalid field type"
	ErrInvalidFieldSyntax = "invalid field syntax. Expected format: 'name:type'"
	ErrInvalidEntityName  = "invalid entity name"
	ErrEmptyFields        = "fields cannot be empty"
	ErrRequiredFlag       = "required flag not provided"
	ErrFileNotFound       = "file not found"
	ErrDirectoryNotFound  = "directory not found"
)

Error messages

View Source
const (
	MsgEntityGenerated     = "Entity '%s' generated successfully!"
	MsgFeatureGenerated    = "Feature '%s' generated and integrated successfully!"
	MsgRepositoryGenerated = "Repository for '%s' generated successfully!"
	MsgHandlerGenerated    = "Handler '%s' for '%s' generated successfully!"
	MsgUseCaseGenerated    = "Use case '%s' generated successfully!"
	MsgProjectInitialized  = "Project '%s' created successfully!"
)

Success messages

View Source
const (
	MsgGeneratingEntity     = "Generating entity '%s'"
	MsgGeneratingFeature    = "Generating complete feature '%s'"
	MsgGeneratingRepository = "Generating repository for entity '%s'"
	MsgGeneratingHandler    = "Generating handler '%s' for entity '%s'"
	MsgGeneratingUseCase    = "Generating use case '%s' for entity '%s'"
	MsgGeneratingLayers     = "Generating layers..."
)

Info messages

View Source
const (
	StringProject   = "project"
	StringEmail     = "Email"
	StringCreatedAt = "CreatedAt"
	StringGet       = "get"
	FieldEmailType  = "Email"   // Email field type
	FieldProjectVal = "project" // Project field value
	OperationGet    = "get"     // Get operation type
)

Additional string constants for repeated values

Variables

View Source
var (
	// Version is injected at compile time through -ldflags
	// Default to "dev" for development builds (go install, go build without ldflags)
	Version = "dev"
	// BuildTime is injected at compile time through -ldflags
	BuildTime = "unknown"
	// GoVersion contains the Go runtime version
	GoVersion = runtime.Version()
	// GitCommit is injected at compile time through -ldflags
	GitCommit = "unknown"
)
View Source
var CommonQueryFields = []string{
	"id", "name", "email", "username", "code", "sku",
	"status", "type", "category", "title", "description",
}

Common field names that might be used for queries CommonQueryFields contains field names commonly used for database queries.

View Source
var EntityTemplateComponents = map[string]TemplateComponent{
	"header": {
		Name: "header",
		Template: `package domain

{{range .Imports}}import "{{.}}"
{{end}}

`,
		Required: true,
	},
	"struct": {
		Name: "struct",
		Template: `type {{.Entity.Name}} struct {
{{range .Fields}}	{{.Name}} {{.Type}} ` + "`" + `{{.JSONTag}} {{.GormTag}}` + "`" + `
{{end}}`,
		Required: true,
	},
	"timestamps": {
		Name: "timestamps",
		Template: `{{if .Features.Timestamps}}	CreatedAt time.Time ` + "`" + `json:"created_at" gorm:"autoCreateTime"` + "`" + `
	UpdatedAt time.Time ` + "`" + `json:"updated_at" gorm:"autoUpdateTime"` + "`" + `
{{end}}`,
		Required: false,
	},
	"softDelete": {
		Name: "softDelete",
		Template: `{{if .Features.SoftDelete}}	DeletedAt gorm.DeletedAt ` + "`" + `json:"deleted_at,omitempty" gorm:"index"` + "`" + `
{{end}}`,
		Required: false,
	},
	"structClose": {
		Name: "structClose",
		Template: `}

`,
		Required: true,
	},
	"validation": {
		Name: "validation",
		Template: `{{if .Features.Validation}}
func ({{.Entity.NameLower}} *{{.Entity.Name}}) Validate() error {
{{range .Validations}}	if {{.Field}} == "" {
		return errors.New("{{.Message}}")
	}
{{end}}	return nil
}
{{end}}

`,
		Required: false,
	},
	"methods": {
		Name: "methods",
		Template: `{{range .Methods}}
func ({{$.Entity.NameLower}} *{{$.Entity.Name}}) {{.Name}}({{range .Params}}{{.Name}} {{.Type}}, {{end}}) {{.ReturnType}} {
	{{.Body}}
}
{{end}}`,
		Required: false,
	},
}

EntityTemplateComponents contains all entity template components

View Source
var UseCaseTemplateComponents = map[string]TemplateComponent{
	"header": {
		Name: "header",
		Template: `package usecase

import (
	"{{.Module}}/internal/domain"
	"{{.Module}}/internal/repository"
)

`,
		Required: true,
	},
	"interface": {
		Name: "interface",
		Template: `type {{.Entity.Name}}UseCase interface {
	Create{{.Entity.Name}}(input Create{{.Entity.Name}}Input) (*Create{{.Entity.Name}}Output, error)
	Get{{.Entity.Name}}ByID(id int) (*{{.Entity.Name}}Output, error)
	Update{{.Entity.Name}}(id int, input Update{{.Entity.Name}}Input) error
	Delete{{.Entity.Name}}(id int) error
	List{{.Entity.Name}}s() (*List{{.Entity.Name}}sOutput, error)
}

`,
		Required: true,
	},
	"service": {
		Name: "service",
		Template: `type {{.Entity.NameLower}}Service struct {
	repo repository.{{.Entity.Name}}Repository
}

func New{{.Entity.Name}}Service(repo repository.{{.Entity.Name}}Repository) {{.Entity.Name}}UseCase {
	return &{{.Entity.NameLower}}Service{repo: repo}
}

`,
		Required: true,
	},
	"dtos": {
		Name: "dtos",
		Template: `type Create{{.Entity.Name}}Input struct {
{{range .Fields}}{{if ne .Name "ID"}}	{{.Name}} {{.Type}} ` + "`" + `json:"{{.JSONTag}}"{{if .ValidateTag}} validate:"{{.ValidateTag}}"{{end}}` + "`" + `
{{end}}{{end}}}

type Create{{.Entity.Name}}Output struct {
	{{.Entity.Name}} *domain.{{.Entity.Name}} ` + "`" + `json:"{{.Entity.NameLower}}"` + "`" + `
	Message string ` + "`" + `json:"message"` + "`" + `
}

type Update{{.Entity.Name}}Input struct {
{{range .Fields}}{{if ne .Name "ID"}}	{{.Name}} *{{.Type}} ` + "`" + `json:"{{.JSONTag}},omitempty"` + "`" + `
{{end}}{{end}}}

type {{.Entity.Name}}Output struct {
	{{.Entity.Name}} *domain.{{.Entity.Name}} ` + "`" + `json:"{{.Entity.NameLower}}"` + "`" + `
}

type List{{.Entity.Name}}sOutput struct {
	{{.Entity.NamePlural}} []domain.{{.Entity.Name}} ` + "`" + `json:"{{.Entity.NameLower}}s"` + "`" + `
	Total int ` + "`" + `json:"total"` + "`" + `
}
`,
		Required: true,
	},
}

UseCaseTemplateComponents contains all use case template components

ValidAPITypes contains the list of supported API types for the CLI.

ValidDatabases contains the list of supported database types for the CLI.

ValidFieldTypes contains the list of supported basic field types for entities. Note: Complex types like slices, pointers, maps, channels, functions, and custom types are validated dynamically by the field validator.

ValidHandlers contains the list of supported handler types for the CLI.

View Source
var ValidOperations = []string{OpCreate, OpRead, OpUpdate, OpDelete, OpList}

ValidOperations contains the list of supported CRUD operations

Functions

func BuildTemplate added in v1.6.0

func BuildTemplate(componentNames []string, componentMap map[string]TemplateComponent) string

BuildTemplate creates a complete template from component names

func Execute

func Execute()

Execute adds all child commands to the root command and sets flags appropriately. This is called by main.main(). It only needs to happen once to the rootCmd.

func GetEntityTemplate added in v1.6.0

func GetEntityTemplate(withTimestamps, withSoftDelete, withValidation, withMethods bool) string

GetEntityTemplate builds entity template with specific components

func GetProjectTemplates added in v1.13.0

func GetProjectTemplates() map[string]ProjectTemplate

GetProjectTemplates returns all available project templates

func GetTemplateConfig added in v1.13.0

func GetTemplateConfig(name string) (string, error)

GetTemplateConfig returns the configuration for a template

func GetTemplateNames added in v1.13.0

func GetTemplateNames() []string

GetTemplateNames returns list of available template names

func GetUseCaseTemplate added in v1.6.0

func GetUseCaseTemplate() string

GetUseCaseTemplate builds use case template with all components

func ListAvailableTemplates added in v1.13.0

func ListAvailableTemplates()

ListAvailableTemplates prints all available templates with descriptions

func ValidateTemplate added in v1.6.0

func ValidateTemplate(templateStr string) error

ValidateTemplate validates a template string

func ValidateTemplateName added in v1.13.0

func ValidateTemplateName(name string) bool

ValidateTemplateName checks if a template name is valid

Types

type Alias added in v1.7.0

type Alias struct {
	Package string `yaml:"package" json:"package"`
	Alias   string `yaml:"alias" json:"alias"`
}

Alias defines import alias configuration

type ArchitectureConfig added in v1.7.0

type ArchitectureConfig struct {
	// Layers configuration
	Layers LayersConfig `yaml:"layers" json:"layers"`

	// Patterns to apply
	Patterns []string `yaml:"patterns" json:"patterns"`

	// Dependency injection type
	DI DIConfig `yaml:"di" json:"di"`

	// Naming conventions
	Naming NamingConfig `yaml:"naming" json:"naming"`
}

ArchitectureConfig defines Clean Architecture preferences

type AuthConfig added in v1.7.0

type AuthConfig struct {
	Enabled    bool     `yaml:"enabled" json:"enabled"`
	Type       string   `yaml:"type" json:"type"` // jwt, oauth2, session, basic
	Providers  []string `yaml:"providers" json:"providers"`
	RBAC       bool     `yaml:"rbac" json:"rbac"`
	Middleware bool     `yaml:"middleware" json:"middleware"`
}

AuthConfig defines authentication configuration

type BusinessRulesConfig added in v1.7.0

type BusinessRulesConfig struct {
	Enabled   bool     `yaml:"enabled" json:"enabled"`
	Patterns  []string `yaml:"patterns" json:"patterns"`
	Templates []string `yaml:"templates" json:"templates"`
	Events    bool     `yaml:"events" json:"events"`
	Guards    bool     `yaml:"guards" json:"guards"`
}

BusinessRulesConfig defines business rules generation

type CIConfig added in v1.7.0

type CIConfig struct {
	Enabled   bool     `yaml:"enabled" json:"enabled"`
	Provider  string   `yaml:"provider" json:"provider"` // github-actions, gitlab-ci, jenkins
	Workflows []string `yaml:"workflows" json:"workflows"`
	Tests     bool     `yaml:"tests" json:"tests"`
	Build     bool     `yaml:"build" json:"build"`
	Deploy    bool     `yaml:"deploy" json:"deploy"`
}

CIConfig defines CI/CD configuration

type CacheConfig added in v1.7.0

type CacheConfig struct {
	Enabled  bool     `yaml:"enabled" json:"enabled"`
	Type     string   `yaml:"type" json:"type"` // redis, memcached, inmemory
	TTL      string   `yaml:"ttl" json:"ttl"`
	Layers   []string `yaml:"layers" json:"layers"`
	Patterns []string `yaml:"patterns" json:"patterns"`
}

CacheConfig defines caching configuration

type CommandValidator added in v1.2.0

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

CommandValidator centralizes validation logic for all commands

func NewCommandValidator added in v1.2.0

func NewCommandValidator() *CommandValidator

NewCommandValidator creates a new command validator

func NewTestCommandValidator added in v1.6.0

func NewTestCommandValidator() *CommandValidator

NewTestCommandValidator creates a command validator for testing

func (*CommandValidator) ValidateEntityCommand added in v1.2.0

func (v *CommandValidator) ValidateEntityCommand(entityName, fields string) error

ValidateEntityCommand validates common entity command parameters

func (*CommandValidator) ValidateFeatureCommand added in v1.2.0

func (v *CommandValidator) ValidateFeatureCommand(featureName, fields, database, handlers string) error

ValidateFeatureCommand validates feature command parameters

func (*CommandValidator) ValidateHandlerCommand added in v1.2.0

func (v *CommandValidator) ValidateHandlerCommand(entity, handlerType string) error

ValidateHandlerCommand validates handler command parameters

func (*CommandValidator) ValidateRepositoryCommand added in v1.2.0

func (v *CommandValidator) ValidateRepositoryCommand(entityName, database string) error

ValidateRepositoryCommand validates repository command parameters

func (*CommandValidator) ValidateUseCaseCommand added in v1.2.0

func (v *CommandValidator) ValidateUseCaseCommand(usecaseName, entity, operations string) error

ValidateUseCaseCommand validates use case command parameters

type CommentsConfig added in v1.7.0

type CommentsConfig struct {
	Enabled    bool   `yaml:"enabled" json:"enabled"`
	Language   string `yaml:"language" json:"language"` // spanish, english
	Style      string `yaml:"style" json:"style"`       // godoc, standard
	Examples   bool   `yaml:"examples" json:"examples"`
	TODO       bool   `yaml:"todo" json:"todo"`
	Deprecated bool   `yaml:"deprecated" json:"deprecated"`
}

CommentsConfig defines code comments generation

type ConfigError added in v1.7.0

type ConfigError struct {
	Field   string `json:"field"`
	Message string `json:"message"`
	Value   string `json:"value"`
	Line    int    `json:"line,omitempty"`
	Column  int    `json:"column,omitempty"`
}

ConfigError represents a configuration error

type ConfigIntegration added in v1.7.0

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

ConfigIntegration handles integration between YAML config and CLI commands

func NewConfigIntegration added in v1.7.0

func NewConfigIntegration() *ConfigIntegration

NewConfigIntegration creates a new configuration integration handler

func (*ConfigIntegration) ExecuteCustomTemplate added in v1.7.0

func (ci *ConfigIntegration) ExecuteCustomTemplate(templateName string, data map[string]interface{}) (string, error)

ExecuteCustomTemplate executes a custom template if available

func (*ConfigIntegration) GenerateConfigFile added in v1.7.0

func (ci *ConfigIntegration) GenerateConfigFile(projectPath, projectName, module, database string) error

GenerateConfigFile generates a .goca.yaml file in the specified project directory

func (*ConfigIntegration) GenerateProjectDocumentation added in v1.7.0

func (ci *ConfigIntegration) GenerateProjectDocumentation() error

GenerateProjectDocumentation generates project documentation using templates

func (*ConfigIntegration) GetArchitectureConfig added in v1.7.0

func (ci *ConfigIntegration) GetArchitectureConfig() ArchitectureConfig

GetArchitectureConfig returns architecture configuration

func (*ConfigIntegration) GetAvailableTemplates added in v1.7.0

func (ci *ConfigIntegration) GetAvailableTemplates() []string

GetAvailableTemplates returns list of available custom templates

func (*ConfigIntegration) GetBusinessRulesEnabled added in v1.7.0

func (ci *ConfigIntegration) GetBusinessRulesEnabled(cliFlag *bool) bool

GetBusinessRulesEnabled returns business rules setting with fallback to CLI flag

func (*ConfigIntegration) GetConfigPath added in v1.7.0

func (ci *ConfigIntegration) GetConfigPath() string

GetConfigPath returns the path of the loaded config file

func (*ConfigIntegration) GetDatabaseConfig added in v1.7.0

func (ci *ConfigIntegration) GetDatabaseConfig() DatabaseConfig

GetDatabaseConfig returns database configuration

func (*ConfigIntegration) GetDatabaseType added in v1.7.0

func (ci *ConfigIntegration) GetDatabaseType(cliFlag string) string

GetDatabaseType returns database type with fallback to CLI flag

func (*ConfigIntegration) GetFeatureConfig added in v1.7.0

func (ci *ConfigIntegration) GetFeatureConfig() FeatureConfig

GetFeatureConfig returns feature configuration

func (*ConfigIntegration) GetGenerationConfig added in v1.7.0

func (ci *ConfigIntegration) GetGenerationConfig() GenerationConfig

GetGenerationConfig returns generation configuration

func (*ConfigIntegration) GetHandlerTypes added in v1.7.0

func (ci *ConfigIntegration) GetHandlerTypes(cliFlag string) []string

GetHandlerTypes returns handler types with fallback to CLI flag

func (*ConfigIntegration) GetNamingConvention added in v1.7.0

func (ci *ConfigIntegration) GetNamingConvention(elementType string) string

GetNamingConvention returns naming convention for different types

func (*ConfigIntegration) GetProjectConfig added in v1.7.0

func (ci *ConfigIntegration) GetProjectConfig() ProjectConfig

GetProjectConfig returns project configuration for generation

func (*ConfigIntegration) GetTemplateConfig added in v1.7.0

func (ci *ConfigIntegration) GetTemplateConfig() TemplateConfig

GetTemplateConfig returns template configuration

func (*ConfigIntegration) GetTemplateData added in v1.7.0

func (ci *ConfigIntegration) GetTemplateData(baseData map[string]interface{}) map[string]interface{}

GetTemplateData returns template data enriched with configuration

func (*ConfigIntegration) GetTemplateManager added in v1.7.0

func (ci *ConfigIntegration) GetTemplateManager() *TemplateManager

GetTemplateManager returns the template manager

func (*ConfigIntegration) GetTestingConfig added in v1.7.0

func (ci *ConfigIntegration) GetTestingConfig() TestingConfig

GetTestingConfig returns testing configuration

func (*ConfigIntegration) GetValidationEnabled added in v1.7.0

func (ci *ConfigIntegration) GetValidationEnabled(cliFlag *bool) bool

GetValidationEnabled returns validation setting with fallback to CLI flag

func (*ConfigIntegration) GetValidationErrors added in v1.7.0

func (ci *ConfigIntegration) GetValidationErrors() []ConfigError

GetValidationErrors returns configuration validation errors

func (*ConfigIntegration) GetValidationWarnings added in v1.7.0

func (ci *ConfigIntegration) GetValidationWarnings() []ConfigWarning

GetValidationWarnings returns configuration validation warnings

func (*ConfigIntegration) HasConfigFile added in v1.7.0

func (ci *ConfigIntegration) HasConfigFile() bool

HasConfigFile returns true if a config file was loaded

func (*ConfigIntegration) HasCustomTemplate added in v1.7.0

func (ci *ConfigIntegration) HasCustomTemplate(templateName string) bool

HasCustomTemplate checks if a custom template exists

func (*ConfigIntegration) InitializeTemplateSystem added in v1.7.0

func (ci *ConfigIntegration) InitializeTemplateSystem() error

InitializeTemplateSystem sets up templates for the first time

func (*ConfigIntegration) LoadConfigForProject added in v1.7.0

func (ci *ConfigIntegration) LoadConfigForProject() error

LoadConfigForProject loads configuration for current project context

func (*ConfigIntegration) MergeWithCLIFlags added in v1.7.0

func (ci *ConfigIntegration) MergeWithCLIFlags(flags map[string]interface{})

MergeWithCLIFlags merges configuration with CLI flags

func (*ConfigIntegration) PrintConfigSummary added in v1.7.0

func (ci *ConfigIntegration) PrintConfigSummary()

PrintConfigSummary prints configuration summary if available

func (*ConfigIntegration) UpdateConfigAfterGeneration added in v1.7.0

func (ci *ConfigIntegration) UpdateConfigAfterGeneration(feature, entityName string)

UpdateConfigAfterGeneration updates configuration after generating files

func (*ConfigIntegration) UpdateConfigFromTemplate added in v1.7.0

func (ci *ConfigIntegration) UpdateConfigFromTemplate(templateData map[string]interface{})

UpdateConfigFromTemplate updates configuration based on template data

func (*ConfigIntegration) ValidateConfiguration added in v1.7.0

func (ci *ConfigIntegration) ValidateConfiguration() error

ValidateConfiguration validates current configuration

type ConfigManager added in v1.7.0

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

ConfigManager handles loading, validation, and management of Goca configuration

func NewConfigManager added in v1.7.0

func NewConfigManager() *ConfigManager

NewConfigManager creates a new configuration manager

func (*ConfigManager) ApplyDefaults added in v1.7.0

func (cm *ConfigManager) ApplyDefaults(config *GocaConfig)

ApplyDefaults applies default values for missing configuration (public for testing)

func (*ConfigManager) CreateDefaultConfig added in v1.7.0

func (cm *ConfigManager) CreateDefaultConfig(projectPath string) *GocaConfig

CreateDefaultConfig creates a default configuration (public for testing)

func (*ConfigManager) FindConfigFile added in v1.7.0

func (cm *ConfigManager) FindConfigFile(projectPath string) string

FindConfigFile searches for configuration file in project (public for testing)

func (*ConfigManager) GenerateDefaultConfig added in v1.7.0

func (cm *ConfigManager) GenerateDefaultConfig(projectPath, projectName, module, database string) error

GenerateDefaultConfig generates a default .goca.yaml file

func (*ConfigManager) GetConfig added in v1.7.0

func (cm *ConfigManager) GetConfig() *GocaConfig

GetConfig returns the loaded configuration

func (*ConfigManager) GetErrors added in v1.7.0

func (cm *ConfigManager) GetErrors() []ConfigError

GetErrors returns configuration errors

func (*ConfigManager) GetWarnings added in v1.7.0

func (cm *ConfigManager) GetWarnings() []ConfigWarning

GetWarnings returns configuration warnings

func (*ConfigManager) LoadConfig added in v1.7.0

func (cm *ConfigManager) LoadConfig(projectPath string) error

LoadConfig loads configuration from file or creates default

func (*ConfigManager) LoadFromFile added in v1.7.0

func (cm *ConfigManager) LoadFromFile(filePath string) error

LoadFromFile loads and validates configuration from YAML file (public for testing)

func (*ConfigManager) MergeWithFlags added in v1.7.0

func (cm *ConfigManager) MergeWithFlags(flags map[string]interface{})

MergeWithFlags merges configuration with CLI flags

func (*ConfigManager) PrintSummary added in v1.7.0

func (cm *ConfigManager) PrintSummary()

PrintSummary prints configuration summary

func (*ConfigManager) SaveConfig added in v1.7.0

func (cm *ConfigManager) SaveConfig(filePath string) error

SaveConfig saves the current configuration to file

func (*ConfigManager) SetConfig added in v1.7.0

func (cm *ConfigManager) SetConfig(config *GocaConfig)

SetConfig sets the configuration (public for testing)

func (*ConfigManager) ValidateConfig added in v1.7.0

func (cm *ConfigManager) ValidateConfig(config *GocaConfig) error

ValidateConfig validates the configuration and collects errors/warnings (public for testing)

type ConfigWarning added in v1.7.0

type ConfigWarning struct {
	Field      string `json:"field"`
	Message    string `json:"message"`
	Value      string `json:"value"`
	Suggestion string `json:"suggestion"`
}

ConfigWarning represents a configuration warning

type ConnectionConfig added in v1.7.0

type ConnectionConfig struct {
	MaxOpen     int           `yaml:"max_open" json:"max_open"`
	MaxIdle     int           `yaml:"max_idle" json:"max_idle"`
	MaxLifetime time.Duration `yaml:"max_lifetime" json:"max_lifetime"`
	SSLMode     string        `yaml:"ssl_mode" json:"ssl_mode"`
	Timezone    string        `yaml:"timezone" json:"timezone"`
	Charset     string        `yaml:"charset" json:"charset"`
	Collation   string        `yaml:"collation" json:"collation"`
}

ConnectionConfig defines database connection settings

type CoverageConfig added in v1.7.0

type CoverageConfig struct {
	Enabled   bool     `yaml:"enabled" json:"enabled"`
	Threshold float64  `yaml:"threshold" json:"threshold"`
	Output    string   `yaml:"output" json:"output"`
	Format    string   `yaml:"format" json:"format"`
	Exclude   []string `yaml:"exclude" json:"exclude"`
}

CoverageConfig defines test coverage preferences

type DIConfig added in v1.7.0

type DIConfig struct {
	Type       string            `yaml:"type" json:"type"` // manual, wire, fx, dig
	AutoWire   bool              `yaml:"auto_wire" json:"auto_wire"`
	Providers  []string          `yaml:"providers" json:"providers"`
	Modules    []string          `yaml:"modules" json:"modules"`
	Extensions map[string]string `yaml:"extensions" json:"extensions"`
}

DIConfig defines dependency injection preferences

type DataGenerator added in v1.2.0

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

DataGenerator generates realistic sample data for testing

func NewDataGenerator added in v1.2.0

func NewDataGenerator() *DataGenerator

NewDataGenerator creates a new data generator

func (*DataGenerator) GenerateInsertSQL added in v1.2.0

func (g *DataGenerator) GenerateInsertSQL(tableName string, fields []Field, count int) string

GenerateInsertSQL generates SQL INSERT statements with sample data

func (*DataGenerator) GenerateSampleData added in v1.2.0

func (g *DataGenerator) GenerateSampleData(fields []Field, entity string) map[string]interface{}

GenerateSampleData generates sample data based on field types

func (*DataGenerator) GenerateTestData added in v1.2.0

func (g *DataGenerator) GenerateTestData(entity string, fields []Field, count int) []map[string]interface{}

GenerateTestData generates a complete test dataset

type DatabaseConfig added in v1.7.0

type DatabaseConfig struct {
	Type        string                `yaml:"type" json:"type"` // postgres, mysql, mongodb, sqlite
	Host        string                `yaml:"host" json:"host"`
	Port        int                   `yaml:"port" json:"port"`
	Name        string                `yaml:"name" json:"name"`
	Migrations  MigrationConfig       `yaml:"migrations" json:"migrations"`
	Connection  ConnectionConfig      `yaml:"connection" json:"connection"`
	Features    DatabaseFeatureConfig `yaml:"features" json:"features"`
	Extensions  []string              `yaml:"extensions" json:"extensions"`
	CustomTypes map[string]string     `yaml:"custom_types" json:"custom_types"`
}

DatabaseConfig contains database configuration

type DatabaseFeatureConfig added in v1.7.0

type DatabaseFeatureConfig struct {
	SoftDelete   bool     `yaml:"soft_delete" json:"soft_delete"`
	Timestamps   bool     `yaml:"timestamps" json:"timestamps"`
	UUID         bool     `yaml:"uuid" json:"uuid"`
	Audit        bool     `yaml:"audit" json:"audit"`
	Versioning   bool     `yaml:"versioning" json:"versioning"`
	Partitioning bool     `yaml:"partitioning" json:"partitioning"`
	Indexes      []string `yaml:"indexes" json:"indexes"`
	Constraints  []string `yaml:"constraints" json:"constraints"`
}

DatabaseFeatureConfig defines database-specific features

type Dependency added in v1.12.0

type Dependency struct {
	Module  string
	Version string
	Type    string // "required", "optional", "suggested"
	Reason  string
}

Dependency represents a Go module dependency

type DependencyManager added in v1.12.0

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

DependencyManager handles go.mod updates and version checking

func NewDependencyManager added in v1.12.0

func NewDependencyManager(projectRoot string, dryRun bool) *DependencyManager

NewDependencyManager creates a new dependency manager

func (*DependencyManager) AddDependency added in v1.12.0

func (dm *DependencyManager) AddDependency(dep Dependency) error

AddDependency adds a dependency to go.mod

func (*DependencyManager) CheckGoVersion added in v1.12.0

func (dm *DependencyManager) CheckGoVersion(requiredVersion string) error

CheckGoVersion verifies the Go version is compatible

func (*DependencyManager) CommonDependencies added in v1.12.0

func (dm *DependencyManager) CommonDependencies() map[string]Dependency

CommonDependencies returns list of commonly used dependencies

func (*DependencyManager) DependencyExists added in v1.12.0

func (dm *DependencyManager) DependencyExists(module string) (bool, error)

DependencyExists checks if a dependency is already in go.mod

func (*DependencyManager) GetRequiredDependenciesForFeature added in v1.12.0

func (dm *DependencyManager) GetRequiredDependenciesForFeature(featureType string, options map[string]bool) []Dependency

GetRequiredDependenciesForFeature returns required dependencies for a feature type

func (*DependencyManager) PrintDependencySuggestions added in v1.12.0

func (dm *DependencyManager) PrintDependencySuggestions(suggestions []Dependency)

PrintDependencySuggestions prints suggested optional dependencies

func (*DependencyManager) SuggestDependencies added in v1.12.0

func (dm *DependencyManager) SuggestDependencies(features []string) []Dependency

SuggestDependencies suggests optional dependencies based on features

func (*DependencyManager) UpdateGoMod added in v1.12.0

func (dm *DependencyManager) UpdateGoMod() error

UpdateGoMod runs go mod tidy to update go.mod and go.sum

func (*DependencyManager) VerifyDependencyVersions added in v1.12.0

func (dm *DependencyManager) VerifyDependencyVersions() error

VerifyDependencyVersions checks if all dependencies have compatible versions

type DeployConfig added in v1.7.0

type DeployConfig struct {
	Docker      DockerConfig     `yaml:"docker" json:"docker"`
	Kubernetes  KubernetesConfig `yaml:"kubernetes" json:"kubernetes"`
	CI          CIConfig         `yaml:"ci" json:"ci"`
	Environment []EnvConfig      `yaml:"environments" json:"environments"`
}

DeployConfig defines deployment and infrastructure

type DockerConfig added in v1.7.0

type DockerConfig struct {
	Enabled    bool              `yaml:"enabled" json:"enabled"`
	Dockerfile string            `yaml:"dockerfile" json:"dockerfile"`
	Image      string            `yaml:"image" json:"image"`
	Registry   string            `yaml:"registry" json:"registry"`
	Compose    bool              `yaml:"compose" json:"compose"`
	Multistage bool              `yaml:"multistage" json:"multistage"`
	Labels     map[string]string `yaml:"labels" json:"labels"`
}

DockerConfig defines Docker configuration

type DocumentationConfig added in v1.7.0

type DocumentationConfig struct {
	Swagger  SwaggerConfig  `yaml:"swagger" json:"swagger"`
	Postman  PostmanConfig  `yaml:"postman" json:"postman"`
	Markdown MarkdownConfig `yaml:"markdown" json:"markdown"`
	Comments CommentsConfig `yaml:"comments" json:"comments"`
}

DocumentationConfig defines documentation generation

type EntityData added in v1.2.0

type EntityData struct {
	Name       string
	NameLower  string
	NamePlural string
	Package    string
}

EntityData holds entity-specific information

type EnvConfig added in v1.7.0

type EnvConfig struct {
	Name      string            `yaml:"name" json:"name"`
	Default   bool              `yaml:"default" json:"default"`
	Variables map[string]string `yaml:"variables" json:"variables"`
	Overrides GocaConfig        `yaml:"overrides" json:"overrides"`
}

EnvConfig defines environment-specific configuration

type ErrorHandler added in v1.2.0

type ErrorHandler struct {
	TestMode bool // Set to true during testing to avoid os.Exit()
}

ErrorHandler centralizes error handling for the CLI

func NewErrorHandler added in v1.2.0

func NewErrorHandler() *ErrorHandler

NewErrorHandler creates a new error handler

func (*ErrorHandler) HandleError added in v1.2.0

func (e *ErrorHandler) HandleError(err error, context string)

HandleError handles errors with consistent formatting and exit behavior

func (*ErrorHandler) HandleErrorWithReturn added in v1.6.0

func (e *ErrorHandler) HandleErrorWithReturn(err error, context string) error

HandleErrorWithReturn handles errors and returns them for testing

func (*ErrorHandler) HandleInfo added in v1.2.0

func (e *ErrorHandler) HandleInfo(message string)

HandleInfo handles informational messages

func (*ErrorHandler) HandleSuccess added in v1.2.0

func (e *ErrorHandler) HandleSuccess(message string)

HandleSuccess handles success messages with consistent formatting

func (*ErrorHandler) HandleValidationError added in v1.2.0

func (e *ErrorHandler) HandleValidationError(err error, field string)

HandleValidationError handles validation errors with specific formatting

func (*ErrorHandler) HandleWarning added in v1.2.0

func (e *ErrorHandler) HandleWarning(message string, context string)

HandleWarning handles warnings without exiting

func (*ErrorHandler) ValidateRequiredFlag added in v1.2.0

func (e *ErrorHandler) ValidateRequiredFlag(value string, flagName string) error

ValidateRequiredFlag checks if a required flag is provided

type FeatureConfig added in v1.7.0

type FeatureConfig struct {
	// Authentication and authorization
	Auth AuthConfig `yaml:"auth" json:"auth"`

	// Caching configuration
	Cache CacheConfig `yaml:"cache" json:"cache"`

	// Logging configuration
	Logging LoggingConfig `yaml:"logging" json:"logging"`

	// Monitoring configuration
	Monitoring MonitoringConfig `yaml:"monitoring" json:"monitoring"`

	// Security features
	Security SecurityConfig `yaml:"security" json:"security"`

	// Plugins and extensions
	Plugins []PluginConfig `yaml:"plugins" json:"plugins"`
}

FeatureConfig defines feature flags and plugins

type FeatureFlags added in v1.2.0

type FeatureFlags struct {
	Validation    bool
	BusinessRules bool
	Timestamps    bool
	SoftDelete    bool
	Cache         bool
	Transactions  bool
	Auth          bool
}

FeatureFlags holds feature configuration

type Field

type Field struct {
	Name string
	Type string
	Tag  string
}

Field represents a single field definition for an entity structure.

type FieldData added in v1.2.0

type FieldData struct {
	Name         string
	Type         string
	JSONTag      string
	GormTag      string
	ValidateTag  string
	IsRequired   bool
	IsUnique     bool
	IsSearchable bool
}

FieldData holds field-specific information

type FieldValidator added in v1.2.0

type FieldValidator struct{}

FieldValidator validates field definitions and entity names

func NewFieldValidator added in v1.2.0

func NewFieldValidator() *FieldValidator

NewFieldValidator creates a new field validator instance

func (*FieldValidator) GenerateQueryMethodsForFields added in v1.2.0

func (v *FieldValidator) GenerateQueryMethodsForFields(entity string, fields []Field) []QueryMethod

GenerateQueryMethodsForFields generates appropriate query methods based on field types

func (*FieldValidator) ParseFieldsWithValidation added in v1.2.0

func (v *FieldValidator) ParseFieldsWithValidation(fields string) ([]Field, error)

ParseFieldsWithValidation parses and validates fields string

func (*FieldValidator) ValidateDatabase added in v1.2.0

func (v *FieldValidator) ValidateDatabase(database string) error

ValidateDatabase validates a database type

func (*FieldValidator) ValidateEntityName added in v1.2.0

func (v *FieldValidator) ValidateEntityName(name string) error

ValidateEntityName validates an entity name

func (*FieldValidator) ValidateField added in v1.2.0

func (v *FieldValidator) ValidateField(fieldDef string) (*Field, error)

ValidateField validates a single field definition

func (*FieldValidator) ValidateFieldName added in v1.2.0

func (v *FieldValidator) ValidateFieldName(name string) error

ValidateFieldName validates a field name

func (*FieldValidator) ValidateFieldType added in v1.2.0

func (v *FieldValidator) ValidateFieldType(fieldType string) error

ValidateFieldType validates a field type with comprehensive Go type support

func (*FieldValidator) ValidateFields added in v1.2.0

func (v *FieldValidator) ValidateFields(fields string) error

ValidateFields validates the complete fields string

func (*FieldValidator) ValidateHandlers added in v1.2.0

func (v *FieldValidator) ValidateHandlers(handlers string) error

ValidateHandlers validates handler types

func (*FieldValidator) ValidateOperations added in v1.2.0

func (v *FieldValidator) ValidateOperations(operations string) error

ValidateOperations validates operation types

func (*FieldValidator) ValidateReservedNames added in v1.2.0

func (v *FieldValidator) ValidateReservedNames(name string) error

ValidateReservedNames checks for Go reserved words and common conflicts

type FixtureConfig added in v1.7.0

type FixtureConfig struct {
	Enabled   bool     `yaml:"enabled" json:"enabled"`
	Directory string   `yaml:"directory" json:"directory"`
	Format    string   `yaml:"format" json:"format"` // json, yaml, sql
	Seeds     bool     `yaml:"seeds" json:"seeds"`
	Factories []string `yaml:"factories" json:"factories"`
}

FixtureConfig defines test fixture preferences

type GenerationConfig added in v1.7.0

type GenerationConfig struct {
	// Field validation preferences
	Validation ValidationConfig `yaml:"validation" json:"validation"`

	// Business rules generation
	BusinessRules BusinessRulesConfig `yaml:"business_rules" json:"business_rules"`

	// Documentation generation
	Documentation DocumentationConfig `yaml:"documentation" json:"documentation"`

	// Code style preferences
	Style StyleConfig `yaml:"style" json:"style"`

	// Import management
	Imports ImportConfig `yaml:"imports" json:"imports"`
}

GenerationConfig defines code generation preferences

type GocaConfig added in v1.7.0

type GocaConfig struct {
	// Core project configuration
	Project ProjectConfig `yaml:"project" json:"project"`

	// Architecture and patterns configuration
	Architecture ArchitectureConfig `yaml:"architecture" json:"architecture"`

	// Database configuration
	Database DatabaseConfig `yaml:"database" json:"database"`

	// Code generation preferences
	Generation GenerationConfig `yaml:"generation" json:"generation"`

	// Testing configuration
	Testing TestingConfig `yaml:"testing" json:"testing"`

	// Templates and customization
	Templates TemplateConfig `yaml:"templates" json:"templates"`

	// Features and plugins
	Features FeatureConfig `yaml:"features" json:"features"`

	// Deployment and infrastructure
	Deploy DeployConfig `yaml:"deploy" json:"deploy"`
}

GocaConfig represents the complete configuration structure for a Goca project

type ImportConfig added in v1.7.0

type ImportConfig struct {
	GroupStandard   bool    `yaml:"group_standard" json:"group_standard"`
	GroupThirdParty bool    `yaml:"group_third_party" json:"group_third_party"`
	GroupLocal      bool    `yaml:"group_local" json:"group_local"`
	SortAlpha       bool    `yaml:"sort_alpha" json:"sort_alpha"`
	RemoveUnused    bool    `yaml:"remove_unused" json:"remove_unused"`
	Aliases         []Alias `yaml:"aliases" json:"aliases"`
}

ImportConfig defines import management

type KubernetesConfig added in v1.7.0

type KubernetesConfig struct {
	Enabled    bool              `yaml:"enabled" json:"enabled"`
	Namespace  string            `yaml:"namespace" json:"namespace"`
	Manifests  string            `yaml:"manifests" json:"manifests"`
	Helm       bool              `yaml:"helm" json:"helm"`
	Ingress    bool              `yaml:"ingress" json:"ingress"`
	ConfigMaps bool              `yaml:"config_maps" json:"config_maps"`
	Secrets    bool              `yaml:"secrets" json:"secrets"`
	Labels     map[string]string `yaml:"labels" json:"labels"`
}

KubernetesConfig defines Kubernetes configuration

type LayerConfig added in v1.7.0

type LayerConfig struct {
	Enabled     bool              `yaml:"enabled" json:"enabled"`
	Directory   string            `yaml:"directory" json:"directory"`
	Patterns    []string          `yaml:"patterns" json:"patterns"`
	Templates   []string          `yaml:"templates" json:"templates"`
	Validations []string          `yaml:"validations" json:"validations"`
	Extensions  map[string]string `yaml:"extensions" json:"extensions"`
}

LayerConfig defines configuration for a specific layer

type LayersConfig added in v1.7.0

type LayersConfig struct {
	Domain     LayerConfig   `yaml:"domain" json:"domain"`
	UseCase    LayerConfig   `yaml:"usecase" json:"usecase"`
	Repository LayerConfig   `yaml:"repository" json:"repository"`
	Handler    LayerConfig   `yaml:"handler" json:"handler"`
	Custom     []LayerConfig `yaml:"custom" json:"custom"`
}

LayersConfig defines which layers to generate and their structure

type LoggingConfig added in v1.7.0

type LoggingConfig struct {
	Enabled    bool     `yaml:"enabled" json:"enabled"`
	Level      string   `yaml:"level" json:"level"`
	Format     string   `yaml:"format" json:"format"` // json, text, structured
	Output     []string `yaml:"output" json:"output"` // stdout, file, syslog
	Structured bool     `yaml:"structured" json:"structured"`
	Tracing    bool     `yaml:"tracing" json:"tracing"`
}

LoggingConfig defines logging configuration

type MarkdownConfig added in v1.7.0

type MarkdownConfig struct {
	Enabled  bool   `yaml:"enabled" json:"enabled"`
	Output   string `yaml:"output" json:"output"`
	Template string `yaml:"template" json:"template"`
	TOC      bool   `yaml:"toc" json:"toc"`
	Examples bool   `yaml:"examples" json:"examples"`
}

MarkdownConfig defines Markdown documentation generation

type MethodData added in v1.2.0

type MethodData struct {
	Name       string
	Params     []ParamData
	ReturnType string
	Body       string
}

MethodData holds method generation information

type MigrationConfig added in v1.7.0

type MigrationConfig struct {
	Enabled      bool     `yaml:"enabled" json:"enabled"`
	AutoGenerate bool     `yaml:"auto_generate" json:"auto_generate"`
	Directory    string   `yaml:"directory" json:"directory"`
	Naming       string   `yaml:"naming" json:"naming"`
	Versioning   string   `yaml:"versioning" json:"versioning"`
	Tools        []string `yaml:"tools" json:"tools"`
}

MigrationConfig defines migration preferences

type MockConfig added in v1.7.0

type MockConfig struct {
	Enabled    bool     `yaml:"enabled" json:"enabled"`
	Tool       string   `yaml:"tool" json:"tool"` // gomock, testify, counterfeiter
	Directory  string   `yaml:"directory" json:"directory"`
	Suffix     string   `yaml:"suffix" json:"suffix"`
	Interfaces []string `yaml:"interfaces" json:"interfaces"`
}

MockConfig defines mock generation preferences

type MonitoringConfig added in v1.7.0

type MonitoringConfig struct {
	Enabled     bool     `yaml:"enabled" json:"enabled"`
	Metrics     bool     `yaml:"metrics" json:"metrics"`
	Tracing     bool     `yaml:"tracing" json:"tracing"`
	HealthCheck bool     `yaml:"health_check" json:"health_check"`
	Profiling   bool     `yaml:"profiling" json:"profiling"`
	Tools       []string `yaml:"tools" json:"tools"` // prometheus, jaeger, datadog
}

MonitoringConfig defines monitoring and observability

type NameConflictDetector added in v1.12.0

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

NameConflictDetector detects naming conflicts in the project

func NewNameConflictDetector added in v1.12.0

func NewNameConflictDetector(projectRoot string) *NameConflictDetector

NewNameConflictDetector creates a new name conflict detector

func (*NameConflictDetector) CheckNameConflict added in v1.12.0

func (ncd *NameConflictDetector) CheckNameConflict(name string) error

CheckNameConflict checks if a name conflicts with existing entities/features

func (*NameConflictDetector) GetExistingEntities added in v1.12.0

func (ncd *NameConflictDetector) GetExistingEntities() []string

GetExistingEntities returns list of existing entities

func (*NameConflictDetector) ScanExistingEntities added in v1.12.0

func (ncd *NameConflictDetector) ScanExistingEntities() error

ScanExistingEntities scans the project for existing entities

type NamingConfig added in v1.7.0

type NamingConfig struct {
	Entities  string `yaml:"entities" json:"entities"`   // PascalCase, camelCase, snake_case
	Fields    string `yaml:"fields" json:"fields"`       // PascalCase, camelCase, snake_case
	Files     string `yaml:"files" json:"files"`         // snake_case, kebab-case, camelCase
	Packages  string `yaml:"packages" json:"packages"`   // lowercase, snake_case
	Constants string `yaml:"constants" json:"constants"` // UPPER_CASE, PascalCase
	Variables string `yaml:"variables" json:"variables"` // camelCase, snake_case
	Functions string `yaml:"functions" json:"functions"` // camelCase, PascalCase
}

NamingConfig defines naming conventions

type ParamData added in v1.2.0

type ParamData struct {
	Name string
	Type string
}

ParamData holds parameter information

type PluginConfig added in v1.7.0

type PluginConfig struct {
	Name     string            `yaml:"name" json:"name"`
	Version  string            `yaml:"version" json:"version"`
	Enabled  bool              `yaml:"enabled" json:"enabled"`
	Config   map[string]string `yaml:"config" json:"config"`
	Priority int               `yaml:"priority" json:"priority"`
}

PluginConfig defines plugin configuration

type PostmanConfig added in v1.7.0

type PostmanConfig struct {
	Enabled     bool   `yaml:"enabled" json:"enabled"`
	Output      string `yaml:"output" json:"output"`
	Environment bool   `yaml:"environment" json:"environment"`
	Tests       bool   `yaml:"tests" json:"tests"`
	Variables   bool   `yaml:"variables" json:"variables"`
}

PostmanConfig defines Postman collection generation

type ProjectConfig added in v1.7.0

type ProjectConfig struct {
	Name        string            `yaml:"name" json:"name"`
	Module      string            `yaml:"module" json:"module"`
	Description string            `yaml:"description" json:"description"`
	Version     string            `yaml:"version" json:"version"`
	Author      string            `yaml:"author" json:"author"`
	License     string            `yaml:"license" json:"license"`
	Repository  string            `yaml:"repository" json:"repository"`
	Tags        []string          `yaml:"tags" json:"tags"`
	Metadata    map[string]string `yaml:"metadata" json:"metadata"`
}

ProjectConfig contains basic project information

type ProjectTemplate added in v1.13.0

type ProjectTemplate struct {
	Name        string
	Description string
	Config      string // YAML configuration
	Features    []string
}

ProjectTemplate defines a predefined project configuration

type QueryMethod added in v1.2.0

type QueryMethod struct {
	Name       string // Full method name (FindByUserEmail)
	MethodName string // Method name only (FindByEmail)
	Field      string // Field name (email)
	Type       string // Field type (string)
}

QueryMethod represents a dynamic query method

type SafetyManager added in v1.12.0

type SafetyManager struct {
	DryRun    bool
	Force     bool
	Backup    bool
	BackupDir string
	// contains filtered or unexported fields
}

SafetyManager handles file safety operations like conflict detection, backups, and dry-run mode

func NewSafetyManager added in v1.12.0

func NewSafetyManager(dryRun, force, backup bool) *SafetyManager

NewSafetyManager creates a new safety manager instance

func (*SafetyManager) BackupFile added in v1.12.0

func (sm *SafetyManager) BackupFile(filePath string) error

BackupFile creates a backup of an existing file

func (*SafetyManager) CheckFileConflict added in v1.12.0

func (sm *SafetyManager) CheckFileConflict(filePath string) error

CheckFileConflict checks if a file exists and handles it according to flags

func (*SafetyManager) GetConflicts added in v1.12.0

func (sm *SafetyManager) GetConflicts() []string

GetConflicts returns list of file conflicts found

func (*SafetyManager) GetCreatedFiles added in v1.12.0

func (sm *SafetyManager) GetCreatedFiles() []string

GetCreatedFiles returns list of files that would be/were created

func (*SafetyManager) PrintSummary added in v1.12.0

func (sm *SafetyManager) PrintSummary()

PrintSummary prints a summary of the operation

func (*SafetyManager) WriteFile added in v1.12.0

func (sm *SafetyManager) WriteFile(filePath, content string) error

WriteFile writes a file with safety checks

type SearchMethod added in v1.2.0

type SearchMethod struct {
	MethodName string // FindByEmail, FindByUsername, etc.
	FieldName  string // Email, Username, etc.
	FieldType  string // string, int, etc.
	ReturnType string // (*domain.User, error)
	IsUnique   bool   // true si debería retornar un solo resultado
}

SearchMethod representa un método de búsqueda generado dinámicamente

type SecurityConfig added in v1.7.0

type SecurityConfig struct {
	HTTPS        bool     `yaml:"https" json:"https"`
	CORS         bool     `yaml:"cors" json:"cors"`
	RateLimit    bool     `yaml:"rate_limit" json:"rate_limit"`
	Validation   bool     `yaml:"validation" json:"validation"`
	Sanitization bool     `yaml:"sanitization" json:"sanitization"`
	Headers      []string `yaml:"headers" json:"headers"`
	Middleware   []string `yaml:"middleware" json:"middleware"`
}

SecurityConfig defines security features

type StyleConfig added in v1.7.0

type StyleConfig struct {
	Gofmt       bool     `yaml:"gofmt" json:"gofmt"`
	Goimports   bool     `yaml:"goimports" json:"goimports"`
	Golint      bool     `yaml:"golint" json:"golint"`
	Govet       bool     `yaml:"govet" json:"govet"`
	Staticcheck bool     `yaml:"staticcheck" json:"staticcheck"`
	Custom      []string `yaml:"custom" json:"custom"`
	LineLength  int      `yaml:"line_length" json:"line_length"`
	TabWidth    int      `yaml:"tab_width" json:"tab_width"`
}

StyleConfig defines code style preferences

type SwaggerConfig added in v1.7.0

type SwaggerConfig struct {
	Enabled     bool              `yaml:"enabled" json:"enabled"`
	Version     string            `yaml:"version" json:"version"`
	Output      string            `yaml:"output" json:"output"`
	Title       string            `yaml:"title" json:"title"`
	Description string            `yaml:"description" json:"description"`
	Host        string            `yaml:"host" json:"host"`
	BasePath    string            `yaml:"base_path" json:"base_path"`
	Schemes     []string          `yaml:"schemes" json:"schemes"`
	Tags        []SwaggerTag      `yaml:"tags" json:"tags"`
	Extensions  map[string]string `yaml:"extensions" json:"extensions"`
}

SwaggerConfig defines Swagger/OpenAPI generation

type SwaggerTag added in v1.7.0

type SwaggerTag struct {
	Name        string `yaml:"name" json:"name"`
	Description string `yaml:"description" json:"description"`
}

SwaggerTag defines Swagger tag configuration

type Template added in v1.7.0

type Template struct {
	Path       string            `yaml:"path" json:"path"`
	Type       string            `yaml:"type" json:"type"`
	Variables  map[string]string `yaml:"variables" json:"variables"`
	Conditions []string          `yaml:"conditions" json:"conditions"`
}

Template defines a custom template configuration

type TemplateBuilder added in v1.6.0

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

TemplateBuilder builds templates from components

func NewTemplateBuilder added in v1.6.0

func NewTemplateBuilder() *TemplateBuilder

NewTemplateBuilder creates a new template builder

func (*TemplateBuilder) AddComponent added in v1.6.0

func (tb *TemplateBuilder) AddComponent(component TemplateComponent) *TemplateBuilder

AddComponent adds a component to the template builder

func (*TemplateBuilder) AddComponentByName added in v1.6.0

func (tb *TemplateBuilder) AddComponentByName(name string, componentMap map[string]TemplateComponent) *TemplateBuilder

AddComponentByName adds a component by name from the component map

func (*TemplateBuilder) Build added in v1.6.0

func (tb *TemplateBuilder) Build() string

Build builds the final template string

type TemplateComponent added in v1.6.0

type TemplateComponent struct {
	Name     string
	Template string
	Required bool
}

TemplateComponent represents a reusable template component

type TemplateConfig added in v1.7.0

type TemplateConfig struct {
	Directory string              `yaml:"directory" json:"directory"`
	Custom    map[string]Template `yaml:"custom" json:"custom"`
	Overrides map[string]Template `yaml:"overrides" json:"overrides"`
	Variables map[string]string   `yaml:"variables" json:"variables"`
}

TemplateConfig defines custom templates

type TemplateData added in v1.2.0

type TemplateData struct {
	Entity      EntityData
	Fields      []FieldData
	Module      string
	Database    string
	Features    FeatureFlags
	Imports     []string
	Methods     []MethodData
	Validations []ValidationData
}

TemplateData holds all data needed for template generation

type TemplateGenerator added in v1.2.0

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

TemplateGenerator generates code from templates with dynamic data

func NewTemplateGenerator added in v1.2.0

func NewTemplateGenerator() *TemplateGenerator

NewTemplateGenerator creates a new template generator

func (*TemplateGenerator) GenerateFromTemplate added in v1.2.0

func (g *TemplateGenerator) GenerateFromTemplate(templateName string, data *TemplateData) (string, error)

GenerateFromTemplate generates code using template and data

func (*TemplateGenerator) PrepareTemplateData added in v1.2.0

func (g *TemplateGenerator) PrepareTemplateData(entityName, fields string, features FeatureFlags) (*TemplateData, error)

PrepareTemplateData prepares template data from command parameters

type TemplateManager added in v1.7.0

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

TemplateManager manages custom templates for code generation

func NewTemplateManager added in v1.7.0

func NewTemplateManager(config *TemplateConfig, projectPath string) *TemplateManager

NewTemplateManager creates a new template manager

func (*TemplateManager) ExecuteTemplate added in v1.7.0

func (tm *TemplateManager) ExecuteTemplate(name string, data interface{}) (string, error)

ExecuteTemplate executes a template with given data

func (*TemplateManager) ExecuteTemplateString added in v1.7.0

func (tm *TemplateManager) ExecuteTemplateString(templateContent string, data interface{}) (string, error)

ExecuteTemplateString executes a template from string content (useful for testing)

func (*TemplateManager) GetAvailableTemplates added in v1.7.0

func (tm *TemplateManager) GetAvailableTemplates() []string

GetAvailableTemplates returns list of available templates

func (*TemplateManager) HasTemplate added in v1.7.0

func (tm *TemplateManager) HasTemplate(name string) bool

HasTemplate checks if a custom template exists

func (*TemplateManager) LoadTemplates added in v1.7.0

func (tm *TemplateManager) LoadTemplates() error

LoadTemplates loads all templates from the templates directory

type TestingConfig added in v1.7.0

type TestingConfig struct {
	Enabled     bool           `yaml:"enabled" json:"enabled"`
	Framework   string         `yaml:"framework" json:"framework"` // testify, ginkgo, builtin
	Coverage    CoverageConfig `yaml:"coverage" json:"coverage"`
	Mocks       MockConfig     `yaml:"mocks" json:"mocks"`
	Integration bool           `yaml:"integration" json:"integration"`
	Benchmarks  bool           `yaml:"benchmarks" json:"benchmarks"`
	Examples    bool           `yaml:"examples" json:"examples"`
	Fixtures    FixtureConfig  `yaml:"fixtures" json:"fixtures"`
}

TestingConfig defines testing generation preferences

type ValidationConfig added in v1.7.0

type ValidationConfig struct {
	Enabled   bool     `yaml:"enabled" json:"enabled"`
	Library   string   `yaml:"library" json:"library"` // builtin, validator, ozzo-validation
	Tags      []string `yaml:"tags" json:"tags"`
	Custom    []string `yaml:"custom" json:"custom"`
	Sanitize  bool     `yaml:"sanitize" json:"sanitize"`
	Transform bool     `yaml:"transform" json:"transform"`
}

ValidationConfig defines validation generation preferences

type ValidationData added in v1.2.0

type ValidationData struct {
	Field    string
	Rule     string
	Message  string
	Priority int
}

ValidationData holds validation information

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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