Documentation ¶
Overview ¶
Package sqlmodel provides primitives for generating structs from database schema
Index ¶
- type Codegen
- type Column
- type ColumnModel
- type ColumnType
- type CompositeTagBuilder
- type Executor
- type FileSystem
- type GORMTagBuilder
- type Generator
- type GeneratorContext
- type JSONTagBuilder
- type ModelProvider
- type ModelProviderConfig
- type MySQLProvider
- type NoopTagBuilder
- type PostgreSQLProvider
- type Querier
- type SQLXTagBuilder
- type SQLiteProvider
- type Schema
- type SchemaModel
- type SchemaProvider
- type Spec
- type Table
- type TableModel
- type TagBuilder
- type TypeDef
- type ValidateTagBuilder
- type WriteFileSystem
- type XMLTagBuilder
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Codegen ¶
type Codegen struct { // Meta information Meta map[string]interface{} // Format the code Format bool }
Codegen generates Golang structs from database schema
func (*Codegen) Generate ¶
func (g *Codegen) Generate(ctx *GeneratorContext) error
Generate generates the golang structs from database schema
type Column ¶
type Column struct { // Name is the name of this column Name string // Type is the database type of this column Type ColumnType // ScanType is the database type of this column ScanType string // Model representation of this column Model ColumnModel }
Column represents a metadata for database column
type ColumnModel ¶
type ColumnModel struct { // HasDocumentation return true if the column has documentation HasDocumentation bool // Name is the name of this column Name string // Type is the database type of this column Type string // Tage is the field tag Tag string }
ColumnModel represents the field definition for given column
type ColumnType ¶
type ColumnType struct { // Name of the column type Name string // Underlying is the name of the column data type (the underlying type of the domain, if applicable) Underlying string // IsPrimaryKey returns true if the column is in primary key IsPrimaryKey bool // IsNullable determines whether the column allow null values IsNullable bool // IsUnsigned returns true if the numeric type is unassigned IsUnsigned bool // CharMaxLength determines the maximum length for character types CharMaxLength int // Precision for numeric type Precision int // PrecisionScale for numeric type PrecisionScale int }
ColumnType is the type of the column
func (ColumnType) String ¶
func (t ColumnType) String() string
String represents the ColumnType as string
type CompositeTagBuilder ¶
type CompositeTagBuilder []TagBuilder
CompositeTagBuilder composes multiple builders
func (CompositeTagBuilder) Build ¶
func (composition CompositeTagBuilder) Build(column *Column) string
Build builds tags for given column
type Executor ¶
type Executor struct { // Generator is the generator Generator Generator // Provider provides information the database schema Provider SchemaProvider }
Executor executes the schema generation
type FileSystem ¶
FileSystem provides with primitives to work with the underlying file system
type GORMTagBuilder ¶
type GORMTagBuilder struct{}
GORMTagBuilder builds tags for GORM mapper
func (GORMTagBuilder) Build ¶
func (builder GORMTagBuilder) Build(column *Column) string
Build builds tags for given column
type Generator ¶
type Generator interface { // Generate generates a model or script Generate(ctx *GeneratorContext) error }
Generator generates the sqlmodels
type GeneratorContext ¶
type GeneratorContext struct { // Template name Template string // Writer where the output will be written Writer io.Writer // Schema definition Schema *Schema }
GeneratorContext is the generator's context
type JSONTagBuilder ¶
type JSONTagBuilder struct{}
JSONTagBuilder builds JSON tags
func (JSONTagBuilder) Build ¶
func (builder JSONTagBuilder) Build(column *Column) string
Build builds tags for given column
type ModelProvider ¶
type ModelProvider struct { // Config for this provider Config *ModelProviderConfig // Provider represents the actual provider Provider SchemaProvider // TagBuilder builds struct tags from column type TagBuilder TagBuilder }
ModelProvider represents the model provider
func (*ModelProvider) Close ¶
func (m *ModelProvider) Close() error
Close closes connection to the db
type ModelProviderConfig ¶
type ModelProviderConfig struct { // Package name Package string // UseNamedParams determines whether to use named params UseNamedParams bool // InlcudeDoc determines whether to include documentation InlcudeDoc bool }
ModelProviderConfig is the ModelProvider's config
type MySQLProvider ¶
type MySQLProvider struct { // DB is a connection to MySQL database DB Querier }
MySQLProvider represents a metadata provider for MySQL
func (*MySQLProvider) Close ¶
func (m *MySQLProvider) Close() error
Close closes connection to the db
type NoopTagBuilder ¶
type NoopTagBuilder struct{}
NoopTagBuilder composes multiple builders
func (NoopTagBuilder) Build ¶
func (composition NoopTagBuilder) Build(column *Column) string
Build builds tags for given column
type PostgreSQLProvider ¶
type PostgreSQLProvider struct { // DB is a connection to PostgreSQL database DB Querier }
PostgreSQLProvider represents a metadata provider for PostgreSQL
func (*PostgreSQLProvider) Close ¶
func (m *PostgreSQLProvider) Close() error
Close closes connection to the db
type Querier ¶
type Querier interface { // Query performs a query and returns a set of rows Query(query string, args ...interface{}) (*sql.Rows, error) // QueryRow performs a query and returns a row QueryRow(query string, args ...interface{}) *sql.Row // Close closes the connection Close() error }
Querier executes queries
type SQLXTagBuilder ¶
type SQLXTagBuilder struct{}
SQLXTagBuilder builds tags for SQLX mapper
func (SQLXTagBuilder) Build ¶
func (builder SQLXTagBuilder) Build(column *Column) string
Build builds tags for given column
type SQLiteProvider ¶
type SQLiteProvider struct { // DB is a connection to PostgreSQL database DB Querier }
SQLiteProvider represents a metadata provider for SQLite
func (*SQLiteProvider) Close ¶
func (m *SQLiteProvider) Close() error
Close closes connection to the db
type Schema ¶
type Schema struct { // Name of the schema Name string // Driver name Driver string // Tables are the associated tables Tables []Table // IsDefault returns if this schema is default IsDefault bool // Model for this schema Model SchemaModel }
Schema represents a database schema
type SchemaModel ¶
type SchemaModel struct { // Package name Package string // HasDocumentation return true if the schema has documentation HasDocumentation bool }
SchemaModel represents the schema's model
type SchemaProvider ¶
type SchemaProvider interface { // Tables returns all tables for this schema Tables(schema string) ([]string, error) // Schema returns the schema definition Schema(schema string, tables ...string) (*Schema, error) // Close closes connection to the db Close() error }
SchemaProvider provides a metadata for database schema
type Spec ¶
type Spec struct { // Filename of the spec Filename string // Template name Template string // FileSystem is the underlying file system FileSystem WriteFileSystem // Schema is the database schema name Schema string // Tables is the list of the desired tables from the database schema Tables []string // IgnoreTables ecludes the those tables from generation IgnoreTables []string }
Spec specifies the generation options
type Table ¶
type Table struct { // Name of this table Name string // Driver name Driver string // Model representation of this table Model TableModel // Columns of this table Columns []Column }
Table represents a table name and its schema
type TableModel ¶
type TableModel struct { // HasDocumentation return true if the table has documentation HasDocumentation bool // Type of this model Type string // Package name Package string // InsertRoutine is the insert routine name InsertRoutine string // InsertColumns are the columns InsertColumns string // InsertValues are the values to be inserted InsertValues string // SelectByPKRoutine is the select by primary key routine SelectByPKRoutine string // SelectAllRoutine is the select-all's routine SelectAllRoutine string // DeleteByPkRoutine is the delete by primary key routine DeleteByPKRoutine string // UpdateByPKRoutine is the update by primary key routine UpdateByPKRoutine string // UpdateByPKColumns is the columns for update condition UpdateByPKColumns string // PrimaryKeyCondition is a where clause condition PrimaryKeyCondition string // PrimaryKeyParams is the primary key args PrimaryKeyParams string // PrimaryKeyEntityParams is the primary key args PrimaryKeyEntityParams string // PrimaryKeyArgs is the primary key args PrimaryKeyArgs string // PrimaryKey is the map of primary key args PrimaryKey map[string]string }
TableModel represents the model definition
type TagBuilder ¶
type TagBuilder interface { // Build returns a struct tag from column type Build(column *Column) string }
TagBuilder builds tags from column type
type ValidateTagBuilder ¶
type ValidateTagBuilder struct{}
ValidateTagBuilder builds JSON tags
func (ValidateTagBuilder) Build ¶
func (builder ValidateTagBuilder) Build(column *Column) string
Build builds tags for given column
type WriteFileSystem ¶
type WriteFileSystem interface { FileSystem // OpenFile opens a new file OpenFile(string, int, fs.FileMode) (fs.File, error) }
WriteFileSystem represents a wriable file system
type XMLTagBuilder ¶
type XMLTagBuilder struct{}
XMLTagBuilder builds XML tags
func (XMLTagBuilder) Build ¶
func (builder XMLTagBuilder) Build(column *Column) string
Build builds tags for given column