refacto(models): Move models to the root of the project
This commit is contained in:
71
models/api_type_name_enum.go
Normal file
71
models/api_type_name_enum.go
Normal file
@ -0,0 +1,71 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
"github.com/juju/errors"
|
||||
)
|
||||
|
||||
// APITypeName is a type used as an enum for possible API Type Name.
|
||||
type APITypeName string
|
||||
|
||||
//nolint:exported // keeping the enum simple and redeable.
|
||||
const (
|
||||
APITypeName_GIN_GONIC APITypeName = "Gin Gonic"
|
||||
APITypeName_GO_SWAGGER APITypeName = "Go Swagger"
|
||||
APITypeName_MOJOLICIOUS APITypeName = "Mojolicious"
|
||||
APITypeName_NULL APITypeName = ""
|
||||
)
|
||||
|
||||
// GetListOfAPITypeName returns a list of APITypeName.
|
||||
func GetListOfAPITypeName() []APITypeName {
|
||||
return []APITypeName{
|
||||
APITypeName_GIN_GONIC,
|
||||
APITypeName_GO_SWAGGER,
|
||||
APITypeName_MOJOLICIOUS,
|
||||
}
|
||||
}
|
||||
|
||||
// IsValid validates enum values.
|
||||
func (e APITypeName) IsValid() bool {
|
||||
for _, v := range GetListOfAPITypeName() {
|
||||
if e == v {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
// NewAPITypeName return a APITypeName based on a given string.
|
||||
func NewAPITypeName(in string) (APITypeName, error) {
|
||||
out := APITypeName_NULL
|
||||
if in != "" {
|
||||
out = APITypeName(in)
|
||||
if !out.IsValid() {
|
||||
return APITypeName_NULL, errors.BadRequestf("Value %s invalid for enum APITypeName", in)
|
||||
}
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
// NewAPITypeNameFromInput will try to sluggify a given string and make it match with a APITypeName.
|
||||
func NewAPITypeNameFromInput(in string) (APITypeName, error) {
|
||||
in = strings.ToLower(in)
|
||||
in = strings.ReplaceAll(in, " ", "-")
|
||||
in = strings.ReplaceAll(in, "_", "-")
|
||||
|
||||
out := APITypeName_NULL
|
||||
if in != "" {
|
||||
for _, apiTypeName := range GetListOfAPITypeName() {
|
||||
apiTypeStr := strings.ToLower(string(apiTypeName))
|
||||
apiTypeStr = strings.ReplaceAll(apiTypeStr, " ", "-")
|
||||
apiTypeStr = strings.ReplaceAll(apiTypeStr, "_", "-")
|
||||
if in == apiTypeStr {
|
||||
return apiTypeName, nil
|
||||
}
|
||||
}
|
||||
return APITypeName_NULL, errors.BadRequestf("Value %s invalid for enum APITypeName", in)
|
||||
}
|
||||
return out, nil
|
||||
}
|
21
models/config.go
Normal file
21
models/config.go
Normal file
@ -0,0 +1,21 @@
|
||||
package models
|
||||
|
||||
// Config structure represent the main configuration of the project.
|
||||
type Config struct {
|
||||
ProjectName string `yaml:"project_name"`
|
||||
ProjectDescription string `yaml:"project_description"`
|
||||
ProjectOwner string `yaml:"project_owner"`
|
||||
ProjectType APITypeName `yaml:"project_type"`
|
||||
ModuleName *string `yaml:"module_name"`
|
||||
Features FeaturesConfig `yaml:"features"`
|
||||
}
|
||||
|
||||
// FeaturesConfig structure represent the configuration of all possible features.
|
||||
type FeaturesConfig struct {
|
||||
DatabaseModels DatabaseModelsConfig `yaml:"database_models"`
|
||||
}
|
||||
|
||||
// DatabaseModelsConfig structure represent the configuration of the Database Models feature.
|
||||
type DatabaseModelsConfig struct {
|
||||
Enabled bool `yaml:"enabled"`
|
||||
}
|
11
models/dependency_name_enum.go
Normal file
11
models/dependency_name_enum.go
Normal file
@ -0,0 +1,11 @@
|
||||
package models
|
||||
|
||||
// DependencyName is a type used as an enum for possible Dependency Name.
|
||||
type DependencyName string
|
||||
|
||||
//nolint:exported // keeping the enum simple and redeable.
|
||||
const (
|
||||
DependencyName_GIT DependencyName = "Git"
|
||||
DependencyName_GOLANG DependencyName = "Golang"
|
||||
DependencyName_GO_SWAGGER DependencyName = "Go Swagger"
|
||||
)
|
11
models/user_input_params.go
Normal file
11
models/user_input_params.go
Normal file
@ -0,0 +1,11 @@
|
||||
package models
|
||||
|
||||
// UserInputParams is a struct containing all fields that can be useful for project generation.
|
||||
type UserInputParams struct {
|
||||
DatabaseModels bool
|
||||
GoModuleName *string
|
||||
ProjectDescription string
|
||||
ProjectDirectory string
|
||||
ProjectName string
|
||||
ProjectOwner string
|
||||
}
|
Reference in New Issue
Block a user