Exemple #1
0
        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;
                }
            }
        }
Exemple #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 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));
            }
        }
Exemple #3
0
        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));
            }
        }
Exemple #4
0
        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));
        }
Exemple #5
0
        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
                           ));
            }
        }
Exemple #6
0
        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;
            }
        }
Exemple #7
0
        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));
            }
        }
Exemple #8
0
        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));
            }
        }