Exemple #1
0
        public async Task <Concept> GetAsync(Guid id)
        {
            log.LogInformation("Getting Concept. Id:{Id}", id);
            using (var cn = new SqlConnection(opts.ConnectionString))
            {
                await cn.OpenAsync();

                try
                {
                    var grid = await cn.QueryMultipleAsync(
                        querySingle,
                        new
                    {
                        id,
                        user   = user.UUID,
                        groups = GroupMembership.From(user),
                        admin  = user.IsAdmin
                    },
                        commandTimeout : opts.DefaultTimeout,
                        commandType : CommandType.StoredProcedure
                        );

                    return(HydratedConceptReader.Read(grid).FirstOrDefault());
                }
                catch (SqlException se)
                {
                    log.LogError("Could not get concept by Id. Id:{Id} Error:{Error}", id, se.Message);
                    se.MapThrow();
                    throw;
                }
            }
        }
Exemple #2
0
        public async Task <ConceptTree> GetTreetopAsync()
        {
            log.LogInformation("Getting root Concepts and PanelFilters");

            using (var cn = new SqlConnection(opts.ConnectionString))
            {
                await cn.OpenAsync();

                var grid = await cn.QueryMultipleAsync(
                    queryRootsPanelFilters,
                    new { user = user.UUID, groups = GroupMembership.From(user), admin = user.IsAdmin },
                    commandTimeout : opts.DefaultTimeout,
                    commandType : CommandType.StoredProcedure
                    );

                var roots         = HydratedConceptReader.Read(grid);
                var filterRecords = grid.Read <PanelFilterRecord>();
                var filters       = filterRecords.Select(f => f.ToPanelFilter());

                return(new ConceptTree
                {
                    PanelFilters = filters,
                    Concepts = roots
                });
            }
        }
Exemple #3
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 #4
0
        public async Task <IEnumerable <Concept> > GetChildrenAsync(Guid parentId)
        {
            log.LogInformation("Getting child concepts. ParentId:{ParentId}", parentId);
            using (var cn = new SqlConnection(opts.ConnectionString))
            {
                await cn.OpenAsync();

                try
                {
                    var grid = await cn.QueryMultipleAsync(
                        queryChildren,
                        new
                    {
                        parentId,
                        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 child concepts. ParentId:{ParentId} Error:{Error}", parentId, se.Message);
                    se.MapThrow();
                    throw;
                }
            }
        }
Exemple #5
0
        public static PreflightConcepts ReadConcepts(SqlMapper.GridReader grid)
        {
            var preflight = grid.Read <ConceptPreflightCheckResultRecord>();
            var concepts  = HydratedConceptReader.Read(grid);

            return(new PreflightConcepts
            {
                PreflightCheck = new ConceptPreflightCheck {
                    Results = preflight.Select(p => p.ConceptPreflightCheckResult())
                },
                Concepts = concepts?.ToArray()
            });
        }
Exemple #6
0
        public async Task <IEnumerable <Concept> > GetRootsAsync()
        {
            log.LogInformation("Getting root Concepts");

            using (var cn = new SqlConnection(opts.ConnectionString))
            {
                await cn.OpenAsync();

                var grid = await cn.QueryMultipleAsync(
                    queryRoots,
                    new { user = user.UUID, groups = GroupMembership.From(user), admin = user.IsAdmin },
                    commandTimeout : opts.DefaultTimeout,
                    commandType : CommandType.StoredProcedure
                    );

                return(HydratedConceptReader.Read(grid));
            }
        }
Exemple #7
0
        public async Task <IEnumerable <Concept> > GetAsync(HashSet <Guid> ids)
        {
            log.LogInformation("Getting Concepts. Ids:{Ids}", 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 <IEnumerable <Concept> > GetWithParentsBySearchTermAsync(Guid?rootId, string[] terms)
        {
            log.LogInformation("Getting parent concepts by Search Terms:{terms}", terms);
            using (var cn = new SqlConnection(opts.ConnectionString))
            {
                await cn.OpenAsync();

                var grid = await cn.QueryMultipleAsync(
                    queryParentsBySearchTerm,
                    new
                {
                    terms = SearchTermTable.From(terms),
                    rootId,
                    user   = user.UUID,
                    groups = GroupMembership.From(user),
                    admin  = user.IsAdmin
                },
                    commandTimeout : opts.DefaultTimeout,
                    commandType : CommandType.StoredProcedure
                    );

                return(HydratedConceptReader.Read(grid));
            }
        }