Documentation
¶
Overview ¶
Package cmd provides xo command-line application logic.
Index ¶
- func BuildContext(ctx context.Context, args *Args) context.Context
- func DumpCommand(ctx context.Context, ts *templates.Set, args *Args) (*cobra.Command, error)
- func Exec(ctx context.Context, mode string, ts *templates.Set, args *Args) func(*cobra.Command, []string) error
- func Generate(ctx context.Context, mode string, ts *templates.Set, set *xo.Set, args *Args) 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 LoadQuery(ctx context.Context, set *xo.Set, args *Args) error
- func LoadQueryFields(ctx context.Context, query []string, fields string, allowNulls, flat bool) ([]xo.Field, error)
- func LoadSchema(ctx context.Context, set *xo.Set, args *Args) 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 NewTemplateSet(ctx context.Context, dir, template string) (*templates.Set, 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 QueryCommand(ctx context.Context, ts *templates.Set, args *Args) (*cobra.Command, error)
- func RootCommand(ctx context.Context, name, version string, ts *templates.Set, args *Args, ...) (*cobra.Command, error)
- func Run(ctx context.Context, name, version string, cmdArgs ...string) error
- func SchemaCommand(ctx context.Context, ts *templates.Set, args *Args) (*cobra.Command, error)
- func SplitFields(s string) ([]xo.Field, error)
- type Args
- type LoaderParams
- type OutParams
- type QueryParams
- type SchemaParams
- type TemplateParams
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func BuildContext ¶
BuildContext builds a context for the mode and template.
func DumpCommand ¶
DumpCommand builds the dump command.
func Exec ¶
func Exec(ctx context.Context, mode string, ts *templates.Set, args *Args) func(*cobra.Command, []string) error
Exec handles the execution for query and 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 LoadSchema ¶
LoadSchema loads a schema from a database.
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 NewTemplateSet ¶
NewTemplateSet creates a new templates set.
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.
func QueryCommand ¶
QueryCommand builds the query command.
func RootCommand ¶
func RootCommand(ctx context.Context, name, version string, ts *templates.Set, args *Args, cmdargs ...string) (*cobra.Command, error)
RootCommand creates the root command.
func SchemaCommand ¶
SchemaCommand builds the schema command.
Types ¶
type Args ¶
type Args struct {
// Verbose enables verbose output.
Verbose bool
// LoaderParams are database loader parameters.
LoaderParams LoaderParams
// 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 LoaderParams ¶
type LoaderParams struct {
// Schema is the name of the database schema.
Schema string
// Flags are additional loader flags.
Flags map[xo.ContextKey]*xo.Value
}
LoaderParams are loader parameters.
type OutParams ¶
type OutParams struct {
// Out is the out path.
Out string
// 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 query to introspect.
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 enables results to have null types.
AllowNulls bool
}
QueryParams are query parameters.
type SchemaParams ¶
type SchemaParams struct {
// FkMode is the foreign resolution mode.
FkMode *xo.Value
// 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 *xo.Value
// 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 *xo.Value
// 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 *xo.Value
// Src is the src directory of the template.
Src string
// Flags are additional template flags.
Flags map[xo.ContextKey]*xo.Value
}
TemplateParams are template parameters.