github.com/Ali-iotechsys/sqlboiler/v4@v4.0.0-20221208124957-6aec9a5f1f71/templates/main/00_struct.go.tpl (about) 1 {{- $alias := .Aliases.Table .Table.Name -}} 2 {{- $orig_tbl_name := .Table.Name -}} 3 4 // {{$alias.UpSingular}} is an object representing the database table. 5 type {{$alias.UpSingular}} struct { 6 {{- range $column := .Table.Columns -}} 7 {{- $colAlias := $alias.Column $column.Name -}} 8 {{- $orig_col_name := $column.Name -}} 9 {{- range $column.Comment | splitLines -}} // {{ . }} 10 {{end -}} 11 {{if ignore $orig_tbl_name $orig_col_name $.TagIgnore -}} 12 {{$colAlias}} {{$column.Type}} `{{generateIgnoreTags $.Tags}}boil:"{{$column.Name}}" json:"-" toml:"-" yaml:"-"` 13 {{else if eq $.StructTagCasing "title" -}} 14 {{$colAlias}} {{$column.Type}} `{{generateTags $.Tags $column.Name}}boil:"{{$column.Name}}" json:"{{$column.Name | titleCase}}{{if $column.Nullable}},omitempty{{end}}" toml:"{{$column.Name | titleCase}}" yaml:"{{$column.Name | titleCase}}{{if $column.Nullable}},omitempty{{end}}"` 15 {{else if eq $.StructTagCasing "camel" -}} 16 {{$colAlias}} {{$column.Type}} `{{generateTags $.Tags $column.Name}}boil:"{{$column.Name}}" json:"{{$column.Name | camelCase}}{{if $column.Nullable}},omitempty{{end}}" toml:"{{$column.Name | camelCase}}" yaml:"{{$column.Name | camelCase}}{{if $column.Nullable}},omitempty{{end}}"` 17 {{else if eq $.StructTagCasing "alias" -}} 18 {{$colAlias}} {{$column.Type}} `{{generateTags $.Tags $colAlias}}boil:"{{$column.Name}}" json:"{{$colAlias}}{{if $column.Nullable}},omitempty{{end}}" toml:"{{$colAlias}}" yaml:"{{$colAlias}}{{if $column.Nullable}},omitempty{{end}}"` 19 {{else -}} 20 {{$colAlias}} {{$column.Type}} `{{generateTags $.Tags $column.Name}}boil:"{{$column.Name}}" json:"{{$column.Name}}{{if $column.Nullable}},omitempty{{end}}" toml:"{{$column.Name}}" yaml:"{{$column.Name}}{{if $column.Nullable}},omitempty{{end}}"` 21 {{end -}} 22 {{end -}} 23 {{- if or .Table.IsJoinTable .Table.IsView -}} 24 {{- else}} 25 R *{{$alias.DownSingular}}R `{{generateTags $.Tags $.RelationTag}}boil:"{{$.RelationTag}}" json:"{{$.RelationTag}}" toml:"{{$.RelationTag}}" yaml:"{{$.RelationTag}}"` 26 L {{$alias.DownSingular}}L `{{generateIgnoreTags $.Tags}}boil:"-" json:"-" toml:"-" yaml:"-"` 27 {{end -}} 28 } 29 30 var {{$alias.UpSingular}}Columns = struct { 31 {{range $column := .Table.Columns -}} 32 {{- $colAlias := $alias.Column $column.Name -}} 33 {{$colAlias}} string 34 {{end -}} 35 }{ 36 {{range $column := .Table.Columns -}} 37 {{- $colAlias := $alias.Column $column.Name -}} 38 {{$colAlias}}: "{{$column.Name}}", 39 {{end -}} 40 } 41 42 var {{$alias.UpSingular}}TableColumns = struct { 43 {{range $column := .Table.Columns -}} 44 {{- $colAlias := $alias.Column $column.Name -}} 45 {{$colAlias}} string 46 {{end -}} 47 }{ 48 {{range $column := .Table.Columns -}} 49 {{- $colAlias := $alias.Column $column.Name -}} 50 {{$colAlias}}: "{{$orig_tbl_name}}.{{$column.Name}}", 51 {{end -}} 52 } 53 54 {{/* Generated where helpers for all types in the database */}} 55 // Generated where 56 {{- range .Table.Columns -}} 57 {{- if (oncePut $.DBTypes .Type)}} 58 {{$name := printf "whereHelper%s" (goVarname .Type)}} 59 type {{$name}} struct { field string } 60 func (w {{$name}}) EQ(x {{.Type}}) qm.QueryMod { return qmhelper.Where{{if .Nullable}}NullEQ(w.field, false, x){{else}}(w.field, qmhelper.EQ, x){{end}} } 61 func (w {{$name}}) NEQ(x {{.Type}}) qm.QueryMod { return qmhelper.Where{{if .Nullable}}NullEQ(w.field, true, x){{else}}(w.field, qmhelper.NEQ, x){{end}} } 62 func (w {{$name}}) LT(x {{.Type}}) qm.QueryMod { return qmhelper.Where(w.field, qmhelper.LT, x) } 63 func (w {{$name}}) LTE(x {{.Type}}) qm.QueryMod { return qmhelper.Where(w.field, qmhelper.LTE, x) } 64 func (w {{$name}}) GT(x {{.Type}}) qm.QueryMod { return qmhelper.Where(w.field, qmhelper.GT, x) } 65 func (w {{$name}}) GTE(x {{.Type}}) qm.QueryMod { return qmhelper.Where(w.field, qmhelper.GTE, x) } 66 {{if or (isPrimitive .Type) (isNullPrimitive .Type) (isEnumDBType .DBType) -}} 67 func (w {{$name}}) IN(slice []{{convertNullToPrimitive .Type}}) qm.QueryMod { 68 values := make([]interface{}, 0, len(slice)) 69 for _, value := range slice { 70 values = append(values, value) 71 } 72 return qm.WhereIn(fmt.Sprintf("%s IN ?", w.field), values...) 73 } 74 func (w {{$name}}) NIN(slice []{{convertNullToPrimitive .Type}}) qm.QueryMod { 75 values := make([]interface{}, 0, len(slice)) 76 for _, value := range slice { 77 values = append(values, value) 78 } 79 return qm.WhereNotIn(fmt.Sprintf("%s NOT IN ?", w.field), values...) 80 } 81 {{end -}} 82 {{end -}} 83 {{if .Nullable -}} 84 {{- if (oncePut $.DBTypes (printf "%s.null" .Type))}} 85 {{$name := printf "whereHelper%s" (goVarname .Type)}} 86 func (w {{$name}}) IsNull() qm.QueryMod { return qmhelper.WhereIsNull(w.field) } 87 func (w {{$name}}) IsNotNull() qm.QueryMod { return qmhelper.WhereIsNotNull(w.field) } 88 {{end -}} 89 {{end -}} 90 {{- end}} 91 92 var {{$alias.UpSingular}}Where = struct { 93 {{range $column := .Table.Columns -}} 94 {{- $colAlias := $alias.Column $column.Name -}} 95 {{$colAlias}} whereHelper{{goVarname $column.Type}} 96 {{end -}} 97 }{ 98 {{range $column := .Table.Columns -}} 99 {{- $colAlias := $alias.Column $column.Name -}} 100 {{$colAlias}}: whereHelper{{goVarname $column.Type}}{field: "{{$.Table.Name | $.SchemaTable}}.{{$column.Name | $.Quotes}}"}, 101 {{end -}} 102 } 103 104 {{if or .Table.IsJoinTable .Table.IsView -}} 105 {{- else -}} 106 // {{$alias.UpSingular}}Rels is where relationship names are stored. 107 var {{$alias.UpSingular}}Rels = struct { 108 {{range .Table.FKeys -}} 109 {{- $relAlias := $alias.Relationship .Name -}} 110 {{$relAlias.Foreign}} string 111 {{end -}} 112 113 {{range .Table.ToOneRelationships -}} 114 {{- $ftable := $.Aliases.Table .ForeignTable -}} 115 {{- $relAlias := $ftable.Relationship .Name -}} 116 {{$relAlias.Local}} string 117 {{end -}} 118 119 {{range .Table.ToManyRelationships -}} 120 {{- $relAlias := $.Aliases.ManyRelationship .ForeignTable .Name .JoinTable .JoinLocalFKeyName -}} 121 {{$relAlias.Local}} string 122 {{end -}}{{/* range tomany */}} 123 }{ 124 {{range .Table.FKeys -}} 125 {{- $relAlias := $alias.Relationship .Name -}} 126 {{$relAlias.Foreign}}: "{{$relAlias.Foreign}}", 127 {{end -}} 128 129 {{range .Table.ToOneRelationships -}} 130 {{- $ftable := $.Aliases.Table .ForeignTable -}} 131 {{- $relAlias := $ftable.Relationship .Name -}} 132 {{$relAlias.Local}}: "{{$relAlias.Local}}", 133 {{end -}} 134 135 {{range .Table.ToManyRelationships -}} 136 {{- $relAlias := $.Aliases.ManyRelationship .ForeignTable .Name .JoinTable .JoinLocalFKeyName -}} 137 {{$relAlias.Local}}: "{{$relAlias.Local}}", 138 {{end -}}{{/* range tomany */}} 139 } 140 141 // {{$alias.DownSingular}}R is where relationships are stored. 142 type {{$alias.DownSingular}}R struct { 143 {{range .Table.FKeys -}} 144 {{- $ftable := $.Aliases.Table .ForeignTable -}} 145 {{- $relAlias := $alias.Relationship .Name -}} 146 {{$relAlias.Foreign}} *{{$ftable.UpSingular}} `{{generateTags $.Tags $relAlias.Foreign}}boil:"{{$relAlias.Foreign}}" json:"{{$relAlias.Foreign}}" toml:"{{$relAlias.Foreign}}" yaml:"{{$relAlias.Foreign}}"` 147 {{end -}} 148 149 {{range .Table.ToOneRelationships -}} 150 {{- $ftable := $.Aliases.Table .ForeignTable -}} 151 {{- $relAlias := $ftable.Relationship .Name -}} 152 {{$relAlias.Local}} *{{$ftable.UpSingular}} `{{generateTags $.Tags $relAlias.Local}}boil:"{{$relAlias.Local}}" json:"{{$relAlias.Local}}" toml:"{{$relAlias.Local}}" yaml:"{{$relAlias.Local}}"` 153 {{end -}} 154 155 {{range .Table.ToManyRelationships -}} 156 {{- $ftable := $.Aliases.Table .ForeignTable -}} 157 {{- $relAlias := $.Aliases.ManyRelationship .ForeignTable .Name .JoinTable .JoinLocalFKeyName -}} 158 {{$relAlias.Local}} {{printf "%sSlice" $ftable.UpSingular}} `{{generateTags $.Tags $relAlias.Local}}boil:"{{$relAlias.Local}}" json:"{{$relAlias.Local}}" toml:"{{$relAlias.Local}}" yaml:"{{$relAlias.Local}}"` 159 {{end -}}{{/* range tomany */}} 160 } 161 162 // NewStruct creates a new relationship struct 163 func (*{{$alias.DownSingular}}R) NewStruct() *{{$alias.DownSingular}}R { 164 return &{{$alias.DownSingular}}R{} 165 } 166 167 {{range .Table.FKeys -}} 168 {{- $ftable := $.Aliases.Table .ForeignTable -}} 169 {{- $relAlias := $alias.Relationship .Name -}} 170 func (r *{{$alias.DownSingular}}R) Get{{$relAlias.Foreign}}() *{{$ftable.UpSingular}} { 171 if (r == nil) { 172 return nil 173 } 174 return r.{{$relAlias.Foreign}} 175 } 176 177 {{end -}} 178 179 {{- range .Table.ToOneRelationships -}} 180 {{- $ftable := $.Aliases.Table .ForeignTable -}} 181 {{- $relAlias := $ftable.Relationship .Name -}} 182 func (r *{{$alias.DownSingular}}R) Get{{$relAlias.Local}}() *{{$ftable.UpSingular}} { 183 if (r == nil) { 184 return nil 185 } 186 return r.{{$relAlias.Local}} 187 } 188 189 {{end -}} 190 191 {{- range .Table.ToManyRelationships -}} 192 {{- $ftable := $.Aliases.Table .ForeignTable -}} 193 {{- $relAlias := $.Aliases.ManyRelationship .ForeignTable .Name .JoinTable .JoinLocalFKeyName -}} 194 func (r *{{$alias.DownSingular}}R) Get{{$relAlias.Local}}() {{printf "%sSlice" $ftable.UpSingular}} { 195 if (r == nil) { 196 return nil 197 } 198 return r.{{$relAlias.Local}} 199 } 200 201 {{end -}} 202 203 // {{$alias.DownSingular}}L is where Load methods for each relationship are stored. 204 type {{$alias.DownSingular}}L struct{} 205 {{end -}}