/// <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)); }
/// <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); } }