2021-07-27 17:39:21 +02:00
|
|
|
package template
|
|
|
|
|
|
|
|
|
|
var autoGenWarningTemplate = `
|
|
|
|
|
//
|
|
|
|
|
// Code generated by go-jet DO NOT EDIT.
|
|
|
|
|
//
|
|
|
|
|
// WARNING: Changes to this file may cause incorrect behavior
|
|
|
|
|
// and will be lost if the code is regenerated
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
`
|
|
|
|
|
|
|
|
|
|
var tableSQLBuilderTemplate = `
|
|
|
|
|
{{define "column-list" -}}
|
|
|
|
|
{{- range $i, $c := . }}
|
|
|
|
|
{{- $field := columnField $c}}
|
|
|
|
|
{{- if gt $i 0 }}, {{end}}{{$field.Name}}Column
|
|
|
|
|
{{- end}}
|
|
|
|
|
{{- end}}
|
|
|
|
|
|
|
|
|
|
package {{package}}
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"github.com/go-jet/jet/v2/{{dialect.PackageName}}"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
var {{tableTemplate.InstanceName}} = new{{tableTemplate.TypeName}}("{{schemaName}}", "{{.Name}}", "")
|
|
|
|
|
|
|
|
|
|
type {{structImplName}} struct {
|
|
|
|
|
{{dialect.PackageName}}.Table
|
|
|
|
|
|
|
|
|
|
//Columns
|
|
|
|
|
{{- range $i, $c := .Columns}}
|
|
|
|
|
{{- $field := columnField $c}}
|
|
|
|
|
{{$field.Name}} {{dialect.PackageName}}.Column{{$field.Type}}
|
|
|
|
|
{{- end}}
|
|
|
|
|
|
|
|
|
|
AllColumns {{dialect.PackageName}}.ColumnList
|
|
|
|
|
MutableColumns {{dialect.PackageName}}.ColumnList
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type {{tableTemplate.TypeName}} struct {
|
|
|
|
|
{{structImplName}}
|
|
|
|
|
|
2022-08-23 12:23:46 +02:00
|
|
|
{{toUpper insertedRowAlias}} {{structImplName}}
|
2021-07-27 17:39:21 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// AS creates new {{tableTemplate.TypeName}} with assigned alias
|
|
|
|
|
func (a {{tableTemplate.TypeName}}) AS(alias string) *{{tableTemplate.TypeName}} {
|
|
|
|
|
return new{{tableTemplate.TypeName}}(a.SchemaName(), a.TableName(), alias)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Schema creates new {{tableTemplate.TypeName}} with assigned schema name
|
|
|
|
|
func (a {{tableTemplate.TypeName}}) FromSchema(schemaName string) *{{tableTemplate.TypeName}} {
|
|
|
|
|
return new{{tableTemplate.TypeName}}(schemaName, a.TableName(), a.Alias())
|
|
|
|
|
}
|
|
|
|
|
|
2022-03-16 22:47:34 +08:00
|
|
|
// WithPrefix creates new {{tableTemplate.TypeName}} with assigned table prefix
|
|
|
|
|
func (a {{tableTemplate.TypeName}}) WithPrefix(prefix string) *{{tableTemplate.TypeName}} {
|
|
|
|
|
return new{{tableTemplate.TypeName}}(a.SchemaName(), prefix+a.TableName(), a.TableName())
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// WithSuffix creates new {{tableTemplate.TypeName}} with assigned table suffix
|
|
|
|
|
func (a {{tableTemplate.TypeName}}) WithSuffix(suffix string) *{{tableTemplate.TypeName}} {
|
|
|
|
|
return new{{tableTemplate.TypeName}}(a.SchemaName(), a.TableName()+suffix, a.TableName())
|
|
|
|
|
}
|
|
|
|
|
|
2021-07-27 17:39:21 +02:00
|
|
|
func new{{tableTemplate.TypeName}}(schemaName, tableName, alias string) *{{tableTemplate.TypeName}} {
|
|
|
|
|
return &{{tableTemplate.TypeName}}{
|
|
|
|
|
{{structImplName}}: new{{tableTemplate.TypeName}}Impl(schemaName, tableName, alias),
|
2022-08-23 12:23:46 +02:00
|
|
|
{{toUpper insertedRowAlias}}: new{{tableTemplate.TypeName}}Impl("", "{{insertedRowAlias}}", ""),
|
2021-07-27 17:39:21 +02:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func new{{tableTemplate.TypeName}}Impl(schemaName, tableName, alias string) {{structImplName}} {
|
|
|
|
|
var (
|
|
|
|
|
{{- range $i, $c := .Columns}}
|
|
|
|
|
{{- $field := columnField $c}}
|
|
|
|
|
{{$field.Name}}Column = {{dialect.PackageName}}.{{$field.Type}}Column("{{$c.Name}}")
|
|
|
|
|
{{- end}}
|
|
|
|
|
allColumns = {{dialect.PackageName}}.ColumnList{ {{template "column-list" .Columns}} }
|
|
|
|
|
mutableColumns = {{dialect.PackageName}}.ColumnList{ {{template "column-list" .MutableColumns}} }
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
return {{structImplName}}{
|
|
|
|
|
Table: {{dialect.PackageName}}.NewTable(schemaName, tableName, alias, allColumns...),
|
|
|
|
|
|
|
|
|
|
//Columns
|
|
|
|
|
{{- range $i, $c := .Columns}}
|
|
|
|
|
{{- $field := columnField $c}}
|
|
|
|
|
{{$field.Name}}: {{$field.Name}}Column,
|
|
|
|
|
{{- end}}
|
|
|
|
|
|
|
|
|
|
AllColumns: allColumns,
|
|
|
|
|
MutableColumns: mutableColumns,
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
`
|
|
|
|
|
|
2022-12-02 23:02:44 +05:30
|
|
|
var tableSqlBuilderSetSchemaTemplate = `package {{package}}
|
|
|
|
|
|
2022-12-04 20:33:55 +05:30
|
|
|
// {{schemaMethodName}} changes all global tables/views with the value returned
|
|
|
|
|
// returned by calling FromSchema on them. Passing an empty string to this function
|
|
|
|
|
// will cause queries to be generated without any table/view alias.
|
|
|
|
|
func {{schemaMethodName}}(schema string) {
|
2022-12-01 11:54:14 +05:30
|
|
|
{{- range .}}
|
|
|
|
|
{{ .InstanceName }} = {{ .InstanceName }}.FromSchema(schema)
|
|
|
|
|
{{- end}}
|
|
|
|
|
}
|
|
|
|
|
`
|
|
|
|
|
|
2021-07-27 17:39:21 +02:00
|
|
|
var tableModelFileTemplate = `package {{package}}
|
|
|
|
|
|
|
|
|
|
{{ with modelImports }}
|
|
|
|
|
import (
|
|
|
|
|
{{- range .}}
|
|
|
|
|
"{{.}}"
|
|
|
|
|
{{- end}}
|
|
|
|
|
)
|
|
|
|
|
{{end}}
|
|
|
|
|
|
|
|
|
|
{{$modelTableTemplate := tableTemplate}}
|
|
|
|
|
type {{$modelTableTemplate.TypeName}} struct {
|
|
|
|
|
{{- range .Columns}}
|
|
|
|
|
{{- $field := structField .}}
|
|
|
|
|
{{$field.Name}} {{$field.Type.Name}} ` + "{{$field.TagsString}}" + `
|
|
|
|
|
{{- end}}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
`
|
|
|
|
|
|
|
|
|
|
var enumSQLBuilderTemplate = `package {{package}}
|
|
|
|
|
|
|
|
|
|
import "github.com/go-jet/jet/v2/{{dialect.PackageName}}"
|
|
|
|
|
|
|
|
|
|
var {{enumTemplate.InstanceName}} = &struct {
|
|
|
|
|
{{- range $index, $value := .Values}}
|
|
|
|
|
{{enumValueName $value}} {{dialect.PackageName}}.StringExpression
|
|
|
|
|
{{- end}}
|
|
|
|
|
} {
|
|
|
|
|
{{- range $index, $value := .Values}}
|
|
|
|
|
{{enumValueName $value}}: {{dialect.PackageName}}.NewEnumValue("{{$value}}"),
|
|
|
|
|
{{- end}}
|
|
|
|
|
}
|
|
|
|
|
`
|
|
|
|
|
|
|
|
|
|
var enumModelTemplate = `package {{package}}
|
|
|
|
|
{{- $enumTemplate := enumTemplate}}
|
|
|
|
|
|
|
|
|
|
import "errors"
|
|
|
|
|
|
|
|
|
|
type {{$enumTemplate.TypeName}} string
|
|
|
|
|
|
|
|
|
|
const (
|
|
|
|
|
{{- range $_, $value := .Values}}
|
|
|
|
|
{{valueName $value}} {{$enumTemplate.TypeName}} = "{{$value}}"
|
|
|
|
|
{{- end}}
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func (e *{{$enumTemplate.TypeName}}) Scan(value interface{}) error {
|
2021-10-15 17:43:10 +02:00
|
|
|
var enumValue string
|
|
|
|
|
switch val := value.(type) {
|
|
|
|
|
case string:
|
|
|
|
|
enumValue = val
|
|
|
|
|
case []byte:
|
|
|
|
|
enumValue = string(val)
|
|
|
|
|
default:
|
|
|
|
|
return errors.New("jet: Invalid scan value for AllTypesEnum enum. Enum value has to be of type string or []byte")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
switch enumValue {
|
2021-07-27 17:39:21 +02:00
|
|
|
{{- range $_, $value := .Values}}
|
2021-10-15 17:43:10 +02:00
|
|
|
case "{{$value}}":
|
|
|
|
|
*e = {{valueName $value}}
|
2021-07-27 17:39:21 +02:00
|
|
|
{{- end}}
|
2021-10-15 17:43:10 +02:00
|
|
|
default:
|
|
|
|
|
return errors.New("jet: Invalid scan value '" + enumValue + "' for {{$enumTemplate.TypeName}} enum")
|
2021-07-27 17:39:21 +02:00
|
|
|
}
|
2021-10-15 17:43:10 +02:00
|
|
|
|
|
|
|
|
return nil
|
2021-07-27 17:39:21 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (e {{$enumTemplate.TypeName}}) String() string {
|
|
|
|
|
return string(e)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
`
|