Break utils package into subpackages.

This commit is contained in:
go-jet 2023-07-21 14:11:31 +02:00
parent 06ecd73f67
commit d7a5adb239
25 changed files with 276 additions and 318 deletions

View file

@ -8,7 +8,6 @@ import (
"github.com/go-jet/jet/v2/generator/metadata"
"github.com/go-jet/jet/v2/generator/template"
"github.com/go-jet/jet/v2/internal/utils"
"github.com/go-jet/jet/v2/mysql"
mysqldr "github.com/go-sql-driver/mysql"
)
@ -35,7 +34,7 @@ func Generate(destDir string, dbConn DBConnection, generatorTemplate ...template
if err != nil {
return fmt.Errorf("failed to open db connection: %w", err)
}
defer utils.DBClose(db)
defer db.Close()
err = generate(db, dbConn.DBName, destDir, generatorTemplate...)
if err != nil {
@ -67,7 +66,7 @@ func GenerateDSN(dsn, destDir string, templates ...template.Template) error {
if err != nil {
return fmt.Errorf("failed to open db connection: %w", err)
}
defer utils.DBClose(db)
defer db.Close()
err = generate(db, cfg.DBName, destDir, templates...)
if err != nil {

View file

@ -9,7 +9,6 @@ import (
"github.com/go-jet/jet/v2/generator/metadata"
"github.com/go-jet/jet/v2/generator/template"
"github.com/go-jet/jet/v2/internal/utils"
"github.com/go-jet/jet/v2/postgres"
"github.com/jackc/pgconn"
)
@ -54,7 +53,7 @@ func GenerateDSN(dsn, schema, destDir string, templates ...template.Template) er
if err != nil {
return fmt.Errorf("failed to open db connection: %w", err)
}
defer utils.DBClose(db)
defer db.Close()
fmt.Println("Retrieving schema information...")
generatorTemplate := template.Default(postgres.Dialect)

View file

@ -5,7 +5,6 @@ import (
"fmt"
"github.com/go-jet/jet/v2/generator/metadata"
"github.com/go-jet/jet/v2/generator/template"
"github.com/go-jet/jet/v2/internal/utils"
"github.com/go-jet/jet/v2/sqlite"
)
@ -15,7 +14,7 @@ func GenerateDSN(dsn, destDir string, templates ...template.Template) error {
if err != nil {
return fmt.Errorf("failed to open sqlite connection: %w", err)
}
defer utils.DBClose(db)
defer db.Close()
fmt.Println("Retrieving schema information...")

View file

@ -3,7 +3,7 @@ package template
import (
"fmt"
"github.com/go-jet/jet/v2/generator/metadata"
"github.com/go-jet/jet/v2/internal/utils"
"github.com/go-jet/jet/v2/internal/utils/dbidentifier"
"github.com/google/uuid"
"path"
"reflect"
@ -77,8 +77,8 @@ var DefaultViewModel = DefaultTableModel
// DefaultTableModel is default table template implementation
func DefaultTableModel(tableMetaData metadata.Table) TableModel {
return TableModel{
FileName: utils.ToGoFileName(tableMetaData.Name),
TypeName: utils.ToGoIdentifier(tableMetaData.Name),
FileName: dbidentifier.ToGoFileName(tableMetaData.Name),
TypeName: dbidentifier.ToGoIdentifier(tableMetaData.Name),
Field: DefaultTableModelField,
}
}
@ -142,13 +142,13 @@ func (em EnumModel) UseTypeName(typeName string) EnumModel {
// DefaultEnumModel returns default implementation for EnumModel
func DefaultEnumModel(enumMetaData metadata.Enum) EnumModel {
typeName := utils.ToGoIdentifier(enumMetaData.Name)
typeName := dbidentifier.ToGoIdentifier(enumMetaData.Name)
return EnumModel{
FileName: utils.ToGoFileName(enumMetaData.Name),
FileName: dbidentifier.ToGoFileName(enumMetaData.Name),
TypeName: typeName,
ValueName: func(value string) string {
return typeName + "_" + utils.ToGoIdentifier(value)
return typeName + "_" + dbidentifier.ToGoIdentifier(value)
},
}
}
@ -169,7 +169,7 @@ func DefaultTableModelField(columnMetaData metadata.Column) TableModelField {
}
return TableModelField{
Name: utils.ToGoIdentifier(columnMetaData.Name),
Name: dbidentifier.ToGoIdentifier(columnMetaData.Name),
Type: getType(columnMetaData),
Tags: tags,
}
@ -247,7 +247,7 @@ func getType(columnMetadata metadata.Column) Type {
func getUserDefinedType(column metadata.Column) string {
switch column.DataType.Kind {
case metadata.EnumType:
return utils.ToGoIdentifier(column.DataType.Name)
return dbidentifier.ToGoIdentifier(column.DataType.Name)
case metadata.UserDefinedType, metadata.ArrayType:
return "string"
}

View file

@ -4,13 +4,13 @@ import (
"bytes"
"errors"
"fmt"
"github.com/go-jet/jet/v2/internal/utils/filesys"
"path"
"strings"
"text/template"
"github.com/go-jet/jet/v2/generator/metadata"
"github.com/go-jet/jet/v2/internal/jet"
"github.com/go-jet/jet/v2/internal/utils"
)
// ProcessSchema will process schema metadata and constructs go files using generator Template
@ -24,7 +24,7 @@ func ProcessSchema(dirPath string, schemaMetaData metadata.Schema, generatorTemp
fmt.Println("Destination directory:", schemaPath)
fmt.Println("Cleaning up destination directory...")
err := utils.CleanUpGeneratedFiles(schemaPath)
err := filesys.RemoveDir(schemaPath)
if err != nil {
return errors.New("failed to cleanup generated files")
}
@ -52,7 +52,7 @@ func processModel(dirPath string, schemaMetaData metadata.Schema, schemaTemplate
modelDirPath := path.Join(dirPath, modelTemplate.Path)
err := utils.EnsureDirPath(modelDirPath)
err := filesys.EnsureDirPathExist(modelDirPath)
if err != nil {
return fmt.Errorf("destination dir path does not exist: %w", err)
}
@ -119,7 +119,7 @@ func processEnumSQLBuilder(dirPath string, dialect jet.Dialect, enumsMetaData []
enumSQLBuilderPath := path.Join(dirPath, enumTemplate.Path)
err := utils.EnsureDirPath(enumSQLBuilderPath)
err := filesys.EnsureDirPathExist(enumSQLBuilderPath)
if err != nil {
return fmt.Errorf("failed to create enum sql builder directory - %s: %w", enumSQLBuilderPath, err)
}
@ -145,7 +145,7 @@ func processEnumSQLBuilder(dirPath string, dialect jet.Dialect, enumsMetaData []
return fmt.Errorf("failed to generete enum type %s: %w", enumTemplate.FileName, err)
}
err = utils.SaveGoFile(enumSQLBuilderPath, enumTemplate.FileName, text)
err = filesys.FormatAndSaveGoFile(enumSQLBuilderPath, enumTemplate.FileName, text)
if err != nil {
return fmt.Errorf("failed to format and save '%s' enum type : %w", enumTemplate.FileName, err)
}
@ -183,7 +183,7 @@ func processTableSQLBuilder(fileTypes, dirPath string,
tableSQLBuilderPath := path.Join(dirPath, tableSQLBuilder.Path)
err := utils.EnsureDirPath(tableSQLBuilderPath)
err := filesys.EnsureDirPathExist(tableSQLBuilderPath)
if err != nil {
return fmt.Errorf("failed to create table sql builder directory - %s: %w", tableSQLBuilderPath, err)
}
@ -220,7 +220,7 @@ func processTableSQLBuilder(fileTypes, dirPath string,
return fmt.Errorf("failed to generate table sql builder type %s: %w", tableSQLBuilder.TypeName, err)
}
err = utils.SaveGoFile(tableSQLBuilderPath, tableSQLBuilder.FileName, text)
err = filesys.FormatAndSaveGoFile(tableSQLBuilderPath, tableSQLBuilder.FileName, text)
if err != nil {
return fmt.Errorf("failed to format and save generated sql builder type '%s': %w", tableSQLBuilder.FileName, err)
}
@ -256,7 +256,7 @@ func generateUseSchemaFunc(dirPath, fileTypes string, builders []TableSQLBuilder
basePath := path.Join(dirPath, builders[0].Path)
fileName := fileTypes + "_use_schema"
err = utils.SaveGoFile(basePath, fileName, text)
err = filesys.FormatAndSaveGoFile(basePath, fileName, text)
if err != nil {
return fmt.Errorf("failed to save %s file: %w", fileName, err)
}
@ -312,7 +312,7 @@ func processTableModels(fileTypes, modelDirPath string, tablesMetaData []metadat
return fmt.Errorf("failed to generate model type '%s': %w", tableMetaData.Name, err)
}
err = utils.SaveGoFile(modelDirPath, tableTemplate.FileName, text)
err = filesys.FormatAndSaveGoFile(modelDirPath, tableTemplate.FileName, text)
if err != nil {
return fmt.Errorf("failed to save '%s' model type: %w", tableTemplate.FileName, err)
}
@ -353,7 +353,7 @@ func processEnumModels(modelDir string, enumsMetaData []metadata.Enum, modelTemp
return fmt.Errorf("failed to generate enum type '%s': %w", enumMetaData.Name, err)
}
err = utils.SaveGoFile(modelDir, enumTemplate.FileName, text)
err = filesys.FormatAndSaveGoFile(modelDir, enumTemplate.FileName, text)
if err != nil {
return fmt.Errorf("failed to save '%s' enum type: %w", enumTemplate.FileName, err)
}

View file

@ -3,7 +3,7 @@ package template
import (
"fmt"
"github.com/go-jet/jet/v2/generator/metadata"
"github.com/go-jet/jet/v2/internal/utils"
"github.com/go-jet/jet/v2/internal/utils/dbidentifier"
"path"
"strings"
"unicode"
@ -69,9 +69,9 @@ type ViewSQLBuilder = TableSQLBuilder
func DefaultTableSQLBuilder(tableMetaData metadata.Table) TableSQLBuilder {
return TableSQLBuilder{
Path: "/table",
FileName: utils.ToGoFileName(tableMetaData.Name),
InstanceName: utils.ToGoIdentifier(tableMetaData.Name),
TypeName: utils.ToGoIdentifier(tableMetaData.Name) + "Table",
FileName: dbidentifier.ToGoFileName(tableMetaData.Name),
InstanceName: dbidentifier.ToGoIdentifier(tableMetaData.Name),
TypeName: dbidentifier.ToGoIdentifier(tableMetaData.Name) + "Table",
Column: DefaultTableSQLBuilderColumn,
}
}
@ -127,7 +127,7 @@ type TableSQLBuilderColumn struct {
// DefaultTableSQLBuilderColumn returns default implementation of TableSQLBuilderColumn
func DefaultTableSQLBuilderColumn(columnMetaData metadata.Column) TableSQLBuilderColumn {
return TableSQLBuilderColumn{
Name: utils.ToGoIdentifier(columnMetaData.Name),
Name: dbidentifier.ToGoIdentifier(columnMetaData.Name),
Type: getSqlBuilderColumnType(columnMetaData),
}
}
@ -185,8 +185,8 @@ type EnumSQLBuilder struct {
func DefaultEnumSQLBuilder(enumMetaData metadata.Enum) EnumSQLBuilder {
return EnumSQLBuilder{
Path: "/enum",
FileName: utils.ToGoFileName(enumMetaData.Name),
InstanceName: utils.ToGoIdentifier(enumMetaData.Name),
FileName: dbidentifier.ToGoFileName(enumMetaData.Name),
InstanceName: dbidentifier.ToGoIdentifier(enumMetaData.Name),
ValueName: func(enumValue string) string {
return defaultEnumValueName(enumMetaData.Name, enumValue)
},
@ -217,9 +217,9 @@ func (e EnumSQLBuilder) UseInstanceName(name string) EnumSQLBuilder {
}
func defaultEnumValueName(enumName, enumValue string) string {
enumValueName := utils.ToGoIdentifier(enumValue)
enumValueName := dbidentifier.ToGoIdentifier(enumValue)
if !unicode.IsLetter([]rune(enumValueName)[0]) {
return utils.ToGoIdentifier(enumName) + enumValueName
return dbidentifier.ToGoIdentifier(enumName) + enumValueName
}
return enumValueName