snapshot of https://github.com/ent/ent.git (master, 2026-09-15; blobs > 131072B omitted)
Some checks failed
Atlas CI Public / lint (push) Failing after 13s
Atlas CI Public / sync (push) Has been skipped

This commit is contained in:
upstream-mirror
2026-09-15 22:12:36 +05:00
commit 4b3ad0b611
2680 changed files with 719472 additions and 0 deletions

View File

@@ -0,0 +1,84 @@
{{/*
Copyright 2019-present Facebook Inc. All rights reserved.
This source code is licensed under the Apache 2.0 license found
in the LICENSE file in the root directory of this source tree.
*/}}
{{/* gotype: entgo.io/ent/entc/gen.typeScope */}}
{{ define "dialect/sql/delete" }}
{{ $builder := pascal $.Scope.Builder }}
{{ $receiver := $.Scope.Receiver }}
{{ $mutation := print $receiver ".mutation" }}
func ({{ $receiver}} *{{ $builder }}) sqlExec(ctx context.Context) (int, error) {
_spec := sqlgraph.NewDeleteSpec({{ $.Package }}.Table, {{ if $.HasOneFieldID }}sqlgraph.NewFieldSpec({{ $.Package }}.{{ $.ID.Constant }}, field.{{ $.ID.Type.ConstName }}){{ else }}nil{{ end }})
{{- /* Allow mutating the sqlgraph.DeleteSpec by ent extensions or user templates.*/}}
{{- with $tmpls := matchTemplate "dialect/sql/delete/spec/*" }}
{{- range $tmpl := $tmpls }}
{{- xtemplate $tmpl $ }}
{{- end }}
{{- end }}
if ps := {{ $mutation }}.Predicates(); len(ps) > 0 {
_spec.Predicate = func(selector *sql.Selector) {
for i := range ps {
ps[i](selector)
}
}
}
{{- if $.HasBlobFields }}
// Collect blob keys before deleting rows so we can remove blobs from storage afterward.
_blobKeys, _blobErr := ent.NewBlobs({{ $mutation }}.blobOpeners.{{ $.Name }}).Delete(ctx, &sqlgraph.BlobSpec{
Driver: {{ $receiver }}.driver,
Predicate: _spec.Predicate,
Table: {{ $.Package }}.Table,
Columns: map[string]string{
{{- range $f := $.BlobFields }}
{{ $.Package }}.{{ $f.Constant }}: "{{ $f.BlobKeyColumn }}",
{{- end }}
},
{{- if $.HasBlobRefCheckedFields }}
CheckRefs: map[string]bool{
{{- range $f := $.BlobRefCheckedFields }}
{{ $.Package }}.{{ $f.Constant }}: true,
{{- end }}
},
{{- end }}
})
if _blobErr != nil {
return 0, _blobErr
}
{{- end }}
affected, err := sqlgraph.DeleteNodes(ctx, {{ $receiver}}.driver, _spec)
if err != nil && sqlgraph.IsConstraintError(err) {
err = &ConstraintError{msg: err.Error(), wrap: err}
}
{{- if $.HasBlobFields }}
if err == nil {
// Resolve which blobs are unreferenced now that the rows are gone, while the
// transaction is still open, and remove them from storage once it commits.
_blobCleanup, _blobErr := _blobKeys.Cleanup(ctx)
if _blobErr != nil {
return 0, _blobErr
}
if txd, ok := {{ $receiver }}.driver.(*txDriver); ok {
txd.mu.Lock()
txd.onCommit = append(txd.onCommit, func(next Committer) Committer {
return CommitFunc(func(ctx context.Context, tx *Tx) error {
if err := next.Commit(ctx, tx); err != nil {
return err
}
return _blobCleanup(ctx)
})
})
txd.mu.Unlock()
} else {
err = _blobCleanup(ctx)
}
}
{{- end }}
{{ $mutation }}.done = true
return affected, err
}
{{ end }}