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)); } }
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)); } }
async Task <PreflightResources> GetResourcesAsyncImpl(ResourceRefs refs) { if (user.IsInstitutional) { return(await reader.GetResourcesByIdsAsync(refs)); } return(await reader.GetResourcesByUniversalIdsAsync(refs)); }
/// <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)); }
/// <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); }
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)); }
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)); } }
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)); } }
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 }); }