parse

package
v1.5.1 Latest Latest
Warning

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

Go to latest
Published: Aug 27, 2021 License: MIT Imports: 8 Imported by: 38

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.

func (*FieldInfo) GoString added in v1.5.0

func (fi *FieldInfo) GoString() string

GoString returns struct field information as Go code string.

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.

Jump to

Keyboard shortcuts

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