Documentation
¶
Overview ¶
Package dbCodegen can return a code generator which you can use to generate code against a PostgreSQL database.
Index ¶
Constants ¶
const DefaultMagicComment = "// MAGIC COMMENT (DO NOT EDIT): Please write any custom code only below this line.\n"
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CodegenConfig ¶
type CodegenConfig struct {
PgDbUrl string // DB URL string for PostgreSQL database to which we have to connect
PgReaderDbUrl string // DB URL string for PostgreSQL reader database to which we have to connect (empty if we don't want reader configured)
ModelsContainerPackage string // Full package name under which the DB and Network packages will fall
DbModelPackageName string // Name of the package under which the db related code will be placed
DbModelPackagePath string // Full path of the directory where the generated code for db will be placed
NetworkPackageName string // Name of the package under which the networking related code for DB tables is gonna be placed
NetworkPackagePath string // Full path of the directory where the networking related code for DB tables is gonna be placed
MagicComment string // Magic comment which allows the generator to update only the generated portion of code
ColCommentSeparator string // The string after which we can place the Properties JSON in column comment
InsertCreatedAtInCode bool // Should the code for inserting `created_at` timestamp column be generated by the code generator?
InsertUpdatedAtInCode bool // Should the code for inserting `updated_at` timestamp column be generated by the code generator?
UpdateUpdatedAtInCode bool // Should the code for updating `updated_at` timestamp column be generated by the code generator?
BuildUpdateByUniqueIndex bool // Should we generate the update functions for unique indexes?
ColumnOrderAlphabetic bool // Column order in generated code will be alphabetic if this is set to true, ordinal otherwise
Enumerations map[string]EnumDefinition
}
CodegenConfig contains the values and rules using which the code is to be generated
type DbColumn ¶
type DbColumn struct {
Schema string // Schema name in which this column's table resides
Table string // Table name of the table in which this column is
Name string // Column name
GoName string // Name we want to use for Golang code that will be generated
GoNameSingular string // Singular form of the name
GoNamePlural string // Plural form of the name
DataType string // Data type we get from db
GoDataType string // Data type we want to use in go program
NetworkDataType string // Data type we want to use for the network model
Comment string // Column comment
CharacterLength int // Length in case it is varchar
Nullable bool // NOT NULL means it is false
HasDefaultValue bool // Does the column have a default value?
DefaultValue string // If column has default value then what is it
CommentProperties dbColumnProperty // Properties that will control mostly column value validations
}
DbColumn is the column representation of a table in the database for the generator
type DbFkInfo ¶
type DbFkInfo struct {
FromSchema string // The schema name of the table from which the foreign key reference is being made
FromTable string // The table name which is referencing the target table
ToSchema string // The schema name of the table whose column is being referenced
ToTable string // The table name of the table which is being referenced
FromColOrder []string // The order which the columns appear in the FromTable
References map[string]string // The reference map ([from_column]to_column format)
ConstraintName string // Name of the foreign key constraint
}
DbFkInfo represents a single foreign key in a table
func (*DbFkInfo) GetReverseRefName ¶
type DbIndex ¶
type DbIndex struct {
Name string // Name of the index
IsUnique bool // Is this a "unique" index?
IsPrimary bool // Does this index correspond to the primary key of the table
ColumnList []DbColumn // List of columns of this index (ordered the same way as the columns are defined in the index)
}
DbIndex represents an index inside a table
func (*DbIndex) GetFuncNamePart ¶
func (*DbIndex) GetSortedColumnNames ¶
type DbRevFkInfo ¶
type DbSchema ¶
type DbSchema struct {
Name string // Name of the schema
GoName string // The name of table as a go variable that we would use
Tables map[string]DbTable // Map of name of table to their DbTable struct values
TablesA2z []string // List of Tables in alphabetical order
}
DbSchema represents the schema in the database
type DbTable ¶
type DbTable struct {
Name string // Table name as got from the query
GoName string // The name of table as a go variable that we would use
GoNameSingular string // Singular form of GoName
GoNamePlural string // Plural form of GoName
Schema string // The name of the schema where this table resides
Comment string // Comment on the table
ColumnMap map[string]DbColumn // List of columns as a map from the name of the column to the DbColumn type
ColumnList []string // List of columns (ordinal)
ColumnListA2z []string // List of column names (alphabetical)
PkColumnList []DbColumn // List of columns that make the primary key (slice because order matters)
IndexList []DbIndex // List of indexes on this table
FKeyMap map[string]DbFkInfo // List of foreign keys in table as map from constraint name to DbFkInfo type
RevFKeyMap map[string]DbRevFkInfo // List of reverse reference in table as map from constraint name to DbRevFkInfo type
}
DbTable represents a table in the database
func (*DbTable) FindIndexByColumnNames ¶
type EnumDefinition ¶
type EnumDefinition struct {
Name string // Name of this enum
// Exported bool // Enum to be used outside the DB package
IsDbType bool // Is this enum supposed to be used in the DB?
Mappings map[string]int16 // List of enumerations
DisableGeneration bool // Disable the generation/update of this type (temporarily?)
// contains filtered or unexported fields
}
EnumDefinition defines an enumeration in code which would ideally be saved in the DB
type Generator ¶
type Generator struct {
// More fields to be decided
DbName string // Database reference name (e.g. main, fallback, analytics, etc.)
Config CodegenConfig // The configuration for this generator
Schemas map[string]DbSchema // The schemas in the database (will in turn contain tables)
Enums map[string]EnumDefinition // The enumerations to be built
sync.Mutex // To prevent parallel runs
// contains filtered or unexported fields
}
Generator is the structure we return to a client which needs a generator. It is supposed to contain all the information needed for performing the code generation
func NewCodeGenerator ¶
func NewCodeGenerator(config CodegenConfig) (*Generator, appError.Typ)