Simplify error handling in generator.

This commit is contained in:
go-jet 2019-09-20 18:20:26 +02:00
parent f5287628aa
commit 50bda95da2
10 changed files with 92 additions and 208 deletions

View file

@ -142,13 +142,10 @@ func (c ColumnMetaData) GoModelTag(isPrimaryKey bool) string {
return ""
}
func getColumnsMetaData(db *sql.DB, querySet DialectQuerySet, schemaName, tableName string) ([]ColumnMetaData, error) {
func getColumnsMetaData(db *sql.DB, querySet DialectQuerySet, schemaName, tableName string) []ColumnMetaData {
rows, err := db.Query(querySet.ListOfColumnsQuery(), schemaName, tableName)
if err != nil {
return nil, err
}
utils.PanicOnError(err)
defer rows.Close()
ret := []ColumnMetaData{}
@ -157,19 +154,13 @@ func getColumnsMetaData(db *sql.DB, querySet DialectQuerySet, schemaName, tableN
var name, isNullable, dataType, enumName string
var isUnsigned bool
err := rows.Scan(&name, &isNullable, &dataType, &enumName, &isUnsigned)
if err != nil {
return nil, err
}
utils.PanicOnError(err)
ret = append(ret, NewColumnMetaData(name, isNullable == "YES", dataType, enumName, isUnsigned))
}
err = rows.Err()
utils.PanicOnError(err)
if err != nil {
return nil, err
}
return ret, nil
return ret
}

View file

@ -11,5 +11,5 @@ type DialectQuerySet interface {
ListOfColumnsQuery() string
ListOfEnumsQuery() string
GetEnumsMetaData(db *sql.DB, schemaName string) ([]MetaData, error)
GetEnumsMetaData(db *sql.DB, schemaName string) []MetaData
}

View file

@ -3,6 +3,7 @@ package metadata
import (
"database/sql"
"fmt"
"github.com/go-jet/jet/internal/utils"
)
// SchemaMetaData struct
@ -23,25 +24,11 @@ const (
)
// GetSchemaMetaData returns schema information from db connection.
func GetSchemaMetaData(db *sql.DB, schemaName string, querySet DialectQuerySet) (schemaInfo SchemaMetaData, err error) {
func GetSchemaMetaData(db *sql.DB, schemaName string, querySet DialectQuerySet) (schemaInfo SchemaMetaData) {
schemaInfo.TablesMetaData, err = getTablesMetaData(db, querySet, schemaName, baseTable)
if err != nil {
return
}
schemaInfo.ViewsMetaData, err = getTablesMetaData(db, querySet, schemaName, view)
if err != nil {
return
}
schemaInfo.EnumsMetaData, err = querySet.GetEnumsMetaData(db, schemaName)
if err != nil {
return
}
schemaInfo.TablesMetaData = getTablesMetaData(db, querySet, schemaName, baseTable)
schemaInfo.ViewsMetaData = getTablesMetaData(db, querySet, schemaName, view)
schemaInfo.EnumsMetaData = querySet.GetEnumsMetaData(db, schemaName)
fmt.Println(" FOUND", len(schemaInfo.TablesMetaData), "table(s),", len(schemaInfo.ViewsMetaData), "view(s),",
len(schemaInfo.EnumsMetaData), "enum(s)")
@ -49,13 +36,10 @@ func GetSchemaMetaData(db *sql.DB, schemaName string, querySet DialectQuerySet)
return
}
func getTablesMetaData(db *sql.DB, querySet DialectQuerySet, schemaName, tableType string) ([]MetaData, error) {
func getTablesMetaData(db *sql.DB, querySet DialectQuerySet, schemaName, tableType string) []MetaData {
rows, err := db.Query(querySet.ListOfTablesQuery(), schemaName, tableType)
if err != nil {
return nil, err
}
utils.PanicOnError(err)
defer rows.Close()
ret := []MetaData{}
@ -63,24 +47,15 @@ func getTablesMetaData(db *sql.DB, querySet DialectQuerySet, schemaName, tableTy
var tableName string
err = rows.Scan(&tableName)
if err != nil {
return nil, err
}
utils.PanicOnError(err)
tableInfo, err := GetTableMetaData(db, querySet, schemaName, tableName)
if err != nil {
return nil, err
}
tableInfo := GetTableMetaData(db, querySet, schemaName, tableName)
ret = append(ret, tableInfo)
}
err = rows.Err()
utils.PanicOnError(err)
if err != nil {
return nil, err
}
return ret, nil
return ret
}

View file

@ -68,45 +68,31 @@ func (t TableMetaData) GoStructName() string {
}
// GetTableMetaData returns table info metadata
func GetTableMetaData(db *sql.DB, querySet DialectQuerySet, schemaName, tableName string) (tableInfo TableMetaData, err error) {
func GetTableMetaData(db *sql.DB, querySet DialectQuerySet, schemaName, tableName string) (tableInfo TableMetaData) {
tableInfo.SchemaName = schemaName
tableInfo.name = tableName
tableInfo.PrimaryKeys, err = getPrimaryKeys(db, querySet, schemaName, tableName)
if err != nil {
return
}
tableInfo.Columns, err = getColumnsMetaData(db, querySet, schemaName, tableName)
if err != nil {
return
}
tableInfo.PrimaryKeys = getPrimaryKeys(db, querySet, schemaName, tableName)
tableInfo.Columns = getColumnsMetaData(db, querySet, schemaName, tableName)
return
}
func getPrimaryKeys(db *sql.DB, querySet DialectQuerySet, schemaName, tableName string) (map[string]bool, error) {
func getPrimaryKeys(db *sql.DB, querySet DialectQuerySet, schemaName, tableName string) map[string]bool {
rows, err := db.Query(querySet.PrimaryKeysQuery(), schemaName, tableName)
if err != nil {
return nil, err
}
utils.PanicOnError(err)
primaryKeyMap := map[string]bool{}
for rows.Next() {
primaryKey := ""
err := rows.Scan(&primaryKey)
if err != nil {
return nil, err
}
utils.PanicOnError(err)
primaryKeyMap[primaryKey] = true
}
return primaryKeyMap, nil
return primaryKeyMap
}