Documentation
¶
Overview ¶
Package data supplies the data for gnorm templates
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Column ¶
type Column struct {
Table *Table `yaml:"-" json:"-"` // the table this column is in
Name string // the converted name of the column
DBName string // the original name of the column in the DB
Type string // the converted name of the type
DBType string // the original type of the column in the DB
IsArray bool // true if the column type is an array
Length int // non-zero if the type has a length (e.g. varchar[16])
UserDefined bool // true if the type is user-defined
Nullable bool // true if the column is not NON NULL
HasDefault bool // true if the column has a default
Comment string // the comment attached to the column
IsPrimaryKey bool // true if the column is a primary key
IsFK bool // true if the column is a foreign key
HasFKRef bool // true if the column is referenced by a foreign key
FKColumn *ForeignKeyColumn // foreign key column definition
FKColumnRefs ForeignKeyColumns // all foreign key columns referencing this column
FKColumnRefsByName map[string]*ForeignKeyColumn `yaml:"-" json:"-"` // all foreign key columns referencing this column by foreign key name
Orig interface{} `yaml:"-" json:"-"` // the raw database column data
}
Column is the data about a DB column of a table.
type Columns ¶
type Columns []*Column
Columns represents the ordered list of columns in a table.
type ConfigData ¶
type ConfigData struct {
// ConnStr is the connection string for the database. Environment variables
// in $FOO form will be expanded.
ConnStr string
// The type of DB you're connecting to. Currently the possible values are
// "postgres" or "mysql".
DBType string
// Schemas holds the names of schemas to generate code for.
Schemas []string
// IncludeTables is a map of schema names to table names. It is whitelist of
// tables to generate data for. Tables not in this list will not be included
// in data generated by gnorm. You cannot set IncludeTables if ExcludeTables
// is set.
IncludeTables map[string][]string
// ExcludeTables is a map of schema names to table names. It is a blacklist
// of tables to ignore while generating data. All tables in a schema that
// are not in this list will be used for generation. You cannot set
// ExcludeTables if IncludeTables is set.
ExcludeTables map[string][]string
// PostRun is a command with arguments that is run after each file is
// generated by GNORM. It is generally used to reformat the file, but it
// can be for any use. Environment variables will be expanded, and the
// special $GNORMFILE environment variable may be used, which will expand to
// the name of the file that was just generated.
PostRun []string
// TypeMap is a mapping of database type names to replacement type names
// (generally types from your language for deserialization). Types not in
// this list will remain in their database form. In the data sent to your
// template, this is the Column.Type, and the original type is in
// Column.OrigType. Note that because of the way tables in TOML work,
// TypeMap and NullableTypeMap must be at the end of your configuration
// file.
TypeMap map[string]string
// NullableTypeMap is a mapping of database type names to replacement type
// names (generally types from your language for deserialization)
// specifically for database columns that are nullable. Types not in this
// list will remain in their database form. In the data sent to your
// template, this is the Column.Type, and the original type is in
// Column.OrigType. Note that because of the way tables in TOML work,
// TypeMap and NullableTypeMap must be at the end of your configuration
// file.
NullableTypeMap map[string]string
// PluginDirs a set of absolute/relative paths that will be used for
// plugin lookup.
PluginDirs []string
// OutputDir is the directory relative to the project root (where the
// gnorm.toml file is located) in which all the generated files are written
// to.
//
// This defaults to the current working directory i.e the directory in which
// gnorm.toml is found.
OutputDir string
// StaticDir is the directory relative to the project root (where the
// gnorm.toml file is located) in which all static files , which are
// intended to be copied to the OutputDir are found.
//
// The directory structure is preserved when copying the files to the
// OutputDir
StaticDir string
// NoOverwriteGlobs is a list of globs
// (https://golang.org/pkg/path/filepath/#Match). If a filename matches a glob
// *and* a file exists with that name, it will not be generated.
NoOverwriteGlobs []string
}
ConfigData holds the portion of the config that will be available to templates. Note that Params are added to the data at a higher level.
type DBData ¶
type DBData struct {
Schemas []*Schema
SchemasByName map[string]*Schema `yaml:"-" json:"-"` // dbname to schema
}
DBData is all the data about a database that we know.
type Enum ¶
type Enum struct {
Name string // the converted name of the enum
DBName string // the original name of the enum in the DB
Schema *Schema `yaml:"-" json:"-"` // the schema the enum is in
Table *Table `yaml:"-" json:"-"` // (mysql) the table this enum is part of
Values []*EnumValue // the list of possible values for this enum
}
Enum represents a type that has a set of allowed values.
type EnumData ¶
type EnumData struct {
Enum *Enum
DB *DBData
Config ConfigData
Params map[string]interface{}
}
EnumData is the data passed to enum templates.
type EnumValue ¶
type EnumValue struct {
Name string // the converted label of the enum
DBName string // the original label of the enum in the DB
Value int // the value for this enum value (order)
}
EnumValue is one of the named values for an enum.
type Enums ¶
type Enums []*Enum
Enums represents all the enums in a schema.
type ForeignKey ¶
type ForeignKey struct {
DBName string // the original name of the foreign key constraint in the db
Name string // the converted name of the foreign key constraint
TableDBName string // the original name of the table in the db
RefTableDBName string // the original name of the foreign table in the db
Table *Table `yaml:"-" json:"-"` // the foreign key table
RefTable *Table `yaml:"-" json:"-"` // the foreign key foreign table
FKColumns ForeignKeyColumns // all foreign key columns belonging to the foreign key
}
ForeignKey contains the
type ForeignKeyColumn ¶
type ForeignKeyColumn struct {
DBName string // the original name of the foreign key constraint in the db
ColumnDBName string // the original name of the column in the db
RefColumnDBName string // the original name of the foreign column in the db
Column *Column `yaml:"-" json:"-"` // the foreign key column
RefColumn *Column `yaml:"-" json:"-"` // the referenced column
}
ForeignKeyColumn contains the definition of a database foreign key at the kcolumn level
type ForeignKeyColumns ¶
type ForeignKeyColumns []*ForeignKeyColumn
ForeignKeyColumns represents a list of ForeignKeyColumn
func (ForeignKeyColumns) ColumnDBNames ¶
func (fkc ForeignKeyColumns) ColumnDBNames() Strings
ColumnDBNames returns the list of column database names.
func (ForeignKeyColumns) DBNames ¶
func (fkc ForeignKeyColumns) DBNames() Strings
DBNames returns the list of db foreign key names
func (ForeignKeyColumns) RefColumnDBNames ¶
func (fkc ForeignKeyColumns) RefColumnDBNames() Strings
RefColumnDBNames returns the list of foreign column database names.
type ForeignKeys ¶
type ForeignKeys []*ForeignKey
Foreign keys represents a list of ForeignKey
func (ForeignKeys) DBNames ¶
func (fk ForeignKeys) DBNames() Strings
DBNames returns the list of db foreign key names
func (ForeignKeys) Names ¶
func (fk ForeignKeys) Names() Strings
Names returns the list of converted foreign key names
type Index ¶
type Index struct {
Name string // the converted name of the index
DBName string // dbname of the index
IsUnique bool // true if index is unique
Columns Columns // columns used in the index
}
Index is the data about a table index.
type Indexes ¶
type Indexes []*Index
Indexes represents all the indexes on a table.
type Schema ¶
type Schema struct {
Name string // the converted name of the schema
DBName string // the original name of the schema in the DB
Tables Tables // the list of tables in this schema
Enums Enums // the list of enums in this schema
TablesByName map[string]*Table `yaml:"-" json:"-"` // dbnames to tables
}
Schema is the data about a DB schema.
type SchemaData ¶
type SchemaData struct {
Schema *Schema
DB *DBData
Config ConfigData
Params map[string]interface{}
}
SchemaData is the data passed to schema templates.
type Strings ¶
type Strings []string
Strings is a named type of []string to allow us to put methods on it.
type Table ¶
type Table struct {
Name string // the converted name of the table
DBName string // the original name of the table in the DB
Comment string // the comment attached to the table
Schema *Schema `yaml:"-" json:"-"` // the schema this table is in
Columns Columns // Database columns
ColumnsByName map[string]*Column `yaml:"-" json:"-"` // dbname to column
PrimaryKeys Columns // Primary Key Columns
Indexes Indexes // Table indexes
IndexesByName map[string]*Index `yaml:"-" json:"-"` // indexname to index
ForeignKeys ForeignKeys // Foreign Keys
ForeignKeyRefs ForeignKeys // Foreign Keys referencing this table
FKByName map[string]*ForeignKey `yaml:"-" json:"-"` // Foreign Keys by foreign key name
FKRefsByName map[string]*ForeignKey `yaml:"-" json:"-"` // Foreign Keys referencing this table by foreign key name
}
Table is the data about a DB Table.
func (*Table) HasForeignKeyRefs ¶
Returns true if one or more foreign keys reference Table
func (*Table) HasForeignKeys ¶
Returns true if Table has one or more foreign keys
func (*Table) HasPrimaryKey ¶
HasPrimaryKey returns true if Table has one or more primary keys.