From ff82eb5df7f1e971a1d32956a9bbf23f2d976884 Mon Sep 17 00:00:00 2001 From: Volker Lieber <42102008+VolkerLieber@users.noreply.github.com> Date: Tue, 24 Sep 2024 20:41:27 +0200 Subject: [PATCH] Implemented postgres table and enum comment generation --- generator/metadata/enum_meta_data.go | 17 +++++++++++++++-- generator/metadata/table_meta_data.go | 13 +++++++++++++ generator/postgres/query_set.go | 2 +- generator/template/file_templates.go | 4 ++++ 4 files changed, 33 insertions(+), 3 deletions(-) diff --git a/generator/metadata/enum_meta_data.go b/generator/metadata/enum_meta_data.go index 7aea3d6..733150b 100644 --- a/generator/metadata/enum_meta_data.go +++ b/generator/metadata/enum_meta_data.go @@ -1,7 +1,20 @@ package metadata +import "regexp" + // Enum metadata struct type Enum struct { - Name string `sql:"primary_key"` - Values []string + Name string `sql:"primary_key"` + Comment string + Values []string +} + +// GoLangComment returns enum comment without ascii control characters +func (e Enum) GoLangComment() string { + if e.Comment == "" { + return "" + } + + // remove ascii control characters from string + return regexp.MustCompile(`[[:cntrl:]]+`).ReplaceAllString(e.Comment, "") } diff --git a/generator/metadata/table_meta_data.go b/generator/metadata/table_meta_data.go index df9514e..95fd3c4 100644 --- a/generator/metadata/table_meta_data.go +++ b/generator/metadata/table_meta_data.go @@ -1,8 +1,11 @@ package metadata +import "regexp" + // Table metadata struct type Table struct { Name string `sql:"primary_key"` + Comment string Columns []Column } @@ -20,3 +23,13 @@ func (t Table) MutableColumns() []Column { return ret } + +// GoLangComment returns table comment without ascii control characters +func (t Table) GoLangComment() string { + if t.Comment == "" { + return "" + } + + // remove ascii control characters from string + return regexp.MustCompile(`[[:cntrl:]]+`).ReplaceAllString(t.Comment, "") +} diff --git a/generator/postgres/query_set.go b/generator/postgres/query_set.go index d549cf1..50129d1 100644 --- a/generator/postgres/query_set.go +++ b/generator/postgres/query_set.go @@ -14,7 +14,7 @@ type postgresQuerySet struct{} func (p postgresQuerySet) GetTablesMetaData(db *sql.DB, schemaName string, tableType metadata.TableType) ([]metadata.Table, error) { query := ` -SELECT table_name as "table.name" +SELECT table_name as "table.name", obj_description((table_schema||'.'||quote_ident(table_name))::regclass) as "table.comment" FROM information_schema.tables WHERE table_schema = $1 and table_type = $2 ORDER BY table_name; diff --git a/generator/template/file_templates.go b/generator/template/file_templates.go index f3aa505..45104db 100644 --- a/generator/template/file_templates.go +++ b/generator/template/file_templates.go @@ -26,6 +26,7 @@ import ( var {{tableTemplate.InstanceName}} = new{{tableTemplate.TypeName}}("{{schemaName}}", "{{.Name}}", "{{tableTemplate.DefaultAlias}}") +{{if .Comment }} // {{.GoLangComment}} {{end}} type {{structImplName}} struct { {{dialect.PackageName}}.Table @@ -119,6 +120,7 @@ import ( {{end}} {{$modelTableTemplate := tableTemplate}} +{{if .Comment }} // {{.GoLangComment}} {{end}} type {{$modelTableTemplate.TypeName}} struct { {{- range .Columns}} {{- $field := structField .}} @@ -132,6 +134,7 @@ var enumSQLBuilderTemplate = `package {{package}} import "github.com/go-jet/jet/v2/{{dialect.PackageName}}" +{{if .Comment }} // {{.GoLangComment}} {{end}} var {{enumTemplate.InstanceName}} = &struct { {{- range $index, $value := .Values}} {{enumValueName $value}} {{dialect.PackageName}}.StringExpression @@ -148,6 +151,7 @@ var enumModelTemplate = `package {{package}} import "errors" +{{if .Comment }} // {{.GoLangComment}} {{end}} type {{$enumTemplate.TypeName}} string const (