Merge pull request #443 from TotallyGamerJet/441_gen

generator/*: allow passing DB directly
This commit is contained in:
go-jet 2025-01-23 14:24:57 +01:00 committed by GitHub
commit 00b8155f74
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 15 additions and 6 deletions

View file

@ -38,7 +38,7 @@ func Generate(destDir string, dbConn DBConnection, generatorTemplate ...template
} }
defer db.Close() defer db.Close()
err = generate(db, dbConn.DBName, destDir, generatorTemplate...) err = GenerateDB(db, dbConn.DBName, destDir, generatorTemplate...)
if err != nil { if err != nil {
return err return err
} }
@ -70,7 +70,7 @@ func GenerateDSN(dsn, destDir string, templates ...template.Template) error {
} }
defer db.Close() defer db.Close()
err = generate(db, cfg.DBName, destDir, templates...) err = GenerateDB(db, cfg.DBName, destDir, templates...)
if err != nil { if err != nil {
return fmt.Errorf("failed to generate: %w", err) return fmt.Errorf("failed to generate: %w", err)
} }
@ -96,7 +96,8 @@ func openConnection(connectionString string) (*sql.DB, error) {
return db, nil 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...") fmt.Println("Retrieving database information...")
// No schemas in MySQL // No schemas in MySQL
schemaMetaData, err := metadata.GetSchema(db, &mySqlQuerySet{}, dbName) schemaMetaData, err := metadata.GetSchema(db, &mySqlQuerySet{}, dbName)

View file

@ -56,6 +56,11 @@ func GenerateDSN(dsn, schema, destDir string, templates ...template.Template) er
defer db.Close() defer db.Close()
fmt.Println("Retrieving schema information...") fmt.Println("Retrieving schema information...")
return GenerateDB(db, schema, filepath.Join(destDir, cfg.Database), templates...)
}
// GenerateDB generates jet files using the provided *sql.DB
func GenerateDB(db *sql.DB, schema, destDir string, templates ...template.Template) error {
generatorTemplate := template.Default(postgres.Dialect) generatorTemplate := template.Default(postgres.Dialect)
if len(templates) > 0 { if len(templates) > 0 {
generatorTemplate = templates[0] generatorTemplate = templates[0]
@ -66,9 +71,7 @@ func GenerateDSN(dsn, schema, destDir string, templates ...template.Template) er
return fmt.Errorf("failed to get '%s' schema metadata: %w", schema, err) return fmt.Errorf("failed to get '%s' schema metadata: %w", schema, err)
} }
dirPath := filepath.Join(destDir, cfg.Database) err = template.ProcessSchema(destDir, schemaMetadata, generatorTemplate)
err = template.ProcessSchema(dirPath, schemaMetadata, generatorTemplate)
if err != nil { if err != nil {
return fmt.Errorf("failed to generate schema %s: %d", schemaMetadata.Name, err) return fmt.Errorf("failed to generate schema %s: %d", schemaMetadata.Name, err)
} }

View file

@ -3,6 +3,7 @@ package sqlite
import ( import (
"database/sql" "database/sql"
"fmt" "fmt"
"github.com/go-jet/jet/v2/generator/metadata" "github.com/go-jet/jet/v2/generator/metadata"
"github.com/go-jet/jet/v2/generator/template" "github.com/go-jet/jet/v2/generator/template"
"github.com/go-jet/jet/v2/sqlite" "github.com/go-jet/jet/v2/sqlite"
@ -17,7 +18,11 @@ func GenerateDSN(dsn, destDir string, templates ...template.Template) error {
defer db.Close() defer db.Close()
fmt.Println("Retrieving schema information...") 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) generatorTemplate := template.Default(sqlite.Dialect)
if len(templates) > 0 { if len(templates) > 0 {
generatorTemplate = templates[0] generatorTemplate = templates[0]