Skip to content

Instantly share code, notes, and snippets.

@hauxe
Created July 3, 2018 08:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hauxe/c4099e867335f41d72da9d001ad4bc8c to your computer and use it in GitHub Desktop.
Save hauxe/c4099e867335f41d72da9d001ad4bc8c to your computer and use it in GitHub Desktop.
// List lists data and paging the result
func (crud *CRUD) List(pageID, perPage int64) ([]interface{}, error) {
offset := (pageID - 1) * perPage
rows, err := crud.Config.DB.Queryx(crud.Config.sqlCRUDList, offset, perPage)
if err != nil {
return nil, errors.Wrap(err, "error crud list")
}
defer rows.Close()
result := []interface{}{}
for rows.Next() {
obj := crud.Config.Object.Get()
err = rows.StructScan(obj)
if err != nil {
return nil, errors.Wrap(err, "error crud scan")
}
re, err := buildListOfFields(obj, crud.Config.listedFields)
if err != nil {
return nil, errors.Wrap(err, "error build list of fields")
}
result = append(result, re)
}
err = rows.Err()
if err != nil {
return nil, errors.Wrap(err, "error crud loop rows list")
}
return result, nil
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment