storj/satellite/satellitedb/dbx/templates/golang.get-limitoffset.tmpl

54 lines
1.2 KiB
Cheetah
Raw Normal View History

{{- define "signature" -}}
Limited_{{ .Suffix }}({{ ctxparam .Args }},
limit int, offset int64) (
rows {{ sliceof .Row }}, err error)
{{- end -}}
{{- define "invoke" -}}
Limited_{{ .Suffix }}({{ ctxarg .Args }}, limit, offset)
{{- end -}}
{{- define "body" }}
{{ embedplaceholders .Info }}
{{ embedsql .Info "__embed_stmt" }}
var __values []interface{}
{{ embedvalues .Args "__values" }}
__values = append(__values, limit, offset)
var __stmt = __sqlbundle_Render(obj.dialect, __embed_stmt)
obj.logStmt(__stmt, __values...)
for {
rows, err = func() (rows {{ sliceof .Row }}, err error) {
__rows, err := obj.driver.QueryContext(ctx, __stmt, __values...)
if err != nil {
return nil, err
}
defer __rows.Close()
for __rows.Next() {
{{ initnew .Row }}
err = __rows.Scan({{ addrof (flatten .Row) }})
if err != nil {
return nil, err
}
rows = append(rows, {{ arg .Row }})
}
err = __rows.Err()
if err != nil {
return nil, err
}
return rows, nil
}()
if err != nil {
if obj.shouldRetry(err) {
continue
}
return nil, obj.makeErr(err)
}
return rows, nil
}
{{ end -}}