Example #1
0
        /// <summary>
        /// Gets a database view.
        /// </summary>
        /// <param name="viewName">A database view name.</param>
        /// <param name="cancellationToken">The cancellation token.</param>
        /// <returns>A database view in the 'some' state if found; otherwise 'none'.</returns>
        /// <exception cref="ArgumentNullException"><paramref name="viewName"/> is <c>null</c>.</exception>
        public OptionAsync <IDatabaseView> GetView(Identifier viewName, CancellationToken cancellationToken = default)
        {
            if (viewName == null)
            {
                throw new ArgumentNullException(nameof(viewName));
            }

            return(QueryViewProvider.GetView(viewName, cancellationToken)
                   | MaterializedViewProvider.GetView(viewName, cancellationToken));
        }
Example #2
0
        /// <summary>
        /// Gets all database views.
        /// </summary>
        /// <param name="cancellationToken">A cancellation token.</param>
        /// <returns>A collection of database views.</returns>
        public async IAsyncEnumerable <IDatabaseView> GetAllViews([EnumeratorCancellation] CancellationToken cancellationToken = default)
        {
            var queryViews = await QueryViewProvider.GetAllViews(cancellationToken).ToListAsync(cancellationToken).ConfigureAwait(false);

            var materializedViews = await MaterializedViewProvider.GetAllViews(cancellationToken).ToListAsync(cancellationToken).ConfigureAwait(false);

            var views = queryViews
                        .Concat(materializedViews)
                        .OrderBy(v => v.Name.Schema)
                        .ThenBy(v => v.Name.LocalName);

            foreach (var view in views)
            {
                yield return(view);
            }
        }