Documentation
¶
Index ¶
- Constants
- Variables
- func ViewpointName(id string, index int) string
- 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) FindViewpoint(locator string) (*Viewpoint, int, 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 ¶
func ViewpointName ¶ added in v1.95.0
ViewpointName returns the basename (without extension) used for the viewpoint output file. When id is set it is used to keep the name stable regardless of viewpoint order, otherwise the index is used. Config validation rejects ids with path separators, but schemas loaded directly (e.g. json://) bypass it, so fall back to the index-based name to keep the result safe to embed in file paths.
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) FindViewpoint ¶ added in v1.95.0
FindViewpoint finds a viewpoint by id, falling back to index when locator is a number. It also returns the index of the viewpoint.
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 {
ID string `json:"id,omitempty"`
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