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
- Variables
- func BuildTemplate(componentNames []string, componentMap map[string]TemplateComponent) string
- func Execute()
- func GetEntityTemplate(withTimestamps, withSoftDelete, withValidation, withMethods bool) string
- func GetProjectTemplates() map[string]ProjectTemplate
- func GetTemplateConfig(name string) (string, error)
- func GetTemplateNames() []string
- func GetUseCaseTemplate() string
- func ListAvailableTemplates()
- func ValidateTemplate(templateStr string) error
- func ValidateTemplateName(name string) bool
- type Alias
- type ArchitectureConfig
- type AuthConfig
- type BusinessRulesConfig
- type CIConfig
- type CacheConfig
- type CommandValidator
- func (v *CommandValidator) ValidateEntityCommand(entityName, fields string) error
- func (v *CommandValidator) ValidateFeatureCommand(featureName, fields, database, handlers string) error
- func (v *CommandValidator) ValidateHandlerCommand(entity, handlerType string) error
- func (v *CommandValidator) ValidateRepositoryCommand(entityName, database string) error
- func (v *CommandValidator) ValidateUseCaseCommand(usecaseName, entity, operations string) error
- type CommentsConfig
- type ConfigError
- type ConfigIntegration
- func (ci *ConfigIntegration) ExecuteCustomTemplate(templateName string, data map[string]interface{}) (string, error)
- func (ci *ConfigIntegration) GenerateConfigFile(projectPath, projectName, module, database string) error
- func (ci *ConfigIntegration) GenerateProjectDocumentation() error
- func (ci *ConfigIntegration) GetArchitectureConfig() ArchitectureConfig
- func (ci *ConfigIntegration) GetAvailableTemplates() []string
- func (ci *ConfigIntegration) GetBusinessRulesEnabled(cliFlag *bool) bool
- func (ci *ConfigIntegration) GetConfigPath() string
- func (ci *ConfigIntegration) GetDatabaseConfig() DatabaseConfig
- func (ci *ConfigIntegration) GetDatabaseType(cliFlag string) string
- func (ci *ConfigIntegration) GetFeatureConfig() FeatureConfig
- func (ci *ConfigIntegration) GetGenerationConfig() GenerationConfig
- func (ci *ConfigIntegration) GetHandlerTypes(cliFlag string) []string
- func (ci *ConfigIntegration) GetNamingConvention(elementType string) string
- func (ci *ConfigIntegration) GetProjectConfig() ProjectConfig
- func (ci *ConfigIntegration) GetTemplateConfig() TemplateConfig
- func (ci *ConfigIntegration) GetTemplateData(baseData map[string]interface{}) map[string]interface{}
- func (ci *ConfigIntegration) GetTemplateManager() *TemplateManager
- func (ci *ConfigIntegration) GetTestingConfig() TestingConfig
- func (ci *ConfigIntegration) GetValidationEnabled(cliFlag *bool) bool
- func (ci *ConfigIntegration) GetValidationErrors() []ConfigError
- func (ci *ConfigIntegration) GetValidationWarnings() []ConfigWarning
- func (ci *ConfigIntegration) HasConfigFile() bool
- func (ci *ConfigIntegration) HasCustomTemplate(templateName string) bool
- func (ci *ConfigIntegration) InitializeTemplateSystem() error
- func (ci *ConfigIntegration) LoadConfigForProject() error
- func (ci *ConfigIntegration) MergeWithCLIFlags(flags map[string]interface{})
- func (ci *ConfigIntegration) PrintConfigSummary()
- func (ci *ConfigIntegration) UpdateConfigAfterGeneration(feature, entityName string)
- func (ci *ConfigIntegration) UpdateConfigFromTemplate(templateData map[string]interface{})
- func (ci *ConfigIntegration) ValidateConfiguration() error
- type ConfigManager
- func (cm *ConfigManager) ApplyDefaults(config *GocaConfig)
- func (cm *ConfigManager) CreateDefaultConfig(projectPath string) *GocaConfig
- func (cm *ConfigManager) FindConfigFile(projectPath string) string
- func (cm *ConfigManager) GenerateDefaultConfig(projectPath, projectName, module, database string) error
- func (cm *ConfigManager) GetConfig() *GocaConfig
- func (cm *ConfigManager) GetErrors() []ConfigError
- func (cm *ConfigManager) GetWarnings() []ConfigWarning
- func (cm *ConfigManager) LoadConfig(projectPath string) error
- func (cm *ConfigManager) LoadFromFile(filePath string) error
- func (cm *ConfigManager) MergeWithFlags(flags map[string]interface{})
- func (cm *ConfigManager) PrintSummary()
- func (cm *ConfigManager) SaveConfig(filePath string) error
- func (cm *ConfigManager) SetConfig(config *GocaConfig)
- func (cm *ConfigManager) ValidateConfig(config *GocaConfig) error
- type ConfigWarning
- type ConnectionConfig
- type CoverageConfig
- type DIConfig
- type DataGenerator
- type DatabaseConfig
- type DatabaseFeatureConfig
- type Dependency
- type DependencyManager
- func (dm *DependencyManager) AddDependency(dep Dependency) error
- func (dm *DependencyManager) CheckGoVersion(requiredVersion string) error
- func (dm *DependencyManager) CommonDependencies() map[string]Dependency
- func (dm *DependencyManager) DependencyExists(module string) (bool, error)
- func (dm *DependencyManager) GetRequiredDependenciesForFeature(featureType string, options map[string]bool) []Dependency
- func (dm *DependencyManager) PrintDependencySuggestions(suggestions []Dependency)
- func (dm *DependencyManager) SuggestDependencies(features []string) []Dependency
- func (dm *DependencyManager) UpdateGoMod() error
- func (dm *DependencyManager) VerifyDependencyVersions() error
- type DeployConfig
- type DockerConfig
- type DocumentationConfig
- type EntityData
- type EnvConfig
- type ErrorHandler
- func (e *ErrorHandler) HandleError(err error, context string)
- func (e *ErrorHandler) HandleErrorWithReturn(err error, context string) error
- func (e *ErrorHandler) HandleInfo(message string)
- func (e *ErrorHandler) HandleSuccess(message string)
- func (e *ErrorHandler) HandleValidationError(err error, field string)
- func (e *ErrorHandler) HandleWarning(message string, context string)
- func (e *ErrorHandler) ValidateRequiredFlag(value string, flagName string) error
- type FeatureConfig
- type FeatureFlags
- type Field
- type FieldData
- type FieldValidator
- func (v *FieldValidator) GenerateQueryMethodsForFields(entity string, fields []Field) []QueryMethod
- func (v *FieldValidator) ParseFieldsWithValidation(fields string) ([]Field, error)
- func (v *FieldValidator) ValidateDatabase(database string) error
- func (v *FieldValidator) ValidateEntityName(name string) error
- func (v *FieldValidator) ValidateField(fieldDef string) (*Field, error)
- func (v *FieldValidator) ValidateFieldName(name string) error
- func (v *FieldValidator) ValidateFieldType(fieldType string) error
- func (v *FieldValidator) ValidateFields(fields string) error
- func (v *FieldValidator) ValidateHandlers(handlers string) error
- func (v *FieldValidator) ValidateOperations(operations string) error
- func (v *FieldValidator) ValidateReservedNames(name string) error
- type FixtureConfig
- type GenerationConfig
- type GocaConfig
- type ImportConfig
- type KubernetesConfig
- type LayerConfig
- type LayersConfig
- type LoggingConfig
- type MarkdownConfig
- type MethodData
- type MigrationConfig
- type MockConfig
- type MonitoringConfig
- type NameConflictDetector
- type NamingConfig
- type ParamData
- type PluginConfig
- type PostmanConfig
- type ProjectConfig
- type ProjectTemplate
- type QueryMethod
- type SafetyManager
- func (sm *SafetyManager) BackupFile(filePath string) error
- func (sm *SafetyManager) CheckFileConflict(filePath string) error
- func (sm *SafetyManager) GetConflicts() []string
- func (sm *SafetyManager) GetCreatedFiles() []string
- func (sm *SafetyManager) PrintSummary()
- func (sm *SafetyManager) WriteFile(filePath, content string) error
- type SearchMethod
- type SecurityConfig
- type StyleConfig
- type SwaggerConfig
- type SwaggerTag
- type Template
- type TemplateBuilder
- type TemplateComponent
- type TemplateConfig
- type TemplateData
- type TemplateGenerator
- type TemplateManager
- func (tm *TemplateManager) ExecuteTemplate(name string, data interface{}) (string, error)
- func (tm *TemplateManager) ExecuteTemplateString(templateContent string, data interface{}) (string, error)
- func (tm *TemplateManager) GetAvailableTemplates() []string
- func (tm *TemplateManager) HasTemplate(name string) bool
- func (tm *TemplateManager) LoadTemplates() error
- type TestingConfig
- type ValidationConfig
- type ValidationData
Constants ¶
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
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
const ( DBPostgres = "postgres" DBPostgresJSON = "postgres-json" DBMySQL = "mysql" DBMongoDB = "mongodb" DBSQLite = "sqlite" DBSQLServer = "sqlserver" DBElasticsearch = "elasticsearch" DBDynamoDB = "dynamodb" )
Database constants
const ( HandlerHTTP = "http" HandlerGRPC = "grpc" HandlerCLI = "cli" HandlerWorker = "worker" )
Handler/Protocol constants
const ( OpCreate = "create" OpRead = "read" OpUpdate = "update" OpDelete = "delete" OpList = "list" )
Operation constants
const ( DefaultOperations = "create,read,update,delete,list" BasicOperations = "create,read" CRUDOperations = "create,read,update,delete" )
Default operation combinations
const ( APITypeRest = "rest" APITypeGraphQL = "graphql" APITypeGRPC = "grpc" )
API Types constants
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
const ( TemplateEntity = "entity" TemplateUseCase = "usecase" TemplateRepository = "repository" TemplateHandler = "handler" TemplateDI = "di" )
Template constants
const ( ExtGo = ".go" ExtYAML = ".yaml" ExtYML = ".yml" ExtJSON = ".json" ExtSQL = ".sql" )
File extensions
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
const ( MinFieldNameLength = 1 MaxFieldNameLength = 50 MinEntityNameLength = 1 MaxEntityNameLength = 50 )
Validation constants
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
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
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
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 ¶
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" )
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.
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
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
var ValidAPITypes = []string{APITypeRest, APITypeGraphQL, APITypeGRPC}
ValidAPITypes contains the list of supported API types for the CLI.
var ValidDatabases = []string{ DBPostgres, DBPostgresJSON, DBMySQL, DBMongoDB, DBSQLite, DBSQLServer, DBElasticsearch, DBDynamoDB, }
ValidDatabases contains the list of supported database types for the CLI.
var ValidFieldTypes = []string{ FieldString, FieldInt, FieldInt8, FieldInt16, FieldInt32, FieldInt64, FieldUint, FieldUint8, FieldUint16, FieldUint32, FieldUint64, FieldUintptr, FieldByte, FieldRune, FieldFloat32, FieldFloat64, FieldBool, FieldTime, FieldBytes, FieldInterface, }
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.
var ValidHandlers = []string{HandlerHTTP, HandlerGRPC, HandlerCLI, HandlerWorker}
ValidHandlers contains the list of supported handler types for the CLI.
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
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
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
ValidateTemplate validates a template string
func ValidateTemplateName ¶ added in v1.13.0
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
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 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
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 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
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
Source Files
¶
- automigrate.go
- command_validator.go
- config_debug.go
- config_integration.go
- config_manager.go
- config_types.go
- constants.go
- data_generator.go
- dependency_manager.go
- di.go
- entity.go
- entity_test_generator.go
- errors.go
- feature.go
- field_validator.go
- handler.go
- init.go
- integrate.go
- interfaces.go
- messages.go
- mocks.go
- project_templates.go
- repository.go
- root.go
- safety.go
- template_cmd.go
- template_components.go
- template_generator.go
- template_manager.go
- templates.go
- test_integration.go
- usecase.go
- utils.go
- version.go