cmd

package
v0.0.0-...-ac0725a Latest Latest
Warning

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

Go to latest
Published: Nov 8, 2023 License: MIT Imports: 24 Imported by: 0

Documentation

Overview

Package cmd contains the primary logic of the xo command-line application.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func BuildQuery

func BuildQuery(ctx context.Context, args *Args, dest *xo.XO) error

BuildQuery builds a query.

func BuildSchema

func BuildSchema(ctx context.Context, args *Args, dest *xo.XO) error

BuildSchema builds a schema.

func Introspect

func Introspect(ctx context.Context, query []string, allowNulls, flat bool) ([]xo.Field, error)

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

func LoadColumns(ctx context.Context, args *Args, table *xo.Table) error

LoadColumns loads table/view columns.

func LoadEnumValues

func LoadEnumValues(ctx context.Context, args *Args, enum *xo.Enum) error

LoadEnumValues loads enum values.

func LoadEnums

func LoadEnums(ctx context.Context, args *Args) ([]xo.Enum, error)

LoadEnums loads enums.

func LoadIndexColumns

func LoadIndexColumns(ctx context.Context, args *Args, table *xo.Table, index *xo.Index) error

LoadIndexColumns loads the index column information.

func LoadProcParams

func LoadProcParams(ctx context.Context, args *Args, proc *xo.Proc) error

LoadProcParams loads stored procedure parameters.

func LoadProcs

func LoadProcs(ctx context.Context, args *Args) ([]xo.Proc, error)

LoadProcs loads stored procedures definitions.

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

func LoadTableIndexes(ctx context.Context, args *Args, table *xo.Table) error

LoadTableIndexes loads index definitions per table.

func LoadTables

func LoadTables(ctx context.Context, args *Args, typ string) ([]xo.Table, error)

LoadTables loads types for the type (ie, table/view definitions).

func Open

func Open(ctx context.Context, dsn, schema string) (context.Context, error)

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.

func Run

func Run(ctx context.Context, name, version string) error

Run runs the code generation.

func SplitFields

func SplitFields(s string) ([]xo.Field, error)

SplitFields splits s (comma separated) into fields.

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.

func NewArgs

func NewArgs(ctx context.Context, name, version string) (context.Context, *Args, string, error)

NewArgs creates the command args.

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.

Jump to

Keyboard shortcuts

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