github.com/johnnyeven/libtools@v0.0.0-20191126065708-61829c1adf46/sqlx/gen/model_interfaces.go (about)

     1  package gen
     2  
     3  import (
     4  	"bytes"
     5  
     6  	"github.com/johnnyeven/libtools/sqlx/builder"
     7  )
     8  
     9  func (m *Model) GetComments() map[string]string {
    10  	comments := map[string]string{}
    11  	m.Columns.Range(func(col *builder.Column, idx int) {
    12  		comments[col.FieldName] = col.Comment
    13  	})
    14  	return comments
    15  }
    16  
    17  func (m *Model) interfaces() string {
    18  	buf := &bytes.Buffer{}
    19  
    20  	if len(m.Keys.Primary) > 0 {
    21  		m.ParseTo(buf, `func ({{ var .StructName }} *{{ .StructName }}) PrimaryKey() {{ use "github.com/johnnyeven/libtools/sqlx" }}.FieldNames {
    22  		return {{ dump .Keys.Primary }}
    23  	}
    24  	`)
    25  	}
    26  
    27  	if len(m.Keys.Indexes) > 0 {
    28  		m.ParseTo(buf, `func ({{ var .StructName }} *{{ .StructName }}) Indexes() {{ use "github.com/johnnyeven/libtools/sqlx" }}.Indexes {
    29  		return {{ dump .Keys.Indexes }}
    30  	}
    31  	`)
    32  	}
    33  
    34  	if len(m.Keys.UniqueIndexes) > 0 {
    35  		m.ParseTo(buf, `func ({{ var .StructName }} *{{ .StructName }}) UniqueIndexes() {{ use "github.com/johnnyeven/libtools/sqlx" }}.Indexes {
    36  		return {{ dump .Keys.UniqueIndexes }}
    37  	}
    38  	`)
    39  	}
    40  
    41  	if m.WithComments {
    42  		m.ParseTo(buf, `func ({{ var .StructName }} *{{ .StructName }}) Comments() map[string]string {
    43  		return {{ dump ( .GetComments ) }}
    44  	}`)
    45  	}
    46  
    47  	return buf.String()
    48  }