jet/generator/templates.go

95 lines
2 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"
2019-04-04 13:07:21 +02:00
type {{camelize $.Name}} string
2019-04-03 19:21:46 +02:00
const (
{{- range $index, $element := .Values}}
2019-04-04 13:07:21 +02:00
{{camelize $.Name}}_{{camelize $element}} {{camelize $.Name}} = "{{$element}}"
2019-04-03 19:21:46 +02:00
{{- end}}
)
2019-04-04 13:07:21 +02:00
func (e *{{camelize $.Name}}) Scan(value interface{}) error {
2019-04-03 19:21:46 +02:00
if v, ok := value.(string); !ok {
2019-04-04 13:07:21 +02:00
return errors.New("Invalid data for {{camelize $.Name}} enum")
2019-04-03 19:21:46 +02:00
} else {
switch string(v) {
{{- range $index, $element := .Values}}
case "{{$element}}":
*e = {{camelize $.Name}}_{{camelize $element}}
{{- end}}
default:
2019-04-04 13:07:21 +02:00
return errors.New("Inavlid data " + string(v) + "for {{camelize $.Name}} enum")
2019-04-03 19:21:46 +02:00
}
return nil
}
}
`