You've already forked golang-saas-starter-kit
mirror of
https://github.com/raseels-repos/golang-saas-starter-kit.git
synced 2025-08-08 22:36:41 +02:00
80 lines
3.8 KiB
Cheetah
80 lines
3.8 KiB
Cheetah
{{ define "CreateRequest"}}
|
|
// {{ FormatCamel $.Model.Name }}CreateRequest contains information needed to create a new {{ FormatCamel $.Model.Name }}.
|
|
type {{ FormatCamel $.Model.Name }}CreateRequest struct {
|
|
{{ range $fk, $f := .Model.Fields }}{{ if and ($f.ApiCreate) (ne $f.FieldName $.Model.PrimaryField) }}{{ $optional := (FieldTagHasOption $f "validate" "omitempty") }}
|
|
{{ $f.FieldName }} {{ if and ($optional) (not $f.FieldIsPtr) }}*{{ end }}{{ $f.FieldType }} `json:"{{ $f.ColumnName }}" {{ FieldTag $f "validate" }}`
|
|
{{ end }}{{ end }}
|
|
}
|
|
{{ end }}
|
|
{{ define "UpdateRequest"}}
|
|
// {{ FormatCamel $.Model.Name }}UpdateRequest defines what information may be provided to modify an existing
|
|
// {{ FormatCamel $.Model.Name }}. All fields are optional so clients can send just the fields they want
|
|
// changed. It uses pointer fields so we can differentiate between a field that
|
|
// was not provided and a field that was provided as explicitly blank.
|
|
type {{ FormatCamel $.Model.Name }}UpdateRequest struct {
|
|
{{ range $fk, $f := .Model.Fields }}{{ if $f.ApiUpdate }}
|
|
{{ $f.FieldName }} {{ if and (ne $f.FieldName $.Model.PrimaryField) (not $f.FieldIsPtr) }}*{{ end }}{{ $f.FieldType }} `json:"{{ $f.ColumnName }}" {{ if ne $f.FieldName $.Model.PrimaryField }}{{ FieldTagReplaceOrPrepend $f "validate" "required" "omitempty" }}{{ else }}{{ FieldTagReplaceOrPrepend $f "validate" "omitempty" "required" }}{{ end }}`
|
|
{{ end }}{{ end }}
|
|
}
|
|
{{ end }}
|
|
{{ define "FindRequest"}}
|
|
// {{ FormatCamel $.Model.Name }}FindRequest defines the possible options to search for {{ FormatCamelPluralTitleLower $.Model.Name }}. By default
|
|
// archived {{ FormatCamelLowerTitle $.Model.Name }} will be excluded from response.
|
|
type {{ FormatCamel $.Model.Name }}FindRequest struct {
|
|
Where *string `schema:"where"`
|
|
Args []interface{} `schema:"args"`
|
|
Order []string `schema:"order"`
|
|
Limit *uint `schema:"limit"`
|
|
Offset *uint `schema:"offset"`
|
|
IncludedArchived bool
|
|
{{ $hasArchived := (StringListHasValue $.Model.ColumnNames "archived_at") }}{{ if $hasArchived }}IncludedArchived bool `schema:"included-archived"`{{ end }}
|
|
}
|
|
{{ end }}
|
|
{{ define "Enums"}}
|
|
{{ range $fk, $f := .Model.Fields }}{{ if $f.DbColumn }}{{ if $f.DbColumn.IsEnum }}
|
|
// {{ $f.FieldType }} represents the {{ $f.ColumnName }} of {{ FormatCamelLowerTitle $.Model.Name }}.
|
|
type {{ $f.FieldType }} string
|
|
|
|
// {{ $f.FieldType }} values define the {{ $f.ColumnName }} field of {{ FormatCamelLowerTitle $.Model.Name }}.
|
|
const (
|
|
{{ range $evk, $ev := $f.DbColumn.EnumValues }}
|
|
// {{ $f.FieldType }}_{{ FormatCamel $ev }} defines the {{ $f.ColumnName }} of {{ $ev }} for {{ FormatCamelLowerTitle $.Model.Name }}.
|
|
{{ $f.FieldType }}_{{ FormatCamel $ev }} {{ $f.FieldType }} = "{{ $ev }}"
|
|
{{ end }}
|
|
)
|
|
|
|
// {{ $f.FieldType }}_Values provides list of valid {{ $f.FieldType }} values.
|
|
var {{ $f.FieldType }}_Values = []{{ $f.FieldType }}{
|
|
{{ range $evk, $ev := $f.DbColumn.EnumValues }}
|
|
{{ $f.FieldType }}_{{ FormatCamel $ev }},
|
|
{{ end }}
|
|
}
|
|
|
|
// Scan supports reading the {{ $f.FieldType }} value from the database.
|
|
func (s *{{ $f.FieldType }}) Scan(value interface{}) error {
|
|
asBytes, ok := value.([]byte)
|
|
if !ok {
|
|
return errors.New("Scan source is not []byte")
|
|
}
|
|
*s = {{ $f.FieldType }}(string(asBytes))
|
|
return nil
|
|
}
|
|
|
|
// Value converts the {{ $f.FieldType }} value to be stored in the database.
|
|
func (s {{ $f.FieldType }}) Value() (driver.Value, error) {
|
|
v := validator.New()
|
|
|
|
errs := v.Var(s, "required,oneof={{ JoinStrings $f.DbColumn.EnumValues " " }}")
|
|
if errs != nil {
|
|
return nil, errs
|
|
}
|
|
|
|
return string(s), nil
|
|
}
|
|
|
|
// String converts the {{ $f.FieldType }} value to a string.
|
|
func (s {{ $f.FieldType }}) String() string {
|
|
return string(s)
|
|
}
|
|
{{ end }}{{ end }}{{ end }}
|
|
{{ end }} |