refacto(models): Move models to the root of the project

This commit is contained in:
Matthieu 'JP' DERASSE
2022-08-09 15:53:40 +00:00
parent 1216fa071c
commit fbe19b4e31
19 changed files with 15 additions and 15 deletions

View 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
View 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"`
}

View 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"
)

View 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
}