in products.go [66:98]
func queryProducts(ctx context.Context, db *sqlx.DB, id *int) ([]Product, error) {
var args []interface{}
queryString := `SELECT
products.id, products.sku, products.name, products.description,
products.stock, products.cost, products.selling_price,
products.type_id, product_types.name
FROM products JOIN product_types ON type_id=product_types.id
`
if id != nil {
queryString += "WHERE products.id=?\n"
args = append(args, *id)
}
rows, err := db.QueryContext(ctx, db.Rebind(queryString), args...)
if err != nil {
return nil, errors.Wrap(err, "querying products")
}
defer rows.Close()
var products []Product
for rows.Next() {
var p Product
if err := rows.Scan(
&p.ID, &p.SKU, &p.Name, &p.Description,
&p.Stock, &p.Cost, &p.SellingPrice,
&p.TypeID, &p.TypeName,
); err != nil {
return nil, err
}
products = append(products, p)
}
return products, rows.Err()
}