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, enums []xo.Enum) error
- func LoadConstraints(ctx context.Context, args *Args) ([]xo.Constraint, 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, enums []xo.Enum) ([]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 LoadConstraints ¶
LoadConstraints loads constraints for all tables in a schema.
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 (table, view)
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 // Ignore excludes a pattern of columns from inserts and updates, // but can be returned by queries (e.g. *.created_at, *.updated_at) Ignore *xo.Value // MainSchemaPkg determines the package used for enums, etc. if any. MainSchemaPkg *xo.Value }
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.