Files
sqlgen/template.go
2026-06-25 13:35:41 +02:00

44 lines
800 B
Go

package sqlgen
import (
"bytes"
_ "embed"
"fmt"
"go/format"
"os"
"path/filepath"
"text/template"
)
//go:embed gen.go.tmpl
var fileTemplate string
func render(driver, schemaPath, outputPath string) (err error) {
outputPath, err = filepath.Abs(outputPath)
if err != nil {
return err
}
sch, err := parsePath(driver, schemaPath)
if err != nil {
return err
}
tmpl := template.Must(template.New("").Parse(fileTemplate))
buf := &bytes.Buffer{}
err = tmpl.Execute(buf, struct {
PackageName string
Schema *schema
}{filepath.Base(filepath.Dir(outputPath)), sch})
if err != nil {
return err
}
formatted, err := format.Source(buf.Bytes())
if err != nil {
return fmt.Errorf("formatting generated code: %w", err)
}
return os.WriteFile(outputPath, formatted, 0o644)
}