From 7b36f31cadc7096a7a28f29ac0db27bc06d62098 Mon Sep 17 00:00:00 2001 From: go-jet Date: Fri, 31 Mar 2023 14:43:47 +0200 Subject: [PATCH] Include mysql column comments into generated types --- generator/metadata/column_meta_data.go | 1 + generator/mysql/query_set.go | 3 ++- generator/template/file_templates.go | 6 +++--- tests/mysql/generator_test.go | 24 ++++++++++++++++++++++-- tests/postgres/generator_test.go | 6 +++--- tests/sqlite/generator_test.go | 4 ++-- 6 files changed, 33 insertions(+), 11 deletions(-) diff --git a/generator/metadata/column_meta_data.go b/generator/metadata/column_meta_data.go index 5cd0274..8fcc157 100644 --- a/generator/metadata/column_meta_data.go +++ b/generator/metadata/column_meta_data.go @@ -7,6 +7,7 @@ type Column struct { IsNullable bool IsGenerated bool DataType DataType + Comment string } // DataTypeKind is database type kind(base, enum, user-defined, array) diff --git a/generator/mysql/query_set.go b/generator/mysql/query_set.go index 8da3f9c..c5accad 100644 --- a/generator/mysql/query_set.go +++ b/generator/mysql/query_set.go @@ -35,7 +35,8 @@ ORDER BY table_name; func (m mySqlQuerySet) GetTableColumnsMetaData(db *sql.DB, schemaName string, tableName string) []metadata.Column { query := ` SELECT COLUMN_NAME AS "column.Name", - IS_NULLABLE = "YES" AS "column.IsNullable", + IS_NULLABLE = "YES" AS "column.IsNullable", + columns.COLUMN_COMMENT as "column.Comment", (EXISTS( SELECT 1 FROM information_schema.table_constraints t diff --git a/generator/template/file_templates.go b/generator/template/file_templates.go index db30ab7..8cf0076 100644 --- a/generator/template/file_templates.go +++ b/generator/template/file_templates.go @@ -29,10 +29,10 @@ var {{tableTemplate.InstanceName}} = new{{tableTemplate.TypeName}}("{{schemaName type {{structImplName}} struct { {{dialect.PackageName}}.Table - //Columns + // Columns {{- range $i, $c := .Columns}} {{- $field := columnField $c}} - {{$field.Name}} {{dialect.PackageName}}.Column{{$field.Type}} + {{$field.Name}} {{dialect.PackageName}}.Column{{$field.Type}} {{- if $c.Comment }} // {{$c.Comment}} {{end}} {{- end}} AllColumns {{dialect.PackageName}}.ColumnList @@ -123,7 +123,7 @@ import ( type {{$modelTableTemplate.TypeName}} struct { {{- range .Columns}} {{- $field := structField .}} - {{$field.Name}} {{$field.Type.Name}} ` + "{{$field.TagsString}}" + ` + {{$field.Name}} {{$field.Type.Name}} ` + "{{$field.TagsString}}" + ` {{- if .Comment }} // {{.Comment}} {{end}} {{- end}} } diff --git a/tests/mysql/generator_test.go b/tests/mysql/generator_test.go index 9e1403d..8235c0b 100644 --- a/tests/mysql/generator_test.go +++ b/tests/mysql/generator_test.go @@ -198,6 +198,26 @@ func assertGeneratedFiles(t *testing.T) { testutils.AssertFileContent(t, genTestDir3+"/dvds/model/actor.go", actorModelFile) } +func TestModelColumnComment(t *testing.T) { + testutils.AssertFileContent(t, "./../.gentestdata/mysql/test_sample/model/link.go", ` +// +// Code generated by go-jet DO NOT EDIT. +// +// WARNING: Changes to this file may cause incorrect behavior +// and will be lost if the code is regenerated +// + +package model + +type Link struct { + ID int32 `+"`sql:\"primary_key\"`"+` // this is link id + URL string // link url + Name string // link name + Description *string // this is link description +} +`) +} + var mpaaRatingEnumFile = ` // // Code generated by go-jet DO NOT EDIT. @@ -244,7 +264,7 @@ var Actor = newActorTable("dvds", "actor", "") type actorTable struct { mysql.Table - //Columns + // Columns ActorID mysql.ColumnInteger FirstName mysql.ColumnString LastName mysql.ColumnString @@ -386,7 +406,7 @@ var ActorInfo = newActorInfoTable("dvds", "actor_info", "") type actorInfoTable struct { mysql.Table - //Columns + // Columns ActorID mysql.ColumnInteger FirstName mysql.ColumnString LastName mysql.ColumnString diff --git a/tests/postgres/generator_test.go b/tests/postgres/generator_test.go index f0600d2..e403719 100644 --- a/tests/postgres/generator_test.go +++ b/tests/postgres/generator_test.go @@ -322,7 +322,7 @@ var Actor = newActorTable("dvds", "actor", "") type actorTable struct { postgres.Table - //Columns + // Columns ActorID postgres.ColumnInteger FirstName postgres.ColumnString LastName postgres.ColumnString @@ -463,7 +463,7 @@ var ActorInfo = newActorInfoTable("dvds", "actor_info", "") type actorInfoTable struct { postgres.Table - //Columns + // Columns ActorID postgres.ColumnInteger FirstName postgres.ColumnString LastName postgres.ColumnString @@ -735,7 +735,7 @@ var AllTypes = newAllTypesTable("test_sample", "all_types", "") type allTypesTable struct { postgres.Table - //Columns + // Columns SmallIntPtr postgres.ColumnInteger SmallInt postgres.ColumnInteger IntegerPtr postgres.ColumnInteger diff --git a/tests/sqlite/generator_test.go b/tests/sqlite/generator_test.go index c987fc1..6286b3d 100644 --- a/tests/sqlite/generator_test.go +++ b/tests/sqlite/generator_test.go @@ -161,7 +161,7 @@ var Actor = newActorTable("", "actor", "") type actorTable struct { sqlite.Table - //Columns + // Columns ActorID sqlite.ColumnInteger FirstName sqlite.ColumnString LastName sqlite.ColumnString @@ -280,7 +280,7 @@ var FilmList = newFilmListTable("", "film_list", "") type filmListTable struct { sqlite.Table - //Columns + // Columns Fid sqlite.ColumnInteger Title sqlite.ColumnString Description sqlite.ColumnString