public async Task <IEnumerable <Concept> > GetWithParentsAsync(HashSet <Guid> ids) { log.LogInformation("Getting parent concepts for Ids:{Ids}", ids); using (var cn = new SqlConnection(opts.ConnectionString)) { await cn.OpenAsync(); try { var grid = await cn.QueryMultipleAsync( queryParents, new { ids = ResourceIdTable.From(ids), user = user.UUID, groups = GroupMembership.From(user), admin = user.IsAdmin }, commandTimeout : opts.DefaultTimeout, commandType : CommandType.StoredProcedure ); return(HydratedConceptReader.Read(grid)); } catch (SqlException se) { log.LogError("Could not get rooted concepts of children ids {Ids}. Error:{Error}", ids, se.Message); se.MapThrow(); throw; } } }
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 grid = await cn.QueryMultipleAsync( ResourcePreflightSql.byIds, new { qids = ResourceIdTable.From(qids), cids = ResourceIdTable.From(cids), 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 <QuerySaveResult> InitialSaveAsync(QuerySave query) { var urn = QueryUrn.Create(query.QueryId); var conceptids = query.Resources.Concepts.Select(c => c.Id.Value).Where(c => c != Guid.Empty); var queryids = query.Resources.Queries.Select(q => q.Id.Value); using (var cn = new SqlConnection(dbOpts.ConnectionString)) { await cn.OpenAsync(); var qsr = await cn.QueryFirstOrDefaultAsync <QuerySaveResultRecord>( initialQuerySave, new { queryid = query.QueryId, urn = urn.ToString(), name = query.Name, category = query.Category, conceptids = ResourceIdTable.From(conceptids), queryids = ResourceIdTable.From(queryids), definition = query.Definition, user = user.UUID }, commandType : CommandType.StoredProcedure, commandTimeout : dbOpts.DefaultTimeout ); if (qsr == null) { return(null); } return(new QuerySaveResult(query.QueryId, QueryUrn.From(qsr.UniversalId), qsr.Ver)); } }
async Task <PreflightConcepts> GetByIdsAsync(SqlConnection cn, HashSet <Guid> conceptIds) { var grid = await cn.QueryMultipleAsync( ConceptPreflightSql.manyIds, new { ids = ResourceIdTable.From(conceptIds), user = user.UUID, groups = GroupMembership.From(user), admin = user.IsAdmin }, commandTimeout : opts.DefaultTimeout, commandType : CommandType.StoredProcedure ); return(PreflightReader.ReadConcepts(grid)); }
async Task <IEnumerable <ConceptPreflightCheckResult> > InternalCheckAsync(IEnumerable <ConceptRef> concepts) { logger.LogInformation("Concept Preflight Check Internal. Concepts:{@Concepts}", concepts); using (var cn = new SqlConnection(dbOpts.ConnectionString)) { await cn.OpenAsync(); return(await cn.QueryAsync <ConceptPreflightCheckResult>( Sql.QueryInternal, new { ids = ResourceIdTable.From(concepts.Select(c => c.Id.Value)), user = user.UUID, groups = GroupMembership.From(user) }, commandType : CommandType.StoredProcedure, commandTimeout : dbOpts.DefaultTimeout )); } }
async Task <QuerySaveResult> UpsertSave(QuerySave query) { var conceptids = query.Resources.Concepts.Select(c => c.Id.Value); var queryids = query.Resources.Queries.Select(q => q.Id.Value); try { using (var cn = new SqlConnection(dbOpts.ConnectionString)) { await cn.OpenAsync(); var qsr = await cn.QueryFirstOrDefaultAsync <QuerySaveResultRecord>( upsertQuerySave, new { queryid = query.QueryId, urn = query.UniversalId.ToString(), ver = query.Ver, name = query.Name, category = query.Category, conceptids = ResourceIdTable.From(conceptids), queryids = ResourceIdTable.From(queryids), definition = query.Definition, user = user.UUID }, commandType : CommandType.StoredProcedure, commandTimeout : dbOpts.DefaultTimeout ); if (qsr == null) { return(null); } return(new QuerySaveResult(query.QueryId, QueryUrn.From(qsr.UniversalId), qsr.Ver)); } } catch (SqlException se) { logger.LogError("Could not save query. Query:{@Query} Code:{Code} Error:{Error}", query, se.ErrorCode, se.Message); se.MapThrow(); throw; } }
public async Task <IEnumerable <Concept> > GetAsync(HashSet <Guid> ids) { using (var cn = new SqlConnection(opts.ConnectionString)) { await cn.OpenAsync(); var grid = await cn.QueryMultipleAsync( queryMany, new { ids = ResourceIdTable.From(ids), user = user.UUID, groups = GroupMembership.From(user), admin = user.IsAdmin }, commandTimeout : opts.DefaultTimeout, commandType : CommandType.StoredProcedure ); return(HydratedConceptReader.Read(grid)); } }
public async Task <PreflightConcepts> GetConceptsByIdsAsync(HashSet <Guid> conceptIds) { using (var cn = new SqlConnection(opts.ConnectionString)) { await cn.OpenAsync(); var grid = await cn.QueryMultipleAsync( ConceptPreflightSql.manyIds, new { ids = ResourceIdTable.From(conceptIds), user = user.UUID, groups = GroupMembership.From(user), admin = user.IsAdmin, sessionType = user.SessionType }, commandTimeout : opts.DefaultTimeout, commandType : CommandType.StoredProcedure ); return(PreflightReader.ReadConcepts(grid)); } }