コード例 #1
0
        public BasicUserService(IBaseDbSettings settings, string collectionName)
            : base(settings.ConnectionString, settings.DatabaseName, collectionName)
        {
createIndex:
            try
            {
                collection.Indexes.CreateOne(new CreateIndexModel <TUser>(Builders <TUser> .IndexKeys.Ascending(l => l.Email), new CreateIndexOptions()
                {
                    Unique = true
                }));
                //Collation _caseInsensitiveCollation = new Collation("en", strength: CollationStrength.Primary);
                //collection.Indexes.CreateOne(new CreateIndexModel<TUser>(Builders<TUser>.IndexKeys.Ascending(l => l.KeyWords),
                //    new CreateIndexOptions() { Collation = _caseInsensitiveCollation }));
                //collection.Indexes.CreateOne(new CreateIndexModel<TUser>(Builders<TUser>.IndexKeys.Ascending(l => l.Followers)));
                //collection.Indexes.CreateOne(new CreateIndexModel<TUser>(Builders<TUser>.IndexKeys.Ascending(l => l.Awesomes)));
                //collection.Indexes.CreateOne(new CreateIndexModel<TUser>(Builders<TUser>.IndexKeys.Ascending(l => l.Roles)));
                //collection.Indexes.CreateOne(new CreateIndexModel<TUser>(Builders<TUser>.IndexKeys.Ascending(l => l.IsEmailConfirmed)));
                //collection.Indexes.CreateOne(new CreateIndexModel<TUser>(Builders<TUser>.IndexKeys.Ascending(l => l.Score)));
            }
            catch (Exception)
            {
                collection.Indexes.DropAll();
                goto createIndex;
            }
        }
コード例 #2
0
        public LogService(IBaseDbSettings settings, string collectionname, IMapper mapper, IDBQueryServicesSlim <TUser> userServices) :
            base(settings.ConnectionString, settings.DatabaseName, collectionname)
        {
            this.mapper       = mapper;
            this.userServices = userServices;
            var client   = new MongoClient(settings.ConnectionString);
            var database = client.GetDatabase(settings.DatabaseName);

            collection.Indexes.CreateOne(new CreateIndexModel <Auditlog <TUserBrief> >(Builders <Auditlog <TUserBrief> > .IndexKeys.Ascending(l => l.OperatedObjectInfo.Id)));
            collection.Indexes.CreateOne(new CreateIndexModel <Auditlog <TUserBrief> >(Builders <Auditlog <TUserBrief> > .IndexKeys.Ascending(l => l.Operator.Id)));
            collection.Indexes.CreateOne(new CreateIndexModel <Auditlog <TUserBrief> >(Builders <Auditlog <TUserBrief> > .IndexKeys.Ascending(l => l.Operation)));
            collection.Indexes.CreateOne(new CreateIndexModel <Auditlog <TUserBrief> >(Builders <Auditlog <TUserBrief> > .IndexKeys.Ascending(l => l.OperatedObjectInfo.OperatedUserId)));
            collection.Indexes.CreateOne(new CreateIndexModel <Auditlog <TUserBrief> >(Builders <Auditlog <TUserBrief> > .IndexKeys.Ascending(l => l.CreateTime)));
            collection.Indexes.CreateOne(new CreateIndexModel <Auditlog <TUserBrief> >(Builders <Auditlog <TUserBrief> > .IndexKeys.Ascending(l => l.OperatedObjectInfo.Infos["colname"])));
            collection.Indexes.CreateOne(new CreateIndexModel <Auditlog <TUserBrief> >(Builders <Auditlog <TUserBrief> > .IndexKeys.Ascending(l => l.OperatedObjectInfo.Infos)));
        }
