{{- if .IsAdd}}
// 在 model.{{.StructName}} 结构体中新增如下字段
{{- range .Fields}}
{{ GenerateModelField . }}
{{- end }}

{{ else }}
// Code generated by KRA AutoCode. DO NOT EDIT.
// 自动生成模板 {{.StructName}}
package model

import (
{{- if .GvaModel }}
	"time"

	"gorm.io/gorm"
{{- else }}
	{{- if or .HasTimer }}
	"time"
	{{- end }}
	{{- if .NeedJSON }}
	"gorm.io/datatypes"
	{{- end }}
{{- end }}
)

const TableName{{.StructName}} = "{{.TableName}}"

// {{.StructName}} {{.Description}}
// mapped from table <{{.TableName}}>
type {{.StructName}} struct {
{{- if .GvaModel }}
	ID        int64          `gorm:"column:id;type:bigint(20) unsigned;primaryKey;autoIncrement:true" json:"id"`
	CreatedAt time.Time      `gorm:"column:created_at;type:datetime(3)" json:"created_at"`
	UpdatedAt time.Time      `gorm:"column:updated_at;type:datetime(3)" json:"updated_at"`
	DeletedAt gorm.DeletedAt `gorm:"column:deleted_at;type:datetime(3);index:idx_{{.TableName}}_deleted_at,priority:1" json:"deleted_at"`
{{- else }}
	{{- with .PrimaryField}}
	{{.FieldName}} int64 `gorm:"column:{{.ColumnName}};type:bigint(20) unsigned;primaryKey;autoIncrement:true" json:"{{.FieldJson}}"` // {{.FieldDesc}}
	{{- end}}
{{- end }}
{{- range .Fields}}
	{{- if not .PrimaryKey}}
	{{ GenerateModelField . }}
	{{- end}}
{{- end }}
{{- if .AutoCreateResource }}
	CreatedBy int64 `gorm:"column:created_by;type:bigint(20) unsigned;comment:创建者" json:"created_by"` // 创建者
	UpdatedBy int64 `gorm:"column:updated_by;type:bigint(20) unsigned;comment:更新者" json:"updated_by"` // 更新者
	DeletedBy int64 `gorm:"column:deleted_by;type:bigint(20) unsigned;comment:删除者" json:"deleted_by"` // 删除者
{{- end }}
{{- if .IsTree }}
	ParentID int64          `gorm:"column:parent_id;type:bigint(20);comment:父节点ID" json:"parent_id"` // 父节点ID
	Children []*{{.StructName}} `gorm:"-" json:"children"`                                                // 子节点
{{- end }}
}

// TableName {{.StructName}}'s table name
func (*{{.StructName}}) TableName() string {
	return TableName{{.StructName}}
}

{{- if .IsTree }}

// GetChildren 实现 TreeNode 接口
func (s *{{.StructName}}) GetChildren() []*{{.StructName}} {
	return s.Children
}

// SetChildren 实现 TreeNode 接口
func (s *{{.StructName}}) SetChildren(child *{{.StructName}}) {
	s.Children = append(s.Children, child)
}

// GetID 实现 TreeNode 接口
func (s *{{.StructName}}) GetID() int {
	return int(s.{{- if .GvaModel}}ID{{- else}}{{.PrimaryField.FieldName}}{{- end}})
}

// GetParentID 实现 TreeNode 接口
func (s *{{.StructName}}) GetParentID() int {
	return int(s.ParentID)
}
{{- end }}

{{ end }}
