Implemented postgres table and enum comment generation

This commit is contained in:
Volker Lieber 2024-09-24 20:41:27 +02:00
parent 929109622e
commit ff82eb5df7
4 changed files with 33 additions and 3 deletions

View file

@ -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, "")
}

View file

@ -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, "")
}

View file

@ -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;

View file

@ -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 (