コード例 #3
0
        /// <summary>
        /// 构造方法会自动建立所需要的索引
        /// </summary>
        /// <param name="settings"></param>
        /// <param name="colname">mongodb里article集合的名称</param>
        /// <param name="mapper"></param>
        /// <param name="logService">用来获取点赞、收藏信息的LogService</param>
        /// <param name="esClient">如果不用es,手动传入null</param>
        /// <param name="userService"></param>
        /// <param name="imageService">imageservice只有word上传用到了,不准备使用word上传功能的话可以设为null</param>
        /// <param name="readlogService">用来获得用户阅读信息的logservice,可以和之前的logservice相同</param>
        /// <param name="getSearchFromArticle">把article映射到articlesearch的函数</param>
        /// <param name="mapArticleToBrief">把article映射成brief的函数</param>
        public IntergratedArticleService(IBaseDbSettings settings, string colname, IMapper mapper,
                                         ILogService <TUserBrief> logService, IElasticClient esClient, IUserService <TUser> userService
                                         , IImageService imageService, ILogService <TUserBrief> readlogService
                                         , Func <TArticle, TArticleSearch> getSearchFromArticle, Expression <Func <TArticle, TArticleFeed> > mapArticleToBrief)
            : base(settings.ConnectionString, settings.DatabaseName, colname)
        {
            this.getSearchFromArticle = getSearchFromArticle;
            this.mapArticleToBrief    = mapArticleToBrief;
            this.readlogService       = readlogService;
            enableEs    = esClient != null;
            client      = esClient;
            allowedTags = HtmlSanitizer.DefaultAllowedTags.ToList();
            allowedTags.Add("audio");
            allowedTags.Add("svg");
            allowedTags.Add("source");
            allowedTags.Add("style");
            allowedTags.Add("path");
            allowedTags.Add("iframe");
            allowedTags.Add("img");
            allowedTags.Add("blockquote");
            allowedTags.Add("span");
            allowedTags.Add("center");
            this.userService = userService;
            this.logService  = logService;
            pipeline         = new MarkdownPipelineBuilder()
                               .UseAdvancedExtensions()
                               .UseDiagrams()
                               .UseEmphasisExtras()
                               .UseEmojiAndSmiley()
                               .UseGridTables()
                               .UsePipeTables()
                               //.UseMathematics()
                               .UseMediaLinks()
                               .UseAutoLinks()
                               .UseFigures()
                               .UseFooters()
                               .UseFootnotes()
                               .Build();
            Collation _caseInsensitiveCollation = new Collation("en", strength: CollationStrength.Primary);

            this.imageService = imageService;
            this.mapper       = mapper;
createIndex:
            try
            {
                collection.Indexes.CreateOne(new CreateIndexModel <TArticle>(Builders <TArticle> .IndexKeys.Ascending(l => l.Stars)));
                collection.Indexes.CreateOne(new CreateIndexModel <TArticle>(Builders <TArticle> .IndexKeys.Ascending(l => l.Awesomes)));
                collection.Indexes.CreateOne(new CreateIndexModel <TArticle>(Builders <TArticle> .IndexKeys.Ascending(l => l.IsDraft)));
                collection.Indexes.CreateOne(new CreateIndexModel <TArticle>(Builders <TArticle> .IndexKeys.Ascending(l => l.AuthorBrief.Id)));
                collection.Indexes.CreateOne(new CreateIndexModel <TArticle>(Builders <TArticle> .IndexKeys.Ascending(l => l.Visibility)));
                collection.Indexes.CreateOne(new CreateIndexModel <TArticle>(Builders <TArticle> .IndexKeys.Ascending(l => l.KeyWords),
                                                                             new CreateIndexOptions()
                {
                    Collation = _caseInsensitiveCollation
                }));
                collection.Indexes.CreateOne(new CreateIndexModel <TArticle>(Builders <TArticle> .IndexKeys.Ascending(l => l.ProjectId)));
                collection.Indexes.CreateOne(new CreateIndexModel <TArticle>(Builders <TArticle> .IndexKeys.Ascending(l => l.Saved)));
                collection.Indexes.CreateOne(new CreateIndexModel <TArticle>(Builders <TArticle> .IndexKeys.Ascending(l => l.ArticleId)));
                collection.Indexes.CreateOne(new CreateIndexModel <TArticle>(Builders <TArticle> .IndexKeys.Ascending(l => l.Score)));
                collection.Indexes.CreateOne(new CreateIndexModel <TArticle>(Builders <TArticle> .IndexKeys.Ascending(l => l.Examined)));
                collection.Indexes.CreateOne(new CreateIndexModel <TArticle>(Builders <TArticle> .IndexKeys.Ascending(l => l.Tokens),
                                                                             new CreateIndexOptions()
                {
                    Collation = _caseInsensitiveCollation
                }));
                collection.Indexes.CreateOne(new CreateIndexModel <TArticle>(Builders <TArticle> .IndexKeys.Ascending(l => l.ManagedId)));
            }
            catch (Exception)
            {
                collection.Indexes.DropAll();
                goto createIndex;
            }
            Config config = new Config();

            // 设置上传区域
            config.Zone = Zone.ZONE_CN_East;
            // 设置 http 或者 https 上传
            config.UseHttps      = true;
            config.UseCdnDomains = true;
            config.ChunkSize     = ChunkUnit.U512K;
            target = new ResumableUploader(config);
            var attrs = new[]
            {
                "style",
                "class",
                "href",
                "alt",
                "src",
                "controls",
                "id",
                "preserveAspectRatio",
                "d",
                "viewBox",
                "width",
                "height",
                "title",
                "data-formula",
                "aria-hidden",
            };

            foreach (var item in attrs)
            {
                HtmlSanitizer.DefaultAllowedAttributes.Add(item);
            }
            sanitizer = new HtmlSanitizer(allowedTags, allowedAttributes: HtmlSanitizer.DefaultAllowedAttributes);
            //StartReportService();
            //StartElastic();
        }