personal-site/ent/entc.go
2025-04-01 19:21:21 -04:00

44 lines
1 KiB
Go

//go:build ignore
package main
import (
"log"
"ariga.io/ogent"
"entgo.io/contrib/entoas"
"entgo.io/ent/entc"
"entgo.io/ent/entc/gen"
"github.com/ogen-go/ogen"
)
var returnAllErrors = gen.MustParse(gen.NewTemplate("").Parse(`
{{ define "ogent/ogent/helper/error" }}{{/* gotype: entgo.io/ent/entc/gen.typeScope */}}
{{- $pkg := base $.Type.Config.Package }}
if err != nil {
{{- with $.Scope.Tx }}
if rErr := {{ . }}.Rollback(); rErr != nil {
return nil, fmt.Errorf("%w: %v", err, rErr)
}
{{- end }}
// Let the server handle the error.
return nil, err
}
{{ end }}
`))
func main() {
spec := new(ogen.Spec)
oas, err := entoas.NewExtension(entoas.Spec(spec))
if err != nil {
log.Fatalf("creating entoas extension: %v", err)
}
ogent, err := ogent.NewExtension(spec, ogent.Templates(returnAllErrors))
if err != nil {
log.Fatalf("creating ogent extension: %v", err)
}
err = entc.Generate("./schema", &gen.Config{}, entc.Extensions(ogent, oas))
if err != nil {
log.Fatalf("running ent codegen: %v", err)
}
}