func queryProducts()

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()
}