public async Task <IActionResult> Get(int page = 0, int pageSize = 10)
        {
            var query   = new CoursesArchive(page, pageSize);
            var results = await _mediator.Send(query);

            return(Ok(results));
        }
        public async Task <PagedCollection <CourseArchiveItem> > Handle(CoursesArchive request, CancellationToken cancellationToken)
        {
            if (null == request)
            {
                throw new ArgumentNullException(nameof(request));
            }

            await using var conn = new SqlConnection(_connectionStringProvider.ConnectionString);
            var results = await conn.QueryMultipleAsync(query, new { offset = request.Page *request.PageSize, pageSize = request.PageSize });

            var items      = (await results.ReadAsync()).Select(r => new CourseArchiveItem(r.Id, r.Title));
            var totalCount = await results.ReadSingleAsync <int>();

            return(new PagedCollection <CourseArchiveItem>(items, request.Page, request.PageSize, totalCount));
        }