schema/field: add Blob to use io.Reader

This commit is contained in:
Giau. Tran Minh
2026-05-05 07:21:16 +00:00
parent 7a21ec2e29
commit 630ab6b914
37 changed files with 2334 additions and 272 deletions

View File

@@ -79,7 +79,7 @@ func ({{ $receiver }} *{{ $builder }}) sqlSave(ctx context.Context) (*{{ $.Name
{{- end }}
{{- if $.HasBlobFields }}
{{- range $f := $.BlobFields }}
if data, ok := {{ $mutation }}.{{ $f.StructField }}(); ok {
if r, ok := {{ $mutation }}.{{ $f.StructField }}(); ok {
b, err := {{ $mutation }}.blobOpeners.{{ $.Name }}(ctx, {{ $.Package }}.{{ $f.Constant }})
if err != nil {
return nil, fmt.Errorf("{{ $pkg }}: opening blob bucket for {{ $f.Name }}: %w", err)
@@ -92,7 +92,7 @@ func ({{ $receiver }} *{{ $builder }}) sqlSave(ctx context.Context) (*{{ $.Name
if err != nil {
return nil, errors.Join(fmt.Errorf("{{ $pkg }}: creating writer for {{ $f.Name }}: %w", err), b.Close())
}
if _, err := w.Write(data); err != nil {
if _, err := io.Copy(w, r); err != nil {
return nil, errors.Join(fmt.Errorf("{{ $pkg }}: writing blob for {{ $f.Name }}: %w", err), w.Close(), b.Close())
}
if err := errors.Join(w.Close(), b.Close()); err != nil {
@@ -289,7 +289,7 @@ func ({{ $receiver }} *{{ $builder }}) Save(ctx context.Context) ([]*{{ $.Name }
{{- end }}
mutation.done = true
{{- range $f := $.BlobFields }}
if data, ok := mutation.{{ $f.StructField }}(); ok {
if r, ok := mutation.{{ $f.StructField }}(); ok {
if _blob{{ $f.StructField }} == nil {
if _blob{{ $f.StructField }}, err = mutation.blobOpeners.{{ $.Name }}(ctx, {{ $.Package }}.{{ $f.Constant }}); err != nil {
return nil, fmt.Errorf("{{ $pkg }}: opening blob bucket for {{ $f.Name }}: %w", err)
@@ -303,7 +303,7 @@ func ({{ $receiver }} *{{ $builder }}) Save(ctx context.Context) ([]*{{ $.Name }
if err != nil {
return nil, fmt.Errorf("{{ $pkg }}: creating writer for {{ $f.Name }}: %w", err)
}
if _, err := w.Write(data); err != nil {
if _, err := io.Copy(w, r); err != nil {
return nil, errors.Join(fmt.Errorf("{{ $pkg }}: writing blob for {{ $f.Name }}: %w", err), w.Close())
}
if err := w.Close(); err != nil {

View File

@@ -189,7 +189,7 @@ func ({{ $receiver }} *{{ $builder }}) sqlSave(ctx context.Context) (_node {{ if
{{ $mutation }}.done = true
{{- if and $one $.HasBlobFields }}
{{- range $f := $.BlobFields }}
if data, ok := {{ $mutation }}.{{ $f.StructField }}(); ok {
if r, ok := {{ $mutation }}.{{ $f.StructField }}(); ok {
b, err := {{ $mutation }}.blobOpeners.{{ $.Name }}(ctx, {{ $.Package }}.{{ $f.Constant }})
if err != nil {
return nil, fmt.Errorf("{{ $pkg }}: opening blob bucket for {{ $f.Name }}: %w", err)
@@ -202,7 +202,7 @@ func ({{ $receiver }} *{{ $builder }}) sqlSave(ctx context.Context) (_node {{ if
if err != nil {
return nil, errors.Join(fmt.Errorf("{{ $pkg }}: creating writer for {{ $f.Name }}: %w", err), b.Close())
}
if _, err := w.Write(data); err != nil {
if _, err := io.Copy(w, r); err != nil {
return nil, errors.Join(fmt.Errorf("{{ $pkg }}: writing blob for {{ $f.Name }}: %w", err), w.Close(), b.Close())
}
if err := errors.Join(w.Close(), b.Close()); err != nil {