From 8adfe45e382418c929e7ce7821bd36ca90eabe76 Mon Sep 17 00:00:00 2001 From: go-jet Date: Mon, 4 Oct 2021 10:46:46 +0200 Subject: [PATCH] Reuse generator logic between two generator functions. --- generator/postgres/postgres_generator.go | 45 +++++++++++------------- 1 file changed, 20 insertions(+), 25 deletions(-) diff --git a/generator/postgres/postgres_generator.go b/generator/postgres/postgres_generator.go index 3c8158e..9986d75 100644 --- a/generator/postgres/postgres_generator.go +++ b/generator/postgres/postgres_generator.go @@ -30,19 +30,19 @@ type DBConnection struct { // Generate generates jet files at destination dir from database connection details func Generate(destDir string, dbConn DBConnection, genTemplate ...template.Template) (err error) { - defer utils.ErrorCatch(&err) + dsn := fmt.Sprintf("postgresql://%s:%s@%s:%s/%s?sslmode=%s", + url.QueryEscape(dbConn.User), + url.QueryEscape(dbConn.Password), + dbConn.Host, + strconv.Itoa(dbConn.Port), + url.QueryEscape(dbConn.DBName), + dbConn.SslMode, + ) - connectionString := fmt.Sprintf("postgresql://%s:%s@%s:%s/%s?sslmode=%s&search_path=%s", - dbConn.User, url.QueryEscape(dbConn.Password), dbConn.Host, strconv.Itoa(dbConn.Port), dbConn.DBName, dbConn.SslMode, dbConn.SchemaName) - - db := openConnection(connectionString) - defer utils.DBClose(db) - - generate(db, dbConn.DBName, dbConn.SchemaName, destDir, genTemplate...) - - return + return GenerateDSN(dsn, dbConn.SchemaName, destDir, genTemplate...) } +// GenerateDSN generates jet files using dsn connection string func GenerateDSN(dsn, schema, destDir string, templates ...template.Template) (err error) { defer utils.ErrorCatch(&err) @@ -54,8 +54,17 @@ func GenerateDSN(dsn, schema, destDir string, templates ...template.Template) (e db := openConnection(dsn) defer utils.DBClose(db) - generate(db, cfg.Database, schema, destDir, templates...) + fmt.Println("Retrieving schema information...") + generatorTemplate := template.Default(postgres.Dialect) + if len(templates) > 0 { + generatorTemplate = templates[0] + } + schemaMetadata := metadata.GetSchema(db, &postgresQuerySet{}, schema) + + dirPath := path.Join(destDir, cfg.Database) + + template.ProcessSchema(dirPath, schemaMetadata, generatorTemplate) return } @@ -70,17 +79,3 @@ func openConnection(dsn string) *sql.DB { return db } - -func generate(db *sql.DB, dbName, schema, destDir string, templates ...template.Template) { - fmt.Println("Retrieving schema information...") - generatorTemplate := template.Default(postgres.Dialect) - if len(templates) > 0 { - generatorTemplate = templates[0] - } - - schemaMetadata := metadata.GetSchema(db, &postgresQuerySet{}, schema) - - dirPath := path.Join(destDir, dbName) - - template.ProcessSchema(dirPath, schemaMetadata, generatorTemplate) -}