writer

package
v0.0.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 17, 2021 License: MIT Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var TableMessageStore *types.TableMessages
View Source
var TplFuncs = template.FuncMap{
	"PackagePrefix": func(local *types.Table, remote *types.Table) string {
		if local.GoPackageImport == remote.GoPackageImport {
			return ""
		}
		local.Imports[remote.GoPackageName] = remote.GoPackageImport
		return fmt.Sprintf("%s.", remote.GoPackageName)
	},
	"SubQueries": func(t *types.Table) []*types.Field {
		foreignKeys := []*types.Field{}
		for _, f := range t.Cols {

			if f.IsMessage && f.FK.Remote != nil {
				foreignKeys = append(foreignKeys, f)
			}

		}
		return foreignKeys
	},
	"HasPK": func(t *types.Table) bool {
		return GetPK(t) != nil
	},
	"GetPKCol": func(t *types.Table) string {
		return GetPK(t).ColName
	},
	"GetPKName": func(t *types.Table) string {
		pk := GetPK(t)
		if pk == nil {
			return "interface{}{}"
		}
		return pk.MsgName
	},
	"GetPKConvert": func(t *types.Table, varName string) string {
		pk := GetPK(t)
		if pk == nil {
			return "interface{}"
		}
		switch GetType(pk) {
		case "int32":
			t.Imports[""] = "encoding/binary"
			return fmt.Sprintf("int32(binary.LittleEndian.Uint32(%s))", varName)
		case "int64":
			t.Imports[""] = "encoding/binary"
			return fmt.Sprintf("int64(binary.LittleEndian.Uint64(%s))", varName)
		}
		return fmt.Sprintf("%s(%s)", GetType(pk), varName)
	},
	"IsReverseFK": func(fk *types.Field) bool {
		return false
	},
	"getColumnNames": func(t *types.Table, separator string) string {
		str := ""
		for _, f := range t.GetOrderedCols() {
			if (f.FK.Remote == nil || !f.Repeated) && len(f.ColName) > 0 {
				str = str + f.ColName + separator
			}
		}
		return strings.TrimSuffix(str, separator)
	},
	"getFieldNames": func(t *types.Table, separator string) string {
		str := ""
		for _, f := range t.GetOrderedCols() {
			if (f.FK.Remote == nil || !f.Repeated) && len(f.ColName) > 0 {
				str = str + toPascalCase(f.MsgName) + separator
			}
		}
		return strings.TrimSuffix(str, separator)
	},
	"getFullFieldName": getFullFieldName,
	"GetInsertFieldNames": func(t *types.Table, separator string) string {
		str := ""
		for _, f := range getInsertFields(t) {
			str = str + getFullFieldName(f) + separator
		}
		return strings.TrimSuffix(str, separator)

	},
	"GetInsertColNames": func(t *types.Table, separator string) string {
		str := ""
		for _, f := range getInsertFields(t) {
			str = str + f.ColName + separator
		}
		return strings.TrimSuffix(str, separator)
	},
	"GetUpdateFields": func(t *types.Table) []*types.Field {
		cols := []*types.Field{}
		inCols := func(new *types.Field) bool {
			for _, c := range cols {
				if new == c {
					return true
				}
			}
			return false
		}
		for _, f := range t.GetOrderedCols() {
			if !inCols(f) && (f.PK == sqlgen.PK_PK_UNSPECIFIED) && f.FK.Remote == nil && len(f.ColName) > 0 {
				cols = append(cols, f)
			}
		}
		return cols
	},
}

Functions

func GenerateImport

func GenerateImport(name string, importPath string, g *protogen.GeneratedFile) string

func GetFieldName

func GetFieldName(f *types.Field) string

func GetPK

func GetPK(t *types.Table) *types.Field

func GetTemplateFuns

func GetTemplateFuns(p Printer) template.FuncMap

func GetType

func GetType(f *types.Field) string

func WriteDeletes

func WriteDeletes(g Printer, m *types.Table)

func WriteEncodings

func WriteEncodings(g Printer, m *types.Table)

func WriteInsertes

func WriteInsertes(g Printer, m *types.Table)

func WriteNestedSelectors

func WriteNestedSelectors(g Printer, m *types.Table)

func WriteQueries

func WriteQueries(g Printer, m *types.Table)

func WriteUpdates

func WriteUpdates(g Printer, m *types.Table)

Types

type Printer

type Printer interface {
	P(str ...interface{})
	Write(p []byte) (n int, err error)
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL