private async Task <GenericDataContainer> BuildContainer(SqlDataReader reader, SqlTableSetup tableSetup)
        {
            var id       = (int)reader[tableSetup.IdColumnName];
            var metadata = await metadataStorage.GetFromIdAsync(tableSetup.DataType, id.ToString());

            if (metadata == null)
            {
                var utcNow = DateTime.UtcNow;
                metadata = new GenericDataContainer(
                    id.ToString(),
                    "unknown",
                    utcNow,
                    "unknown",
                    utcNow,
                    ApiVersion.Current,
                    new BsonDocument());
            }

            var data = BsonDocumentBuilder.BuildFromDelimitedColumns(reader, tableSetup);

            return(new GenericDataContainer(
                       id.ToString(),
                       metadata.OriginalSubmitter,
                       metadata.CreatedTimeUtc,
                       metadata.Submitter,
                       metadata.SubmissionTimeUtc,
                       metadata.ApiVersion,
                       data));
        }
        public IAsyncEnumerable <BsonDocument> SearchAsync(DataApiSqlQuery parsedQuery, uint?maxResults = null)
        {
            var dataType = parsedQuery.FromArguments;
            var query    = queryBuilder.Build(parsedQuery, dataType);

            return(sqlQueryExecutor.ExecuteReaderAsync(query).Select(reader => BsonDocumentBuilder.BuildFromDelimitedColumns((SqlDataReader)reader)));
        }