/**
* @param string $sku
* @return Product
* @throws QueryException
*/
public function getBySku(string $sku) : Product
{
$qb = $this->connection->createQueryBuilder();
$qb->select('*')->from('dumplie_inventory_product')->where('sku = :sku')->setParameter('sku', $sku);
$productData = $this->connection->fetchAssoc($qb->getSQL(), $qb->getParameters());
if (empty($productData)) {
throw QueryException::productNotFound($sku);
}
return new Product($productData['sku'], $productData['price_amount'] / $productData['price_precision'], $productData['price_currency'], (bool) $productData['is_in_stock'], $this->mao->getBy([Metadata::FIELD_SKU => $productData['sku']]));
}