Documentation
¶
Overview ¶
Package cmd contains the primary logic of the xo command-line application.
Index ¶
- func BuildQuery(ctx context.Context, args *Args, dest *xo.XO) error
- func BuildSchema(ctx context.Context, args *Args, dest *xo.XO) error
- func Introspect(ctx context.Context, query []string, allowNulls, flat bool) ([]xo.Field, error)
- func LoadColumns(ctx context.Context, args *Args, table *xo.Table) error
- func LoadEnumValues(ctx context.Context, args *Args, enum *xo.Enum) error
- func LoadEnums(ctx context.Context, args *Args) ([]xo.Enum, error)
- func LoadIndexColumns(ctx context.Context, args *Args, table *xo.Table, index *xo.Index) error
- func LoadProcParams(ctx context.Context, args *Args, proc *xo.Proc) error
- func LoadProcs(ctx context.Context, args *Args) ([]xo.Proc, error)
- func LoadQueryFields(ctx context.Context, query []string, fields string, allowNulls, flat bool) ([]xo.Field, error)
- func LoadTableForeignKeys(ctx context.Context, args *Args, tables []xo.Table, table xo.Table) ([]xo.ForeignKey, error)
- func LoadTableIndexes(ctx context.Context, args *Args, table *xo.Table) error
- func LoadTables(ctx context.Context, args *Args, typ string) ([]xo.Table, error)
- func Open(ctx context.Context, dsn, schema string) (context.Context, error)
- func ParseQuery(ctx context.Context, sqlstr, delimiter string, interpolate, trim, strip bool) ([]string, []string, []string, []xo.Field, error)
- func ParseQueryFields(query, delim string, interpolate, paramInterpolate bool, nth func(int) string) (string, []xo.Field, error)
- func Run(ctx context.Context, name, version string) error
- func SplitFields(s string) ([]xo.Field, error)
- type Args
- type DbParams
- type OutParams
- type QueryParams
- type SchemaParams
- type TemplateParams
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func BuildQuery ¶
BuildQuery builds a query.
func BuildSchema ¶
BuildSchema builds a schema.
func Introspect ¶
Introspect creates a view of a query, introspecting the query's columns and returning as fields.
Creates a temporary view/table, retrieves its column definitions and dropping the temporary view/table.
func LoadColumns ¶
LoadColumns loads table/view columns.
func LoadEnumValues ¶
LoadEnumValues loads enum values.
func LoadIndexColumns ¶
LoadIndexColumns loads the index column information.
func LoadProcParams ¶
LoadProcParams loads stored procedure parameters.
func LoadQueryFields ¶
func LoadQueryFields(ctx context.Context, query []string, fields string, allowNulls, flat bool) ([]xo.Field, error)
LoadQueryFields loads the query type fields.
func LoadTableForeignKeys ¶
func LoadTableForeignKeys(ctx context.Context, args *Args, tables []xo.Table, table xo.Table) ([]xo.ForeignKey, error)
LoadTableForeignKeys loads foreign key definitions per table.
func LoadTableIndexes ¶
LoadTableIndexes loads index definitions per table.
func LoadTables ¶
LoadTables loads types for the type (ie, table/view definitions).
func Open ¶
Open opens a connection to the database, returning a context for use in the application logic.
func ParseQuery ¶
func ParseQuery(ctx context.Context, sqlstr, delimiter string, interpolate, trim, strip bool) ([]string, []string, []string, []xo.Field, error)
ParseQuery parses a query returning the processed query, a query for introspection, related comments, and extracted params.
func ParseQueryFields ¶
func ParseQueryFields(query, delim string, interpolate, paramInterpolate bool, nth func(int) string) (string, []xo.Field, error)
ParseQueryFields takes a SQL query and looks for strings in the form of "<delim><name> <type>[,<option>,...]<delim>", replacing them with the nth param value.
The modified query is returned, along with any extracted parameters.
Types ¶
type Args ¶
type Args struct {
// Verbose enables verbose output.
Verbose bool
// DbParams are database parameters.
DbParams DbParams
// TemplateParams are template parameters.
TemplateParams TemplateParams
// QueryParams are query parameters.
QueryParams QueryParams
// SchemaParams are schema parameters.
SchemaParams SchemaParams
// OutParams are out parameters.
OutParams OutParams
}
Args contains command-line arguments.
type DbParams ¶
type DbParams struct {
// Schema is the name of the database schema.
Schema string
// DSN is the database string (ie, postgres://user:pass@host:5432/dbname?args=)
DSN string
// Flags are additional loader flags.
Flags map[xo.ContextKey]interface{}
}
DbParams are database parameters.
type OutParams ¶
type OutParams struct {
// Out is the out path.
Out string
// Append toggles to append to the existing types.
Append bool
// Single when true changes behavior so that output is to one file.
Single string
// Debug toggles direct writing of files to disk, skipping post processing.
Debug bool
}
OutParams are out parameters.
type QueryParams ¶
type QueryParams struct {
// Query is the passed query.
//
// If not specified, then os.Stdin will be used.
Query string
// Type is the type name.
Type string
// TypeComment is the type comment.
TypeComment string
// Func is the func name.
Func string
// FuncComment is the func comment.
FuncComment string
// Trim enables triming whitespace.
Trim bool
// Strip enables stripping the '::<type> AS <name>' in queries.
Strip bool
// One toggles the generated code to expect only one result.
One bool
// Flat toggles the generated code to return all scanned values directly.
Flat bool
// Exec toggles the generated code to do a db exec.
Exec bool
// Interpolate enables interpolation.
Interpolate bool
// Delimiter is the delimiter for parameterized values.
Delimiter string
// Fields are the fields to scan the result to.
Fields string
// AllowNulls toggles results can contain null types.
AllowNulls bool
}
QueryParams are query parameters.
type SchemaParams ¶
type SchemaParams struct {
// FkMode is the foreign resolution mode.
FkMode string
// Include allows the user to specify which types should be included. Can
// match multiple types via regex patterns.
//
// - When unspecified, all types are included.
// - When specified, only types match will be included.
// - When a type matches an exclude entry and an include entry,
// the exclude entry will take precedence.
Include []glob.Glob
// Exclude allows the user to specify which types should be skipped. Can
// match multiple types via regex patterns.
//
// When unspecified, all types are included in the schema.
Exclude []glob.Glob
// UseIndexNames toggles using index names.
//
// This is not enabled by default, because index names are often generated
// using database design software which often gives non-descriptive names
// to indexes (for example, 'authors__b124214__u_idx' instead of the more
// descriptive 'authors_title_idx').
UseIndexNames bool
}
SchemaParams are schema parameters.
type TemplateParams ¶
type TemplateParams struct {
// Type is the name of the template.
Type string
// Suffix is the file extension suffix.
Suffix string
// Src is the src directory of the template.
Src string
// Flags are additional template flags.
Flags map[xo.ContextKey]interface{}
}
TemplateParams are template parameters.