Documentation ¶
Overview ¶
Package parse implements parsing of Go structs in files and runtime.
This package, despite containing exported types, methods and functions, is an internal part of implementation of 'reform' command, also used by generated files, and not a part of public stable API.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AssertUpToDate ¶
func AssertUpToDate(si *StructInfo, obj interface{})
AssertUpToDate checks that given StructInfo matches given object. It is used during program initialization to check that generated files are up-to-date.
Types ¶
type FieldInfo ¶
type FieldInfo struct { Name string // field name as defined in source file, e.g. Name Type string // field type as defined in source file, e.g. string; always present for primary key, may be absent otherwise Column string // SQL database column name from "reform:" struct field tag, e.g. name }
FieldInfo represents information about struct field.
type StructInfo ¶
type StructInfo struct { Type string // struct type as defined in source file, e.g. User SQLSchema string // SQL database schema name from magic "reform:" comment, e.g. public SQLName string // SQL database view or table name from magic "reform:" comment, e.g. users Fields []FieldInfo // fields info PKFieldIndex int // index of primary key field in Fields, -1 if none }
StructInfo represents information about struct.
func File ¶
func File(path string) ([]StructInfo, error)
File parses given file and returns found structs information.
func Object ¶
func Object(obj interface{}, schema, table string) (res *StructInfo, err error)
Object extracts struct information from given object.
func (*StructInfo) Columns ¶
func (s *StructInfo) Columns() []string
Columns returns a new slice of column names.
func (*StructInfo) ColumnsGoString ¶ added in v1.5.0
func (s *StructInfo) ColumnsGoString() string
ColumnsGoString returns column names as Go code string.
func (*StructInfo) GoString ¶ added in v1.5.0
func (s *StructInfo) GoString() string
GoString returns struct information as Go code string.
func (*StructInfo) IsTable ¶
func (s *StructInfo) IsTable() bool
IsTable returns true if this object represent information for table, false for view.
func (*StructInfo) PKField ¶
func (s *StructInfo) PKField() FieldInfo
PKField returns a primary key field, panics for views.