public async Task <IActionResult> DeleteVideo(string videoId)
        {
            await videoDb.Connection.OpenAsync();

            var query  = new VideoQuery(videoDb);
            var result = await query.FindVideoAsync(videoId);

            if (result is null)
            {
                return(new NotFoundResult());
            }
            try
            {
                //Delet physical binary
                var filePath = "videos/" + result.ServerId + "/" + videoId;
                System.IO.File.Delete(filePath);
                //Delet in data base
                await result.DeleteAsync();
            }
            catch (System.Exception)
            {
                return(new NotFoundResult());
            }
            return(new OkResult());
        }
        public async Task <IActionResult> GetVideo(string videoId)
        {
            await videoDb.Connection.OpenAsync();

            var query  = new VideoQuery(videoDb);
            var result = await query.FindVideoAsync(videoId);

            if (result is null)
            {
                return(new NotFoundResult());
            }
            return(new OkObjectResult(result));
        }
        public async Task <IActionResult> GetVideoBinary(string videoId)
        {
            await videoDb.Connection.OpenAsync();

            var query  = new VideoQuery(videoDb);
            var result = await query.FindVideoAsync(videoId);

            if (result is null)
            {
                return(new NotFoundResult());
            }

            // Open binary video
            byte[] fileBytes = System.IO.File.ReadAllBytes($"videos/{result.ServerId}/{videoId}");
            string fileName  = videoId;

            return(File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, fileName));
        }