mirror of
https://github.com/ent/ent.git
synced 2026-05-24 09:31:56 +03:00
Reviewed By: alexsn Differential Revision: D17149292 fbshipit-source-id: 837de5fad988de1e54438b47584701f2fc35326d
78 lines
2.2 KiB
Cheetah
78 lines
2.2 KiB
Cheetah
{{/*
|
|
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.
|
|
*/}}
|
|
|
|
{{ define "delete" }}
|
|
{{ $pkg := base $.Config.Package }}
|
|
|
|
{{ template "header" $ }}
|
|
|
|
{{ template "import" $ }}
|
|
|
|
{{ $builder := print (pascal $.Name) "Delete" }}
|
|
{{ $receiver := receiver $builder }}
|
|
// {{ $builder }} is the builder for deleting a {{ pascal $.Name }} entity.
|
|
type {{ $builder }} struct {
|
|
config
|
|
predicates []predicate.{{ $.Name }}
|
|
}
|
|
|
|
|
|
// Where adds a new predicate for the builder.
|
|
func ({{ $receiver}} *{{ $builder }}) Where(ps ...predicate.{{ $.Name }}) *{{ $builder }} {
|
|
{{ $receiver}}.predicates = append({{ $receiver}}.predicates, ps...)
|
|
return {{ $receiver }}
|
|
}
|
|
|
|
// Exec executes the deletion query.
|
|
func ({{ $receiver}} *{{ $builder }}) Exec(ctx context.Context) error {
|
|
{{- if gt (len $.Storage) 1 -}}
|
|
switch {{ $receiver }}.driver.Dialect() {
|
|
{{- range $_, $storage := $.Storage }}
|
|
case {{ join $storage.Dialects ", " }}:
|
|
return {{ $receiver }}.{{ $storage }}Exec(ctx)
|
|
{{- end }}
|
|
default:
|
|
return errors.New("{{ $pkg }}: unsupported dialect")
|
|
}
|
|
{{- else -}}
|
|
return {{ $receiver }}.{{ index $.Storage 0 }}Exec(ctx)
|
|
{{- end }}
|
|
}
|
|
|
|
// ExecX is like Exec, but panics if an error occurs.
|
|
func ({{ $receiver }} *{{ $builder }}) ExecX(ctx context.Context) {
|
|
if err := {{ $receiver }}.Exec(ctx); err != nil {
|
|
panic(err)
|
|
}
|
|
}
|
|
|
|
{{- range $_, $storage := $.Storage }}
|
|
{{ with extend $ "Builder" $builder }}
|
|
{{ $tmpl := printf "dialect/%s/delete" $storage }}
|
|
{{ xtemplate $tmpl . }}
|
|
{{ end }}
|
|
{{ end }}
|
|
|
|
{{ $onebuilder := print $builder "One" }}
|
|
{{ $oneReceiver := receiver $onebuilder }}
|
|
|
|
// {{ $onebuilder }} is the builder for deleting a single {{ $.Name }} entity.
|
|
type {{ $onebuilder }} struct {
|
|
{{ $receiver }} *{{ $builder }}
|
|
}
|
|
|
|
// Exec executes the deletion query.
|
|
func ({{ $oneReceiver }} *{{ $onebuilder }}) Exec(ctx context.Context) error {
|
|
return {{ $oneReceiver }}.{{ $receiver }}.Exec(ctx)
|
|
}
|
|
|
|
// ExecX is like Exec, but panics if an error occurs.
|
|
func ({{ $oneReceiver }} *{{ $onebuilder }}) ExecX(ctx context.Context) {
|
|
{{ $oneReceiver }}.{{ $receiver }}.ExecX(ctx)
|
|
}
|
|
|
|
{{ end }}
|