Ejemplo n.º 1
0
        public async Task <PreflightResources> GetResourcesByUniversalIdsAsync(ResourceRefs refs)
        {
            using (var cn = new SqlConnection(opts.ConnectionString))
            {
                await cn.OpenAsync();

                var quids = refs.Queries.Select(q => q.UniversalId.ToString()).ToHashSet();
                var cuids = refs.Concepts.Select(q => q.UniversalId.ToString()).ToHashSet();
                var grid  = await cn.QueryMultipleAsync(
                    ResourcePreflightSql.byUIds,
                    new {
                    quids       = ResourceUniversalIdTable.From(quids),
                    cuids       = ResourceUniversalIdTable.From(cuids),
                    user        = user.UUID,
                    groups      = GroupMembership.From(user),
                    sessionType = user.SessionType,
                    admin       = user.IsAdmin
                },
                    commandTimeout : opts.DefaultTimeout,
                    commandType : CommandType.StoredProcedure
                    );

                return(PreflightReader.ReadResourcesByUId(grid, refs.Queries));
            }
        }
Ejemplo n.º 2
0
        public async Task <PreflightResources> GetResourcesByIdsAsync(ResourceRefs refs)
        {
            using (var cn = new SqlConnection(opts.ConnectionString))
            {
                await cn.OpenAsync();

                var qids = refs.Queries.Select(q => q.Id.Value);
                var cids = refs.Concepts.Select(c => c.Id.Value);
                var iids = refs.Imports.Select(i => i.Id.Value);
                var grid = await cn.QueryMultipleAsync(
                    ResourcePreflightSql.byIds,
                    new {
                    qids        = ResourceIdTable.From(qids),
                    cids        = ResourceIdTable.From(cids),
                    iids        = ResourceIdTable.From(iids),
                    user        = user.UUID,
                    groups      = GroupMembership.From(user),
                    sessionType = user.SessionType,
                    admin       = user.IsAdmin
                },
                    commandTimeout : opts.DefaultTimeout,
                    commandType : CommandType.StoredProcedure
                    );

                return(PreflightReader.ReadResourcesById(grid, refs));
            }
        }
Ejemplo n.º 3
0
 async Task <PreflightResources> GetResourcesAsyncImpl(ResourceRefs refs)
 {
     if (user.IsInstitutional)
     {
         return(await reader.GetResourcesByIdsAsync(refs));
     }
     return(await reader.GetResourcesByUniversalIdsAsync(refs));
 }
Ejemplo n.º 4
0
 /// <summary>
 /// Preflight checks resources.
 /// </summary>
 /// <returns>Preflight check results, which contains the actual resources if the check passed.</returns>
 /// <param name="refs">Resource references.</param>
 /// <exception cref="System.Data.Common.DbException"/>
 public async Task <PreflightResources> GetResourcesAsync(ResourceRefs refs)
 {
     log.LogInformation("Getting preflight resource check. Refs:{@Refs}", refs);
     if (user.IsInstutional)
     {
         return(await reader.GetResourcesByIdsAsync(refs));
     }
     return(await reader.GetResourcesByUniversalIdsAsync(refs));
 }
Ejemplo n.º 5
0
        /// <summary>
        /// Preflight checks resources.
        /// </summary>
        /// <returns>Preflight check results, which contains the actual resources if the check passed.</returns>
        /// <param name="refs">Resource references.</param>
        /// <exception cref="System.Data.Common.DbException"/>
        public async Task <PreflightResources> GetResourcesAsync(ResourceRefs refs)
        {
            log.LogInformation("Getting preflight resources check. Refs:{@Refs}", refs);
            var pr = await GetResourcesAsyncImpl(refs);

            if (!pr.Ok)
            {
                log.LogError("Preflight resources check failed. Check:{@Check}", pr);
            }
            return(pr);
        }
Ejemplo n.º 6
0
        async Task <PreflightResources> GetByIdsAsync(SqlConnection cn, ResourceRefs refs)
        {
            var qids = refs.Queries.Select(q => q.Id.Value);
            var cids = refs.Concepts.Select(c => c.Id.Value);
            var grid = await cn.QueryMultipleAsync(
                ResourcePreflightSql.byIds,
                new { qids = ResourceIdTable.From(qids), cids = ResourceIdTable.From(cids), user = user.UUID, groups = GroupMembership.From(user), admin = user.IsAdmin },
                commandTimeout : opts.DefaultTimeout,
                commandType : CommandType.StoredProcedure
                );

            return(PreflightReader.ReadResourcesByUId(grid, refs.Queries));
        }
Ejemplo n.º 7
0
        public async Task <PreflightResources> GetAsync(ResourceRefs refs)
        {
            log.LogInformation("Getting preflight resource check. Refs:{@Refs}", refs);
            using (var cn = new SqlConnection(opts.ConnectionString))
            {
                await cn.OpenAsync();

                if (user.IsInstutional)
                {
                    return(await GetByIdsAsync(cn, refs));
                }
                return(await GetByUIdsAsync(cn, refs));
            }
        }
Ejemplo n.º 8
0
        public async Task <ActionResult <PreflightCheckDTO> > Preflight(
            [FromBody] ResourceRef resourceRef,
            [FromServices] IPreflightResourceReader preflightReader)
        {
            try
            {
                var refs = new ResourceRefs(new ResourceRef[] { resourceRef });
                var preflightResources = await preflightReader.GetAsync(refs);

                return(Ok(new PreflightCheckDTO(preflightResources)));
            }
            catch (LeafDbException lde)
            {
                return(StatusCode(lde.StatusCode));
            }
            catch (Exception e)
            {
                log.LogError("Could not preflight resource. Resource:{@Resource} Error:{Error}", resourceRef, e.ToString());
                return(StatusCode(StatusCodes.Status500InternalServerError));
            }
        }
Ejemplo n.º 9
0
        public static PreflightResources ReadResourcesByUId(SqlMapper.GridReader grid, ResourceRefs refs)
        {
            var pq = ReadQueriesByUId(grid);
            var pc = ReadConcepts(grid);
            var im = ReadImportsById(grid, refs.Imports);
            var pf = ReadGlobalPanelFilters(grid);

            return(new PreflightResources(refs.Queries, refs.Imports, pf)
            {
                DirectQueriesCheck = pq,
                DirectConceptsCheck = pc,
                DirectImportsCheck = im
            });
        }