diff --git a/cmd/internal/printer/printer.go b/cmd/internal/printer/printer.go index 3116d3f9d..878edd1c8 100644 --- a/cmd/internal/printer/printer.go +++ b/cmd/internal/printer/printer.go @@ -44,7 +44,7 @@ func (p Config) node(t *gen.Type) { b strings.Builder id []*gen.Field table = tablewriter.NewWriter(&b) - header = []string{"Field", "Type", "Unique", "Optional", "Nillable", "Default", "UpdateDefault", "Immutable", "StructTag", "Validators"} + header = []string{"Field", "Type", "Unique", "Optional", "Nillable", "Default", "UpdateDefault", "Immutable", "StructTag", "Validators", "Comment"} ) b.WriteString(t.Name + ":\n") table.SetAutoFormatHeaders(false) @@ -55,19 +55,20 @@ func (p Config) node(t *gen.Type) { for _, f := range append(id, t.Fields...) { v := reflect.ValueOf(*f) row := make([]string, len(header)) - for i := range row { + for i := 0; i < len(row)-1; i++ { field := v.FieldByNameFunc(func(name string) bool { // The first field is mapped from "Name" to "Field". return name == "Name" && i == 0 || name == header[i] }) row[i] = fmt.Sprint(field.Interface()) } + row[len(row)-1] = f.Comment() table.Append(row) } table.Render() table = tablewriter.NewWriter(&b) table.SetAutoFormatHeaders(false) - table.SetHeader([]string{"Edge", "Type", "Inverse", "BackRef", "Relation", "Unique", "Optional"}) + table.SetHeader([]string{"Edge", "Type", "Inverse", "BackRef", "Relation", "Unique", "Optional", "Comment"}) for _, e := range t.Edges { table.Append([]string{ e.Name, @@ -77,6 +78,7 @@ func (p Config) node(t *gen.Type) { e.Rel.Type.String(), strconv.FormatBool(e.Unique), strconv.FormatBool(e.Optional), + e.Comment(), }) } if table.NumLines() > 0 { diff --git a/cmd/internal/printer/printer_test.go b/cmd/internal/printer/printer_test.go index a82bb3262..d6284ecf5 100644 --- a/cmd/internal/printer/printer_test.go +++ b/cmd/internal/printer/printer_test.go @@ -35,14 +35,14 @@ func TestPrinter_Print(t *testing.T) { }, out: ` User: - +------------+-----------+--------+----------+----------+---------+---------------+-----------+-----------+------------+ - | Field | Type | Unique | Optional | Nillable | Default | UpdateDefault | Immutable | StructTag | Validators | - +------------+-----------+--------+----------+----------+---------+---------------+-----------+-----------+------------+ - | id | int | false | false | false | false | false | false | | 0 | - | name | string | false | false | false | false | false | false | | 1 | - | age | int | false | false | true | false | false | false | | 0 | - | created_at | time.Time | false | false | true | false | false | true | | 0 | - +------------+-----------+--------+----------+----------+---------+---------------+-----------+-----------+------------+ + +------------+-----------+--------+----------+----------+---------+---------------+-----------+-----------+------------+---------+ + | Field | Type | Unique | Optional | Nillable | Default | UpdateDefault | Immutable | StructTag | Validators | Comment | + +------------+-----------+--------+----------+----------+---------+---------------+-----------+-----------+------------+---------+ + | id | int | false | false | false | false | false | false | | 0 | | + | name | string | false | false | false | false | false | false | | 1 | | + | age | int | false | false | true | false | false | false | | 0 | | + | created_at | time.Time | false | false | true | false | false | true | | 0 | | + +------------+-----------+--------+----------+----------+---------+---------------+-----------+-----------+------------+---------+ `, }, @@ -61,17 +61,17 @@ User: }, out: ` User: - +-------+------+--------+----------+----------+---------+---------------+-----------+-----------+------------+ - | Field | Type | Unique | Optional | Nillable | Default | UpdateDefault | Immutable | StructTag | Validators | - +-------+------+--------+----------+----------+---------+---------------+-----------+-----------+------------+ - | id | int | false | false | false | false | false | false | | 0 | - +-------+------+--------+----------+----------+---------+---------------+-----------+-----------+------------+ - +--------+-------+---------+---------+----------+--------+----------+ - | Edge | Type | Inverse | BackRef | Relation | Unique | Optional | - +--------+-------+---------+---------+----------+--------+----------+ - | groups | Group | false | | M2M | false | true | - | spouse | User | false | | O2O | true | false | - +--------+-------+---------+---------+----------+--------+----------+ + +-------+------+--------+----------+----------+---------+---------------+-----------+-----------+------------+---------+ + | Field | Type | Unique | Optional | Nillable | Default | UpdateDefault | Immutable | StructTag | Validators | Comment | + +-------+------+--------+----------+----------+---------+---------------+-----------+-----------+------------+---------+ + | id | int | false | false | false | false | false | false | | 0 | | + +-------+------+--------+----------+----------+---------+---------------+-----------+-----------+------------+---------+ + +--------+-------+---------+---------+----------+--------+----------+---------+ + | Edge | Type | Inverse | BackRef | Relation | Unique | Optional | Comment | + +--------+-------+---------+---------+----------+--------+----------+---------+ + | groups | Group | false | | M2M | false | true | | + | spouse | User | false | | O2O | true | false | | + +--------+-------+---------+---------+----------+--------+----------+---------+ `, }, @@ -94,19 +94,19 @@ User: }, out: ` User: - +-------+--------+--------+----------+----------+---------+---------------+-----------+-----------+------------+ - | Field | Type | Unique | Optional | Nillable | Default | UpdateDefault | Immutable | StructTag | Validators | - +-------+--------+--------+----------+----------+---------+---------------+-----------+-----------+------------+ - | id | int | false | false | false | false | false | false | | 0 | - | name | string | false | false | false | false | false | false | | 1 | - | age | int | false | false | true | false | false | false | | 0 | - +-------+--------+--------+----------+----------+---------+---------------+-----------+-----------+------------+ - +--------+-------+---------+---------+----------+--------+----------+ - | Edge | Type | Inverse | BackRef | Relation | Unique | Optional | - +--------+-------+---------+---------+----------+--------+----------+ - | groups | Group | false | | M2M | false | true | - | spouse | User | false | | O2O | true | false | - +--------+-------+---------+---------+----------+--------+----------+ + +-------+--------+--------+----------+----------+---------+---------------+-----------+-----------+------------+---------+ + | Field | Type | Unique | Optional | Nillable | Default | UpdateDefault | Immutable | StructTag | Validators | Comment | + +-------+--------+--------+----------+----------+---------+---------------+-----------+-----------+------------+---------+ + | id | int | false | false | false | false | false | false | | 0 | | + | name | string | false | false | false | false | false | false | | 1 | | + | age | int | false | false | true | false | false | false | | 0 | | + +-------+--------+--------+----------+----------+---------+---------------+-----------+-----------+------------+---------+ + +--------+-------+---------+---------+----------+--------+----------+---------+ + | Edge | Type | Inverse | BackRef | Relation | Unique | Optional | Comment | + +--------+-------+---------+---------+----------+--------+----------+---------+ + | groups | Group | false | | M2M | false | true | | + | spouse | User | false | | O2O | true | false | | + +--------+-------+---------+---------+----------+--------+----------+---------+ `, }, @@ -139,32 +139,32 @@ User: }, out: ` User: - +-------+--------+--------+----------+----------+---------+---------------+-----------+-----------+------------+ - | Field | Type | Unique | Optional | Nillable | Default | UpdateDefault | Immutable | StructTag | Validators | - +-------+--------+--------+----------+----------+---------+---------------+-----------+-----------+------------+ - | id | int | false | false | false | false | false | false | | 0 | - | name | string | false | false | false | false | false | false | | 1 | - | age | int | false | false | true | false | false | false | | 0 | - +-------+--------+--------+----------+----------+---------+---------------+-----------+-----------+------------+ - +--------+-------+---------+---------+----------+--------+----------+ - | Edge | Type | Inverse | BackRef | Relation | Unique | Optional | - +--------+-------+---------+---------+----------+--------+----------+ - | groups | Group | false | | M2M | false | true | - | spouse | User | false | | O2O | true | false | - +--------+-------+---------+---------+----------+--------+----------+ + +-------+--------+--------+----------+----------+---------+---------------+-----------+-----------+------------+---------+ + | Field | Type | Unique | Optional | Nillable | Default | UpdateDefault | Immutable | StructTag | Validators | Comment | + +-------+--------+--------+----------+----------+---------+---------------+-----------+-----------+------------+---------+ + | id | int | false | false | false | false | false | false | | 0 | | + | name | string | false | false | false | false | false | false | | 1 | | + | age | int | false | false | true | false | false | false | | 0 | | + +-------+--------+--------+----------+----------+---------+---------------+-----------+-----------+------------+---------+ + +--------+-------+---------+---------+----------+--------+----------+---------+ + | Edge | Type | Inverse | BackRef | Relation | Unique | Optional | Comment | + +--------+-------+---------+---------+----------+--------+----------+---------+ + | groups | Group | false | | M2M | false | true | | + | spouse | User | false | | O2O | true | false | | + +--------+-------+---------+---------+----------+--------+----------+---------+ Group: - +-------+--------+--------+----------+----------+---------+---------------+-----------+-----------+------------+ - | Field | Type | Unique | Optional | Nillable | Default | UpdateDefault | Immutable | StructTag | Validators | - +-------+--------+--------+----------+----------+---------+---------------+-----------+-----------+------------+ - | id | int | false | false | false | false | false | false | | 0 | - | name | string | false | false | false | false | false | false | | 0 | - +-------+--------+--------+----------+----------+---------+---------------+-----------+-----------+------------+ - +-------+------+---------+---------+----------+--------+----------+ - | Edge | Type | Inverse | BackRef | Relation | Unique | Optional | - +-------+------+---------+---------+----------+--------+----------+ - | users | User | false | | M2M | false | true | - +-------+------+---------+---------+----------+--------+----------+ + +-------+--------+--------+----------+----------+---------+---------------+-----------+-----------+------------+---------+ + | Field | Type | Unique | Optional | Nillable | Default | UpdateDefault | Immutable | StructTag | Validators | Comment | + +-------+--------+--------+----------+----------+---------+---------------+-----------+-----------+------------+---------+ + | id | int | false | false | false | false | false | false | | 0 | | + | name | string | false | false | false | false | false | false | | 0 | | + +-------+--------+--------+----------+----------+---------+---------------+-----------+-----------+------------+---------+ + +-------+------+---------+---------+----------+--------+----------+---------+ + | Edge | Type | Inverse | BackRef | Relation | Unique | Optional | Comment | + +-------+------+---------+---------+----------+--------+----------+---------+ + | users | User | false | | M2M | false | true | | + +-------+------+---------+---------+----------+--------+----------+---------+ `, }, diff --git a/entc/gen/type.go b/entc/gen/type.go index 5af86e7e0..403aaee28 100644 --- a/entc/gen/type.go +++ b/entc/gen/type.go @@ -1719,7 +1719,7 @@ func (e Edge) Field() *Field { // Comment returns the comment of the edge. func (e Edge) Comment() string { - if e.def.Comment != "" { + if e.def != nil { return e.def.Comment } return ""