public override async Task <SaleInfo> GetSale(SaleGet request, ServerCallContext context)
        {
            MySqlConnection db = new AppDb().Connection;
            await db.OpenAsync();

            var cmd = db.CreateCommand();

            // Database lookup with id
            cmd.CommandText = "SELECT ITEM.item_id, ITEM.name, ITEM.price, ITEMDETAIL.quantity, SALE.total_billed " +
                              "FROM ITEMDETAIL " +
                              "JOIN ITEM ON ITEMDETAIL.item_id = ITEM.item_id " +
                              "JOIN SALE ON sale.sale_id = ITEMDETAIL.sale_id " +
                              $"WHERE SALE.sale_id = {request.SaleId};";


            var salesinfo = await cmd.ExecuteReaderAsync();

            var totalBilled = 0f;

            // get item infos
            List <ItemRequestDetails> iteminfos = new List <ItemRequestDetails>();

            while (await salesinfo.ReadAsync())
            {
                iteminfos.Add(new ItemRequestDetails
                {
                    ItemId   = salesinfo.GetFieldValue <uint>(0),
                    Name     = salesinfo.GetFieldValue <string>(1),
                    Price    = salesinfo.GetFieldValue <float>(2),
                    Quantity = salesinfo.GetFieldValue <uint>(3)
                });

                totalBilled = salesinfo.GetFieldValue <float>(4);
            }

            await salesinfo.CloseAsync();

            await db.CloseAsync();

            await db.DisposeAsync();

            // TODO: proper return
            return(await Task.FromResult(new SaleInfo
            {
                ItemDetails = { iteminfos },
                SaleId = request.SaleId,
                TotalBilled = totalBilled
            }));
        }
        public override async Task <ErrorCodeReply> DeleteSale(SaleGet request, ServerCallContext context)
        {
            MySqlConnection db = new AppDb().Connection;
            await db.OpenAsync();

            var cmd = db.CreateCommand();

            cmd.CommandText = $"DELETE FROM sale WHERE sale_id = {request.SaleId}";

            var reader = await cmd.ExecuteReaderAsync();

            await reader.CloseAsync();

            bool recordsAffected = (reader.RecordsAffected >= 1);

            _logger.LogInformation($"Deleted sale with id: {request.SaleId} from database");

            return(new ErrorCodeReply
            {
                ErrorCode = recordsAffected
            });
        }