Documentation
¶
Index ¶
- Constants
- Variables
- type Cardinality
- type Column
- type ColumnJSON
- type Constraint
- type Driver
- type DriverJSON
- type DriverMeta
- type DriverMetaJSON
- type Enum
- type FilterOption
- type Function
- type Index
- type Label
- type Labels
- type Relation
- type RelationJSON
- type Schema
- func (s *Schema) Clone() (c *Schema, err error)
- func (s *Schema) CloneWithoutViewpoints() (c *Schema, err error)
- func (s *Schema) Filter(opt *FilterOption) (err error)
- func (s *Schema) FindRelation(cs, pcs []*Column) (_ *Relation, err error)
- func (s *Schema) FindTableByName(name string) (_ *Table, err error)
- func (s *Schema) HasTableWithLabels() bool
- func (s Schema) MarshalJSON() ([]byte, error)
- func (s *Schema) MatchTablesByName(name string) (_ []*Table, err error)
- func (s *Schema) NormalizeTableName(name string) string
- func (s *Schema) NormalizeTableNames(names []string) []string
- func (s *Schema) Repair() (err error)
- func (s *Schema) SeparateFunctionsThatAreIncludedOrNot(opt *FilterOption) (_ []*Function, _ []*Function, err error)
- func (s *Schema) SeparateTablesThatAreIncludedOrNot(opt *FilterOption) (_ []*Table, _ []*Table, err error)
- func (s *Schema) Sort() error
- func (s Schema) ToJSONObject() SchemaJSON
- type SchemaJSON
- type Table
- func (t *Table) CollectTablesAndRelations(distance int, root bool) ([]*Table, []*Relation, error)
- func (t *Table) FindColumnByName(name string) (_ *Column, err error)
- func (t *Table) FindConstrainsByColumnName(name string) []*Constraint
- func (t *Table) FindConstraintByName(name string) (_ *Constraint, err error)
- func (t *Table) FindIndexByName(name string) (_ *Index, err error)
- func (t *Table) FindTriggerByName(name string) (_ *Trigger, err error)
- func (t Table) MarshalJSON() ([]byte, error)
- func (t Table) MarshalYAML() ([]byte, error)
- func (t *Table) ShowColumn(name string, hideColumns []string) bool
- func (t Table) ToJSONObject() TableJSON
- func (t *Table) UnmarshalJSON(data []byte) error
- func (t *Table) UnmarshalYAML(data []byte) error
- type TableJSON
- type TableViewpoint
- type Trigger
- type Viewpoint
- type ViewpointGroup
- type Viewpoints
Constants ¶
const ( ColumnExtraDef = "ExtraDef" ColumnOccurrences = "Occurrences" ColumnPercents = "Percents" ColumnChildren = "Children" ColumnParents = "Parents" ColumnComment = "Comment" ColumnLabels = "Labels" )
const (
TypeFK = "FOREIGN KEY"
)
Variables ¶
var DefaultHideColumns = []string{ColumnExtraDef, ColumnOccurrences, ColumnPercents, ColumnLabels}
var HideableColumns = []string{ColumnExtraDef, ColumnOccurrences, ColumnPercents, ColumnChildren, ColumnParents, ColumnComment, ColumnLabels}
Functions ¶
This section is empty.
Types ¶
type Cardinality ¶ added in v1.59.0
type Cardinality string
const ( ZeroOrOne Cardinality = "zero_or_one" ExactlyOne Cardinality = "exactly_one" ZeroOrMore Cardinality = "zero_or_more" OneOrMore Cardinality = "one_or_more" UnknownCardinality Cardinality = "" )
func ToCardinality ¶ added in v1.59.0
func ToCardinality(in string) (Cardinality, error)
func (Cardinality) String ¶ added in v1.59.0
func (c Cardinality) String() string
type Column ¶
type Column struct {
Name string
Type string
Nullable bool
Default sql.NullString
Comment string
ExtraDef string
Occurrences sql.NullInt32
Percents sql.NullFloat64
Labels Labels
ParentRelations []*Relation
ChildRelations []*Relation
PK bool
FK bool
HideForER bool
}
Column is the struct for table column.
func (Column) MarshalJSON ¶ added in v1.6.0
MarshalJSON return custom JSON byte.
func (Column) MarshalYAML ¶ added in v1.26.0
MarshalYAML return custom YAML byte.
func (Column) ToJSONObject ¶ added in v1.81.0
func (c Column) ToJSONObject() ColumnJSON
func (*Column) UnmarshalJSON ¶ added in v1.6.0
UnmarshalJSON unmarshal JSON to schema.Column.
func (*Column) UnmarshalYAML ¶ added in v1.26.0
UnmarshalYAML unmarshal YAML to schema.Column.
type ColumnJSON ¶ added in v1.81.0
type ColumnJSON struct {
Name string `json:"name"`
Type string `json:"type"`
Nullable bool `json:"nullable"`
Default *string `json:"default,omitempty" jsonschema:"anyof_type=string;null"`
ExtraDef string `json:"extra_def,omitempty"`
Labels Labels `json:"labels,omitempty"`
Comment string `json:"comment,omitempty"`
}
ColumnJSON is a JSON representation of schema.Column.
type Constraint ¶ added in v0.2.2
type Constraint struct {
Name string `json:"name"`
Type string `json:"type"`
Def string `json:"def"`
Table *string `json:"table"`
ReferencedTable *string `json:"referenced_table,omitempty" yaml:"referencedTable,omitempty"`
Columns []string `json:"columns,omitempty"`
ReferencedColumns []string `json:"referenced_columns,omitempty" yaml:"referencedColumns,omitempty"`
Comment string `json:"comment,omitempty"`
}
Constraint is the struct for database constraint.
type Driver ¶ added in v1.6.0
type Driver struct {
Name string `json:"name"`
DatabaseVersion string `json:"database_version,omitempty" yaml:"databaseVersion,omitempty"`
Meta *DriverMeta `json:"meta,omitempty"`
}
Driver is the struct for tbls driver information.
func (*Driver) ToJSONObject ¶ added in v1.81.0
func (d *Driver) ToJSONObject() *DriverJSON
type DriverJSON ¶ added in v1.81.0
type DriverJSON struct {
Name string `json:"name"`
DatabaseVersion string `json:"database_version,omitempty" yaml:"databaseVersion,omitempty"`
Meta *DriverMetaJSON `json:"meta,omitempty"`
}
type DriverMeta ¶ added in v1.29.0
type DriverMeta struct {
CurrentSchema string `json:"current_schema,omitempty" yaml:"currentSchema,omitempty"`
SearchPaths []string `json:"search_paths,omitempty" yaml:"searchPaths,omitempty"`
Dict *dict.Dict `json:"dict,omitempty"`
}
func (*DriverMeta) ToJSONObject ¶ added in v1.81.0
func (d *DriverMeta) ToJSONObject() *DriverMetaJSON
type DriverMetaJSON ¶ added in v1.81.0
type FilterOption ¶ added in v1.66.0
type Function ¶ added in v1.56.0
type Function struct {
Name string `json:"name"`
ReturnType string `json:"return_type" yaml:"returnType"`
Arguments string `json:"arguments"`
Type string `json:"type"`
}
Function is the struct for tbls stored procedure/function information.
type Index ¶
type Index struct {
Name string `json:"name"`
Def string `json:"def"`
Table *string `json:"table"`
Columns []string `json:"columns"`
Comment string `json:"comment,omitempty"`
}
Index is the struct for database index.
type Relation ¶
type Relation struct {
Table *Table
Columns []*Column
ParentTable *Table
ParentColumns []*Column
Cardinality Cardinality
ParentCardinality Cardinality
Def string
Virtual bool
HideForER bool
}
Relation is the struct for table relation.
func (Relation) MarshalJSON ¶ added in v1.26.0
MarshalJSON return custom JSON byte.
func (Relation) MarshalYAML ¶ added in v1.26.0
MarshalYAML return custom YAML byte.
func (Relation) ToJSONObject ¶ added in v1.81.0
func (r Relation) ToJSONObject() RelationJSON
func (*Relation) UnmarshalJSON ¶ added in v1.26.0
UnmarshalJSON unmarshal JSON to schema.Relation.
func (*Relation) UnmarshalYAML ¶ added in v1.26.0
UnmarshalYAML unmarshal YAML to schema.Column.
type RelationJSON ¶ added in v1.81.0
type RelationJSON struct {
Table string `json:"table"`
Columns []string `json:"columns"`
Cardinality string `json:"cardinality,omitempty" jsonschema:"enum=zero_or_one,enum=exactly_one,enum=zero_or_more,enum=one_or_more,enum="`
ParentTable string `json:"parent_table"`
ParentColumns []string `json:"parent_columns"`
ParentCardinality string `json:"parent_cardinality,omitempty" jsonschema:"enum=zero_or_one,enum=exactly_one,enum=zero_or_more,enum=one_or_more,enum="`
Def string `json:"def"`
Virtual bool `json:"virtual,omitempty"`
}
RelationJSON is a JSON representation of schema.Relation.
type Schema ¶
type Schema struct {
Name string `json:"name,omitempty"`
Desc string `json:"desc,omitempty"`
Tables []*Table `json:"tables"`
Relations []*Relation `json:"relations,omitempty"`
Functions []*Function `json:"functions,omitempty"`
Enums []*Enum `json:"enums,omitempty"`
Driver *Driver `json:"driver,omitempty"`
Labels Labels `json:"labels,omitempty"`
Viewpoints Viewpoints `json:"viewpoints,omitempty"`
}
Schema is the struct for database schema.
func (*Schema) CloneWithoutViewpoints ¶ added in v1.67.0
func (*Schema) Filter ¶ added in v1.66.0
func (s *Schema) Filter(opt *FilterOption) (err error)
func (*Schema) FindRelation ¶ added in v1.45.1
FindRelation find relation by columns and parent columns.
func (*Schema) FindTableByName ¶
FindTableByName find table by table name.
func (*Schema) HasTableWithLabels ¶ added in v1.54.0
func (Schema) MarshalJSON ¶ added in v1.25.1
MarshalJSON return custom JSON byte.
func (*Schema) MatchTablesByName ¶ added in v1.80.0
MatchTablesByName find table by table name.
func (*Schema) NormalizeTableName ¶ added in v1.28.2
func (*Schema) NormalizeTableNames ¶ added in v1.28.2
func (*Schema) SeparateFunctionsThatAreIncludedOrNot ¶ added in v1.86.0
func (s *Schema) SeparateFunctionsThatAreIncludedOrNot(opt *FilterOption) (_ []*Function, _ []*Function, err error)
func (*Schema) SeparateTablesThatAreIncludedOrNot ¶ added in v1.83.0
func (s *Schema) SeparateTablesThatAreIncludedOrNot(opt *FilterOption) (_ []*Table, _ []*Table, err error)
func (*Schema) Sort ¶ added in v0.2.0
Sort schema tables, columns, relations, constrains, and viewpoints.
func (Schema) ToJSONObject ¶ added in v1.81.0
func (s Schema) ToJSONObject() SchemaJSON
ToJSONObjct convert schema.Schema to JSON object.
type SchemaJSON ¶ added in v1.81.0
type SchemaJSON struct {
Name string `json:"name,omitempty"`
Desc string `json:"desc,omitempty"`
Tables []*TableJSON `json:"tables"`
Relations []*RelationJSON `json:"relations,omitempty"`
Functions []*Function `json:"functions,omitempty"`
Enums []*Enum `json:"enums,omitempty"`
Driver *DriverJSON `json:"driver,omitempty"`
Labels Labels `json:"labels,omitempty"`
Viewpoints Viewpoints `json:"viewpoints,omitempty"`
}
SchemaJSON is a JSON representation of schema.Schema.
type Table ¶
type Table struct {
Name string
Type string
Comment string
Columns []*Column
Viewpoints []*TableViewpoint
Indexes []*Index
Constraints []*Constraint
Triggers []*Trigger
Def string
Labels Labels
ReferencedTables []*Table
External bool
}
Table is the struct for database table.
func (*Table) CollectTablesAndRelations ¶ added in v1.27.0
func (*Table) FindColumnByName ¶
FindColumnByName find column by column name.
func (*Table) FindConstrainsByColumnName ¶ added in v1.33.0
func (t *Table) FindConstrainsByColumnName(name string) []*Constraint
FindConstrainsByColumnName find constraint by column name.
func (*Table) FindConstraintByName ¶ added in v1.37.0
func (t *Table) FindConstraintByName(name string) (_ *Constraint, err error)
FindConstraintByName find constraint by constraint name.
func (*Table) FindIndexByName ¶ added in v1.37.0
FindIndexByName find index by index name.
func (*Table) FindTriggerByName ¶ added in v1.37.0
FindTriggerByName find trigger by trigger name.
func (Table) MarshalJSON ¶ added in v1.25.1
MarshalJSON return custom JSON byte.
func (Table) MarshalYAML ¶ added in v1.51.0
MarshalYAML return custom JSON byte.
func (*Table) ShowColumn ¶ added in v1.56.0
func (Table) ToJSONObject ¶ added in v1.81.0
func (*Table) UnmarshalJSON ¶ added in v1.51.0
UnmarshalJSON unmarshal JSON to schema.Table.
func (*Table) UnmarshalYAML ¶ added in v1.55.0
UnmarshalYAML unmarshal YAML to schema.Table.
type TableJSON ¶ added in v1.81.0
type TableJSON struct {
Name string `json:"name"`
Type string `json:"type"`
Comment string `json:"comment,omitempty"`
Columns []*ColumnJSON `json:"columns"`
Indexes []*Index `json:"indexes,omitempty"`
Constraints []*Constraint `json:"constraints,omitempty"`
Triggers []*Trigger `json:"triggers,omitempty"`
Def string `json:"def,omitempty"`
Labels Labels `json:"labels,omitempty"`
ReferencedTables []string `json:"referenced_tables,omitempty"`
}
TableJSON is a JSON representation of schema.Table.
type TableViewpoint ¶ added in v1.71.0
type Trigger ¶ added in v1.0.0
type Trigger struct {
Name string `json:"name"`
Def string `json:"def"`
Comment string `json:"comment,omitempty"`
}
Trigger is the struct for database trigger.
type Viewpoint ¶ added in v1.66.0
type Viewpoint struct {
Name string `json:"name"`
Desc string `json:"desc"`
Labels []string `json:"labels,omitempty"`
Tables []string `json:"tables,omitempty"`
Distance int `json:"distance,omitempty"`
Groups []*ViewpointGroup `json:"groups,omitempty"`
Schema *Schema `json:"-"`
}
Viewpoint is the struct for viewpoint information.
type ViewpointGroup ¶ added in v1.67.0
type Viewpoints ¶ added in v1.66.0
type Viewpoints []*Viewpoint
func (Viewpoints) Merge ¶ added in v1.66.0
func (vs Viewpoints) Merge(in *Viewpoint) Viewpoints