117 lines
2.9 KiB
Smarty
117 lines
2.9 KiB
Smarty
{{- $tableNameSingular := .Table.Name | singular | titleCase -}}
|
|
{{- $varNameSingular := .Table.Name | singular | camelCase -}}
|
|
// OneP returns a single {{$tableNameSingular}} record from the query, and panics on error.
|
|
func (q {{$tableNameSingular}}Query) OneP() (*{{$tableNameSingular}}) {
|
|
o, err := q.One()
|
|
if err != nil {
|
|
panic(errors.Err(err))
|
|
}
|
|
|
|
return o
|
|
}
|
|
|
|
// One returns a single {{$tableNameSingular}} record from the query.
|
|
func (q {{$tableNameSingular}}Query) One() (*{{$tableNameSingular}}, error) {
|
|
o := &{{$tableNameSingular}}{}
|
|
|
|
queries.SetLimit(q.Query, 1)
|
|
|
|
err := q.Bind(o)
|
|
if err != nil {
|
|
if errors.Is(err, sql.ErrNoRows) {
|
|
return nil, nil
|
|
}
|
|
return nil, errors.Prefix("{{.PkgName}}: failed to execute a one query for {{.Table.Name}}", err)
|
|
}
|
|
|
|
{{if not .NoHooks -}}
|
|
if err := o.doAfterSelectHooks(queries.GetExecutor(q.Query)); err != nil {
|
|
return o, err
|
|
}
|
|
{{- end}}
|
|
|
|
return o, nil
|
|
}
|
|
|
|
// AllP returns all {{$tableNameSingular}} records from the query, and panics on error.
|
|
func (q {{$tableNameSingular}}Query) AllP() {{$tableNameSingular}}Slice {
|
|
o, err := q.All()
|
|
if err != nil {
|
|
panic(errors.Err(err))
|
|
}
|
|
|
|
return o
|
|
}
|
|
|
|
// All returns all {{$tableNameSingular}} records from the query.
|
|
func (q {{$tableNameSingular}}Query) All() ({{$tableNameSingular}}Slice, error) {
|
|
var o []*{{$tableNameSingular}}
|
|
|
|
err := q.Bind(&o)
|
|
if err != nil {
|
|
return nil, errors.Prefix("{{.PkgName}}: failed to assign all query results to {{$tableNameSingular}} slice", err)
|
|
}
|
|
|
|
{{if not .NoHooks -}}
|
|
if len({{$varNameSingular}}AfterSelectHooks) != 0 {
|
|
for _, obj := range o {
|
|
if err := obj.doAfterSelectHooks(queries.GetExecutor(q.Query)); err != nil {
|
|
return o, err
|
|
}
|
|
}
|
|
}
|
|
{{- end}}
|
|
|
|
return o, nil
|
|
}
|
|
|
|
// CountP returns the count of all {{$tableNameSingular}} records in the query, and panics on error.
|
|
func (q {{$tableNameSingular}}Query) CountP() int64 {
|
|
c, err := q.Count()
|
|
if err != nil {
|
|
panic(errors.Err(err))
|
|
}
|
|
|
|
return c
|
|
}
|
|
|
|
// Count returns the count of all {{$tableNameSingular}} records in the query.
|
|
func (q {{$tableNameSingular}}Query) Count() (int64, error) {
|
|
var count int64
|
|
|
|
queries.SetSelect(q.Query, nil)
|
|
queries.SetCount(q.Query)
|
|
|
|
err := q.Query.QueryRow().Scan(&count)
|
|
if err != nil {
|
|
return 0, errors.Prefix("{{.PkgName}}: failed to count {{.Table.Name}} rows", err)
|
|
}
|
|
|
|
return count, nil
|
|
}
|
|
|
|
// Exists checks if the row exists in the table, and panics on error.
|
|
func (q {{$tableNameSingular}}Query) ExistsP() bool {
|
|
e, err := q.Exists()
|
|
if err != nil {
|
|
panic(errors.Err(err))
|
|
}
|
|
|
|
return e
|
|
}
|
|
|
|
// Exists checks if the row exists in the table.
|
|
func (q {{$tableNameSingular}}Query) Exists() (bool, error) {
|
|
var count int64
|
|
|
|
queries.SetCount(q.Query)
|
|
queries.SetSelect(q.Query, []string{})
|
|
queries.SetLimit(q.Query, 1)
|
|
|
|
err := q.Query.QueryRow().Scan(&count)
|
|
if err != nil {
|
|
return false, errors.Prefix("{{.PkgName}}: failed to check if {{.Table.Name}} exists", err)
|
|
}
|
|
|
|
return count > 0, nil
|
|
}
|