From e4ceb421de45f70476c69fdac65717048a2dde18 Mon Sep 17 00:00:00 2001 From: TotallyGamerJet Date: Fri, 17 Jan 2025 14:49:04 -0500 Subject: [PATCH 1/2] generator/*: allow passing DB directly Closes #441 --- generator/mysql/mysql_generator.go | 7 ++++--- generator/postgres/postgres_generator.go | 10 +++++++++- generator/sqlite/sqlite_generator.go | 5 +++++ 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/generator/mysql/mysql_generator.go b/generator/mysql/mysql_generator.go index 7495bec..fe2fa2a 100644 --- a/generator/mysql/mysql_generator.go +++ b/generator/mysql/mysql_generator.go @@ -38,7 +38,7 @@ func Generate(destDir string, dbConn DBConnection, generatorTemplate ...template } defer db.Close() - err = generate(db, dbConn.DBName, destDir, generatorTemplate...) + err = GenerateDB(db, dbConn.DBName, destDir, generatorTemplate...) if err != nil { return err } @@ -70,7 +70,7 @@ func GenerateDSN(dsn, destDir string, templates ...template.Template) error { } defer db.Close() - err = generate(db, cfg.DBName, destDir, templates...) + err = GenerateDB(db, cfg.DBName, destDir, templates...) if err != nil { return fmt.Errorf("failed to generate: %w", err) } @@ -96,7 +96,8 @@ func openConnection(connectionString string) (*sql.DB, error) { return db, nil } -func generate(db *sql.DB, dbName, destDir string, templates ...template.Template) error { +// GenerateDB generates jet files using the provided *sql.DB +func GenerateDB(db *sql.DB, dbName, destDir string, templates ...template.Template) error { fmt.Println("Retrieving database information...") // No schemas in MySQL schemaMetaData, err := metadata.GetSchema(db, &mySqlQuerySet{}, dbName) diff --git a/generator/postgres/postgres_generator.go b/generator/postgres/postgres_generator.go index 0b503ef..8346903 100644 --- a/generator/postgres/postgres_generator.go +++ b/generator/postgres/postgres_generator.go @@ -56,6 +56,14 @@ func GenerateDSN(dsn, schema, destDir string, templates ...template.Template) er defer db.Close() fmt.Println("Retrieving schema information...") + return GenerateDB(db, schema, cfg.Database, destDir, templates...) +} + +// GenerateDB generates jet files using the provided *sql.DB +func GenerateDB(db *sql.DB, dbName, schema, destDir string, templates ...template.Template) error { + if dbName == "" { + return fmt.Errorf("database name is required") + } generatorTemplate := template.Default(postgres.Dialect) if len(templates) > 0 { generatorTemplate = templates[0] @@ -66,7 +74,7 @@ func GenerateDSN(dsn, schema, destDir string, templates ...template.Template) er return fmt.Errorf("failed to get '%s' schema metadata: %w", schema, err) } - dirPath := filepath.Join(destDir, cfg.Database) + dirPath := filepath.Join(destDir, dbName) err = template.ProcessSchema(dirPath, schemaMetadata, generatorTemplate) if err != nil { diff --git a/generator/sqlite/sqlite_generator.go b/generator/sqlite/sqlite_generator.go index eadc72b..a2a5cf8 100644 --- a/generator/sqlite/sqlite_generator.go +++ b/generator/sqlite/sqlite_generator.go @@ -3,6 +3,7 @@ package sqlite import ( "database/sql" "fmt" + "github.com/go-jet/jet/v2/generator/metadata" "github.com/go-jet/jet/v2/generator/template" "github.com/go-jet/jet/v2/sqlite" @@ -17,7 +18,11 @@ func GenerateDSN(dsn, destDir string, templates ...template.Template) error { defer db.Close() fmt.Println("Retrieving schema information...") + return GenerateDB(db, destDir, templates...) +} +// GenerateDB generates jet files using the provided *sql.DB +func GenerateDB(db *sql.DB, destDir string, templates ...template.Template) error { generatorTemplate := template.Default(sqlite.Dialect) if len(templates) > 0 { generatorTemplate = templates[0] From 8975f87830d5219579d5adb82f283143e04a808a Mon Sep 17 00:00:00 2001 From: TotallyGamerJet Date: Tue, 21 Jan 2025 14:06:34 -0500 Subject: [PATCH 2/2] Remove dbName as argument --- generator/postgres/postgres_generator.go | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/generator/postgres/postgres_generator.go b/generator/postgres/postgres_generator.go index 8346903..196840e 100644 --- a/generator/postgres/postgres_generator.go +++ b/generator/postgres/postgres_generator.go @@ -56,14 +56,11 @@ func GenerateDSN(dsn, schema, destDir string, templates ...template.Template) er defer db.Close() fmt.Println("Retrieving schema information...") - return GenerateDB(db, schema, cfg.Database, destDir, templates...) + return GenerateDB(db, schema, filepath.Join(destDir, cfg.Database), templates...) } // GenerateDB generates jet files using the provided *sql.DB -func GenerateDB(db *sql.DB, dbName, schema, destDir string, templates ...template.Template) error { - if dbName == "" { - return fmt.Errorf("database name is required") - } +func GenerateDB(db *sql.DB, schema, destDir string, templates ...template.Template) error { generatorTemplate := template.Default(postgres.Dialect) if len(templates) > 0 { generatorTemplate = templates[0] @@ -74,9 +71,7 @@ func GenerateDB(db *sql.DB, dbName, schema, destDir string, templates ...templat return fmt.Errorf("failed to get '%s' schema metadata: %w", schema, err) } - dirPath := filepath.Join(destDir, dbName) - - err = template.ProcessSchema(dirPath, schemaMetadata, generatorTemplate) + err = template.ProcessSchema(destDir, schemaMetadata, generatorTemplate) if err != nil { return fmt.Errorf("failed to generate schema %s: %d", schemaMetadata.Name, err) }