jet/generator/templates.go

95 lines
1.9 KiB
Go
Raw Normal View History

package generator
var SqlBuilderTableTemplate = `package table
2019-03-16 20:41:06 +01:00
import (
"github.com/sub0Zero/go-sqlbuilder/sqlbuilder"
)
type {{.ToGoStructName}} struct {
sqlbuilder.Table
//Columns
{{- range .Columns}}
{{.ToGoFieldName}} *sqlbuilder.{{.ToSqlBuilderColumnType}}
{{- end}}
2019-03-15 21:25:24 +01:00
AllColumns sqlbuilder.ColumnList
}
2019-03-16 20:41:06 +01:00
var {{.ToGoVarName}} = new{{.ToGoStructName}}()
func new{{.ToGoStructName}}() *{{.ToGoStructName}} {
var (
{{- range .Columns}}
{{.ToGoVarName}} = sqlbuilder.New{{.ToSqlBuilderColumnType}}("{{.Name}}", {{if .IsNullable}}sqlbuilder.Nullable{{else}}sqlbuilder.NotNullable{{end}})
2019-03-16 20:41:06 +01:00
{{- end}}
)
return &{{.ToGoStructName}}{
Table: *sqlbuilder.NewTable("{{.DatabaseInfo.SchemaName}}", "{{.Name}}", {{.ToGoColumnFieldList ", "}}),
//Columns
{{- range .Columns}}
2019-03-16 20:41:06 +01:00
{{.ToGoFieldName}}: {{.ToGoVarName}},
{{- end}}
2019-03-16 20:41:06 +01:00
AllColumns: sqlbuilder.ColumnList{ {{.ToGoColumnFieldList ", "}} },
}
}
func (a *{{.ToGoStructName}}) As(alias string) *{{.ToGoStructName}} {
aliasTable := new{{.ToGoStructName}}()
aliasTable.Table.SetAlias(alias)
return aliasTable
}
`
var DataModelTemplate = `package model
{{range .GetImports}}
import "{{.}}"
{{end}}
type {{.ToGoModelStructName}} struct {
{{- range .Columns}}
{{.ToGoDMFieldName}} {{.ToGoType}} {{if .IsUnique}}` + "`sql:\"unique\"`" + ` {{end}}
{{- end}}
}
`
2019-04-03 19:21:46 +02:00
var EnumModelTemplate = `package model
import "errors"
type {{.Name}} string
const (
{{- range $index, $element := .Values}}
{{camelize $.Name}}_{{camelize $element}} {{$.Name}} = "{{$element}}"
{{- end}}
)
func (e *{{$.Name}}) Scan(value interface{}) error {
if v, ok := value.(string); !ok {
return errors.New("Invalid data for {{$.Name}} enum")
} else {
switch string(v) {
{{- range $index, $element := .Values}}
case "{{$element}}":
*e = {{camelize $.Name}}_{{camelize $element}}
{{- end}}
default:
return errors.New("Inavlid data " + string(v) + "for {{$.Name}} enum")
}
return nil
}
}
`