Added a global method to table generation (#79)
This commit is contained in:
parent
c9e627d333
commit
471499ea00
2 changed files with 47 additions and 3 deletions
|
|
@ -97,6 +97,14 @@ func new{{tableTemplate.TypeName}}Impl(schemaName, tableName, alias string) {{st
|
||||||
}
|
}
|
||||||
`
|
`
|
||||||
|
|
||||||
|
var tableSqlBuilderSetSchemaTemplate = `
|
||||||
|
func SetSchema(schema string) {
|
||||||
|
{{- range .}}
|
||||||
|
{{ .InstanceName }} = {{ .InstanceName }}.FromSchema(schema)
|
||||||
|
{{- end}}
|
||||||
|
}
|
||||||
|
`
|
||||||
|
|
||||||
var tableModelFileTemplate = `package {{package}}
|
var tableModelFileTemplate = `package {{package}}
|
||||||
|
|
||||||
{{ with modelImports }}
|
{{ with modelImports }}
|
||||||
|
|
|
||||||
|
|
@ -3,13 +3,15 @@ package template
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"path"
|
||||||
|
"strings"
|
||||||
|
"text/template"
|
||||||
|
|
||||||
"github.com/go-jet/jet/v2/generator/metadata"
|
"github.com/go-jet/jet/v2/generator/metadata"
|
||||||
"github.com/go-jet/jet/v2/internal/jet"
|
"github.com/go-jet/jet/v2/internal/jet"
|
||||||
"github.com/go-jet/jet/v2/internal/utils"
|
"github.com/go-jet/jet/v2/internal/utils"
|
||||||
"github.com/go-jet/jet/v2/internal/utils/throw"
|
"github.com/go-jet/jet/v2/internal/utils/throw"
|
||||||
"path"
|
|
||||||
"strings"
|
|
||||||
"text/template"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// ProcessSchema will process schema metadata and constructs go files using generator Template
|
// ProcessSchema will process schema metadata and constructs go files using generator Template
|
||||||
|
|
@ -61,6 +63,40 @@ func processSQLBuilder(dirPath string, dialect jet.Dialect, schemaMetaData metad
|
||||||
processTableSQLBuilder("table", sqlBuilderPath, dialect, schemaMetaData, schemaMetaData.TablesMetaData, sqlBuilderTemplate)
|
processTableSQLBuilder("table", sqlBuilderPath, dialect, schemaMetaData, schemaMetaData.TablesMetaData, sqlBuilderTemplate)
|
||||||
processTableSQLBuilder("view", sqlBuilderPath, dialect, schemaMetaData, schemaMetaData.ViewsMetaData, sqlBuilderTemplate)
|
processTableSQLBuilder("view", sqlBuilderPath, dialect, schemaMetaData, schemaMetaData.ViewsMetaData, sqlBuilderTemplate)
|
||||||
processEnumSQLBuilder(sqlBuilderPath, dialect, schemaMetaData.EnumsMetaData, sqlBuilderTemplate)
|
processEnumSQLBuilder(sqlBuilderPath, dialect, schemaMetaData.EnumsMetaData, sqlBuilderTemplate)
|
||||||
|
processTableSQLBuilderSetSchema(sqlBuilderPath, schemaMetaData.TablesMetaData, sqlBuilderTemplate)
|
||||||
|
}
|
||||||
|
|
||||||
|
func processTableSQLBuilderSetSchema(dirPath string, tablesMetadata []metadata.Table, builderTemplate SQLBuilder) {
|
||||||
|
if len(tablesMetadata) == 0 {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Println("Generating global `SetSchema` method...")
|
||||||
|
|
||||||
|
err := utils.EnsureDirPath(dirPath)
|
||||||
|
throw.OnError(err)
|
||||||
|
|
||||||
|
var builders []TableSQLBuilder
|
||||||
|
for _, tm := range tablesMetadata {
|
||||||
|
builders = append(builders, builderTemplate.Table(tm))
|
||||||
|
}
|
||||||
|
|
||||||
|
funcPath := path.Join(dirPath, builders[0].Path)
|
||||||
|
|
||||||
|
origText, err := os.ReadFile(path.Join(funcPath, builders[0].FileName+".go"))
|
||||||
|
throw.OnError(err)
|
||||||
|
|
||||||
|
text, err := generateTemplate(
|
||||||
|
tableSqlBuilderSetSchemaTemplate,
|
||||||
|
builders,
|
||||||
|
nil,
|
||||||
|
)
|
||||||
|
throw.OnError(err)
|
||||||
|
|
||||||
|
text = append(origText, text...)
|
||||||
|
|
||||||
|
err = utils.SaveGoFile(funcPath, builders[0].FileName, text)
|
||||||
|
throw.OnError(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
func processEnumSQLBuilder(dirPath string, dialect jet.Dialect, enumsMetaData []metadata.Enum, sqlBuilder SQLBuilder) {
|
func processEnumSQLBuilder(dirPath string, dialect jet.Dialect, enumsMetaData []metadata.Enum, sqlBuilder SQLBuilder) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue