public DapperRepository(ISoftDeleteQueryFilter softDeleteQueryFilter,
                                ILogger <DapperRepository <TEntity, TPrimaryKey> > logger)
        {
            _softDeleteQueryFilter = softDeleteQueryFilter;
            _logger = logger;
            _creationActionFilter            = ServiceLocator.GetService <IAuditActionFilter <TEntity, TPrimaryKey> >(typeof(CreationAuditDapperActionFilter <TEntity, TPrimaryKey>).Name);
            _modificationActionFilter        = ServiceLocator.GetService <IAuditActionFilter <TEntity, TPrimaryKey> >(typeof(ModificationAuditDapperActionFilter <TEntity, TPrimaryKey>).Name);
            _deletionAuditDapperActionFilter = ServiceLocator.GetService <IAuditActionFilter <TEntity, TPrimaryKey> >(typeof(DeletionAuditDapperActionFilter <TEntity, TPrimaryKey>).Name);

            isUserSearchElasitcModule = DbSetting.Instance.UseElasicSearchModule;
            if (isUserSearchElasitcModule)
            {
                _creationElasitcFilter     = ServiceLocator.GetService <IElasticFilter <TEntity, TPrimaryKey> >(typeof(CreationElasticFilter <TEntity, TPrimaryKey>).Name);
                _modificationElasitcFilter = ServiceLocator.GetService <IElasticFilter <TEntity, TPrimaryKey> >(typeof(ModificationElasticFilter <TEntity, TPrimaryKey>).Name);
                _deletionElasitcFilter     = ServiceLocator.GetService <IElasticFilter <TEntity, TPrimaryKey> >(typeof(DeletionElasticFilter <TEntity, TPrimaryKey>).Name);
            }
        }
Exemple #2
0
        protected JProperty CreateQueryElem(IElasticFilter filter, string[] disableOr, string[] disableNot, string[] disableLike)
        {
            var simpleFilter = filter as SimpleFilter;
            var rangeFilter  = filter as RangeFilter;
            var queryFilter  = filter as QueryFilter;
            var groupFilter  = filter as GroupFilter;

            JProperty result = null;

            if (groupFilter != null)
            {
                var props = groupFilter.Filters.Select(n =>
                                                       CreateQueryElem(n, disableOr, disableNot, disableLike)).ToArray();

                return((groupFilter.IsDisjunction) ? Should(props) : Must(props));
            }

            if (simpleFilter != null)
            {
                result = simpleFilter.Name != Options.TypePath
                    ? GetSingleFilterWithNot(simpleFilter.Name, simpleFilter.Values, simpleFilter.FromJson, disableOr, disableNot, disableLike)
                    : null;
            }

            if (rangeFilter != null)
            {
                result = new JProperty("range",
                                       new JObject(GetSingleRangeQuery(rangeFilter))
                                       );
            }

            if (queryFilter != null)
            {
                result = new JProperty("query_string",
                                       JObject.FromObject(new { query = queryFilter.Query, lenient = true })
                                       );
            }

            if (filter.IsDisjunction && result != null)
            {
                result.Value["or"] = true;
            }

            return(result);
        }