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 Ordinal int64 // the column's ordinal position 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
ForeignKeys is 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 Type string // the table type (e.g. VIEW or BASE TABLE) IsView bool // true if the table represents a view IsInsertable bool // true if the table accepts inserts (postgres only) 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 ¶
HasForeignKeyRefs returns true if one or more foreign keys reference Table.
func (*Table) HasForeignKeys ¶
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.