Ejemplo n.º 1
0
 /// <summary>
 /// 删除数据
 /// </summary>
 /// <typeparam name="valueType">数据类型</typeparam>
 /// <typeparam name="modelType">模型类型</typeparam>
 /// <param name="sqlTool">SQL操作工具</param>
 /// <param name="connection">SQL连接</param>
 /// <param name="value">添加数据</param>
 /// <param name="query">添加数据查询信息</param>
 /// <returns></returns>
 internal override ReturnType Delete <valueType, modelType>(Sql.Table <valueType, modelType> sqlTool, ref DbConnection connection, valueType value, ref InsertQuery query)
 {
     //sqlTool.Log.Error(query.Sql, LogLevel.Error | LogLevel.AutoCSer);
     if (query.NotQuery)
     {
         ReturnValue <int> returnValue = executeNonQuery(ref connection, query.Sql);
         if (returnValue.ReturnType == ReturnType.Success)
         {
             if (returnValue.Value > 0)
             {
                 sqlTool.CallOnDeleted(value);
                 return(ReturnType.Success);
             }
             return(ReturnType.NotFoundData);
         }
         return(returnValue.ReturnType);
     }
     else
     {
         GetQuery <modelType> getQuery = new GetQuery <modelType> {
             MemberMap = sqlTool.SelectMemberMap, Sql = query.Sql
         };
         ReturnType returnType = Get(sqlTool, ref connection, value, ref getQuery);
         if (returnType == ReturnType.Success)
         {
             sqlTool.CallOnDeleted(value);
         }
         return(returnType);
     }
 }
Ejemplo n.º 2
0
        public async Task HandleShouldReturnFailWhenDatabaseSpecificErrorOccurs()
        {
            // Arrange
            var id = Guid.NewGuid();

            var userFinderMock = new Mock <IUserFinder>();

            userFinderMock.Setup(x => x.Get(id)).Throws <SomeDatabaseSpecificException>();
            var userFinder = userFinderMock.Object;

            var mapperMock = new Mock <IMapper>();

            mapperMock.Setup(x => x.Map <UserModel>(It.IsAny <object>())).Returns(new UserModel());
            var mapper = mapperMock.Object;

            var query = new GetQuery(id);

            var handler = new GetQueryHandler(mapper, userFinder);

            // Act
            var result = await handler.Handle(query, CancellationToken.None);

            // Assert
            result.IsFailure.Should().BeTrue();
            result.Failures.Should().OnlyContain(x => x.Message == CustomFailures.GetUserFailure);
        }
        public virtual IActionResult GetById([FromRoute] TIdentifier id)
        {
            var query  = new GetQuery <TModel>(id);
            var result = QueryDispatcher.Dispatch(query);

            return(OkOrNotFound(result));
        }
Ejemplo n.º 4
0
 /// <summary>
 /// 添加数据
 /// </summary>
 /// <typeparam name="valueType">数据类型</typeparam>
 /// <typeparam name="modelType">模型类型</typeparam>
 /// <param name="sqlTool">SQL操作工具</param>
 /// <param name="connection">SQL连接</param>
 /// <param name="value">添加数据</param>
 /// <param name="query">添加数据查询信息</param>
 /// <returns></returns>
 internal override ReturnType Insert <valueType, modelType>(Sql.Table <valueType, modelType> sqlTool, ref DbConnection connection, valueType value, ref InsertQuery query)
 {
     sqlTool.Log.Error(query.Sql, LogLevel.Error | LogLevel.AutoCSer);
     if ((DataModel.Model <modelType> .Identity != null || DataModel.Model <modelType> .PrimaryKeys.Length != 0) && !query.NotQuery)
     {
         GetQuery <modelType> getQuery = new GetQuery <modelType> {
             MemberMap = DataModel.Model <modelType> .MemberMap, Sql = query.Sql
         };
         ReturnType returnType = Get(sqlTool, ref connection, value, ref getQuery);
         if (returnType != ReturnType.Success)
         {
             return(returnType);
         }
     }
     else
     {
         ReturnValue <int> returnValue = executeNonQuery(ref connection, query.Sql);
         if (returnValue.ReturnType != ReturnType.Success)
         {
             return(returnValue.ReturnType);
         }
         if (returnValue.Value <= 0)
         {
             return(ReturnType.ExecuteFailed);
         }
     }
     sqlTool.CallOnInserted(value);
     return(ReturnType.Success);
 }
Ejemplo n.º 5
0
        public async Task HandleShouldReturnFailWhenNotFound()
        {
            // Arrange
            var id = Guid.NewGuid();

            var userFinderMock = new Mock <IUserFinder>();

            userFinderMock.Setup(x => x.Get(id)).Throws <EntityNotFoundDbException>();
            var userFinder = userFinderMock.Object;

            var mapperMock = new Mock <IMapper>();

            mapperMock.Setup(x => x.Map <UserModel>(It.IsAny <object>())).Returns(new UserModel());
            var mapper = mapperMock.Object;

            var query = new GetQuery(id);

            var handler = new GetQueryHandler(mapper, userFinder);

            // Act
            var result = await handler.Handle(query, CancellationToken.None);

            // Assert
            result.IsFailure.Should().BeTrue();
            result.Failures.Should().OnlyContain(x => x.Code == HandlerFaultCode.NotFound.Name &&
                                                 x.Message == HandlerFailures.NotFound &&
                                                 x.Target == "id");
        }
Ejemplo n.º 6
0
        /// <summary>
        /// 更新数据
        /// </summary>
        /// <typeparam name="valueType">数据类型</typeparam>
        /// <typeparam name="modelType">模型类型</typeparam>
        /// <param name="sqlTool">SQL操作工具</param>
        /// <param name="connection">SQL连接</param>
        /// <param name="value">匹配成员值</param>
        /// <param name="memberMap">成员位图</param>
        /// <param name="query">查询信息</param>
        /// <returns>更新是否成功</returns>
        internal override bool Update <valueType, modelType>
            (Sql.Table <valueType, modelType> sqlTool, ref DbConnection connection, valueType value, MemberMap <modelType> memberMap, ref UpdateQuery <modelType> query)
        {
            if (query.NotQuery)
            {
                if (executeNonQuery(ref connection, query.UpdateSql) > 0)
                {
                    sqlTool.CallOnUpdated(value, null, memberMap);
                    return(true);
                }
            }
            else
            {
                GetQuery <modelType> getQuery = new GetQuery <modelType> {
                    MemberMap = query.MemberMap, Sql = query.Sql
                };
                valueType oldValue = AutoCSer.Emit.Constructor <valueType> .New();

                if (Get(sqlTool, ref connection, oldValue, ref getQuery) && executeNonQuery(connection, query.UpdateSql) > 0 && Get(sqlTool, ref connection, value, ref getQuery))
                {
                    sqlTool.CallOnUpdated(value, oldValue, memberMap);
                    return(true);
                }
            }
            return(false);
        }
Ejemplo n.º 7
0
 public override Task <Organization> Handle(GetQuery <Organization> request, CancellationToken cancellationToken)
 {
     return(Task.FromResult(new Organization
     {
         Name = $"hello {DateTime.Now.Ticks}"
     }));
 }
        public async Task <IActionResult> Get([FromRoute] Guid id)
        {
            var query  = new GetQuery(id);
            var result = await mediator.Send(query);

            return(Ok(result));
        }
Ejemplo n.º 9
0
        public async Task HandleShouldReturnOk()
        {
            // Arrange
            var id = Guid.NewGuid();

            var userFinderMock = new Mock <IUserFinder>();

            userFinderMock.Setup(x => x.Get(id)).Returns(Task.FromResult(new User(id, new Login("login"), "password", new FullName(new FirstName("FirstName"), new LastName("LastName")))));
            var userFinder = userFinderMock.Object;

            var mapperMock = new Mock <IMapper>();

            mapperMock.Setup(x => x.Map <UserModel>(It.IsAny <object>())).Returns(new UserModel());
            var mapper = mapperMock.Object;

            var query = new GetQuery(id);

            var handler = new GetQueryHandler(mapper, userFinder);

            // Act
            var result = await handler.Handle(query, CancellationToken.None);

            // Assert
            result.IsFailure.Should().BeFalse();
            result.Should().BeOfType(typeof(Result <UserModel>));
        }
Ejemplo n.º 10
0
        public async Task <string> Post([FromBody] CalcModel query)
        {
            GetQuery process = new GetQuery();
            var      result  = await process.GettingQuery(query.Query);

            return(result);
        }
Ejemplo n.º 11
0
        public async Task <IActionResult> GetAsync(int id)
        {
            var query = new GetQuery <CarDto> {
                Id = id
            };

            return(Ok(await Mediator.Send(query)));
        }
Ejemplo n.º 12
0
        public GetQuery Map(GetRequest request)
        {
            var id = new Guid(request.RouteId);

            var result = new GetQuery(id);

            return(result);
        }
Ejemplo n.º 13
0
        public async Task <UserDto> Handle(GetQuery <UserDto> request, CancellationToken cancellationToken)
        {
            var user = await _context.User.Where(x => x.UserId == request.Id && x.IsActive == true).FirstOrDefaultAsync();

            if (user == null)
            {
                throw new NotFoundException(nameof(User), request.Id);
            }
            return(_mapper.Map <UserDto>(user));
        }
 public static IQueryable <T> InvokeGetQuery <T>(this IQueryable <T> query, GetQuery getQuery, Expression <Func <T, bool> > searchPredicate = null)
 {
     if (!string.IsNullOrWhiteSpace(getQuery.Search) && searchPredicate != null)
     {
         query = query.Where(searchPredicate);
     }
     return(query
            .Skip(getQuery.PageSize * getQuery.Page)
            .Take(getQuery.PageSize));
 }
Ejemplo n.º 15
0
        public async Task <CarDto> Handle(GetQuery <CarDto> request, CancellationToken cancellationToken)
        {
            var car = await _carRepository.GetACarAsync(request.Id);

            if (car == null)
            {
                throw new NotFoundException(nameof(car), request.Id);
            }
            return(_mapper.Map <CarDto>(car));
        }
 public Task <IMongoQueryable <StateProvinceDto> > Handle(GetQuery <StateProvinceDto> request, CancellationToken cancellationToken)
 {
     if (string.IsNullOrEmpty(request.Id))
     {
         return(Task.FromResult(_mongoDBContext.Database().GetCollection <StateProvinceDto>(typeof(Domain.Directory.StateProvince).Name).AsQueryable()));
     }
     else
     {
         return(Task.FromResult(_mongoDBContext.Database().GetCollection <StateProvinceDto>(typeof(Domain.Directory.StateProvince).Name).AsQueryable().Where(x => x.Id == request.Id)));
     }
 }
        public async Task <IActionResult> GetNotifications([FromQuery] GetQuery getQuery)
        {
            var userId        = this.GetUserId();
            var notifications = await db.Notifications
                                .Where(x => x.UserId == userId)
                                .OrderByDescending(x => x.CreatedAt)
                                .InvokeGetQuery(getQuery, x => x.Subject.Contains(getQuery.Search) || x.Body.Contains(getQuery.Search))
                                .ToArrayAsync();

            return(Ok(notifications));
        }
Ejemplo n.º 18
0
 public Task <IMongoQueryable <LanguageDto> > Handle(GetQuery <LanguageDto> request, CancellationToken cancellationToken)
 {
     if (string.IsNullOrEmpty(request.Id))
     {
         return(Task.FromResult(_mongoDBContext.Database().GetCollection <LanguageDto>(typeof(Core.Domain.Localization.Language).Name).AsQueryable()));
     }
     else
     {
         return(Task.FromResult(_mongoDBContext.Database().GetCollection <LanguageDto>(typeof(Core.Domain.Localization.Language).Name).AsQueryable().Where(x => x.Id == request.Id)));
     }
 }
Ejemplo n.º 19
0
        public void ShouldContainNoErrors()
        {
            // Arrange
            var query = new GetQuery(id: Guid.NewGuid());

            // Act
            var validationResult = _validator.Validate(query);
            var exists           = validationResult.Errors.Count > 0;

            // Assert
            exists.Should().BeFalse();
        }
        public virtual ActionResult <TModel> GetById([FromRoute] TIdentifier id)
        {
            if (id == null)
            {
                return(BadRequest());
            }

            var query  = new GetQuery <TModel>(id);
            var result = QueryDispatcher.Dispatch(query);

            return(OkOrNotFound(result));
        }
Ejemplo n.º 21
0
 private void CheckConnection()
 {
     if (database == null)
     {
         throw new Exception($"{nameof(database)} is disposed");
     }
     if (getQuery == null)
     {
         getQuery = new GetQuery(database);
     }
     getQuery = new GetQuery(database);
 }
Ejemplo n.º 22
0
        public Response <T> Get <T>(IdRequest request, IQueryInclude <T> includeQuery = null) where T : DeletableEntity
        {
            Logger.LogTrace($"Entering Get {typeof(T).Name} by id: {request.Id}. By user {Username}");
            var query = new GetQuery <T, IdRequest>
            {
                IncludeQuery = includeQuery
            };

            query.QueryFilters.Add(new IsActiveAndByIdFilter <T>(request.Id, true));

            return(Get(request, query));
        }
Ejemplo n.º 23
0
        public async Task <IQueryable <ShippingMethodDto> > Handle(GetQuery <ShippingMethodDto> request, CancellationToken cancellationToken)
        {
            var shippingMethod = _dbContext.Table <ShippingMethodDto>(typeof(Domain.Shipping.ShippingMethod).Name);

            if (string.IsNullOrEmpty(request.Id))
            {
                return(shippingMethod);
            }
            else
            {
                return(await Task.FromResult(shippingMethod.Where(x => x.Id == request.Id)));
            }
        }
Ejemplo n.º 24
0
        public async Task <IQueryable <CategoryDto> > Handle(GetQuery <CategoryDto> request, CancellationToken cancellationToken)
        {
            var query = _dbContext.Table <CategoryDto>(typeof(Domain.Catalog.Category).Name);

            if (string.IsNullOrEmpty(request.Id))
            {
                return(query);
            }
            else
            {
                return(await Task.FromResult(query.Where(x => x.Id == request.Id)));
            }
        }
Ejemplo n.º 25
0
        /// <summary>
        /// 删除数据
        /// </summary>
        /// <typeparam name="valueType">数据类型</typeparam>
        /// <typeparam name="modelType">模型类型</typeparam>
        /// <param name="sqlTool">SQL操作工具</param>
        /// <param name="connection">SQL连接</param>
        /// <param name="value">添加数据</param>
        /// <param name="query">添加数据查询信息</param>
        /// <returns></returns>
        internal override bool Delete <valueType, modelType>(Sql.Table <valueType, modelType> sqlTool, ref DbConnection connection, valueType value, ref InsertQuery query)
        {
            GetQuery <modelType> getQuery = new GetQuery <modelType> {
                MemberMap = sqlTool.SelectMemberMap, Sql = query.Sql
            };

            if (Get(sqlTool, ref connection, value, ref getQuery) && executeNonQuery(connection, query.InsertSql) > 0)
            {
                sqlTool.CallOnDeleted(value);
                return(true);
            }
            return(false);
        }
Ejemplo n.º 26
0
        public void ShouldHaveUserNotFoundCustomFailureWhenIdIsGuidEmpty()
        {
            // Arrange
            var query = new GetQuery(id: Guid.Empty);

            // Act
            var validationResult = _validator.Validate(query);
            var exists           =
                validationResult.Errors.Any(
                    a => a.PropertyName.Equals("Id") && a.ErrorMessage.Contains(CustomFailures.UserNotFound));

            // Assert
            exists.Should().BeTrue();
        }
        /// <summary>
        /// Executes a  get API call to get a typed JSON document from the index based on its id.
        /// https://www.elastic.co/guide/en/elasticsearch/reference/5.4/docs-get.html
        /// </summary>
        /// <typeparam name="TPoco"></typeparam>
        /// <param name="getQuery"></param>
        /// <returns></returns>
        public TPoco ExecuteGet <TPoco>(GetQuery <TPoco> getQuery)
            where TPoco : IElasticPoco
        {
            IndexExists(getQuery.IndexName);
            var response = LowLevelClient.Get <string>(getQuery.IndexName, getQuery.TypeName, getQuery.Id.ToString());

            if (!response.Success)
            {
                throw response.OriginalException ?? new Exception($"Unsuccessful Elastic Request: {response.DebugInformation}");
            }
            var data = JObject.Parse(response.Body)?.First;

            return(MapResponseToPoco <TPoco>(data));
        }
        public async Task <IActionResult> GetCompanies([FromQuery] GetQuery getQuery)
        {
            var userId    = this.GetUserId();
            var companies = await db.CompanyUsers
                            .Include(x => x.Company)
                            .ThenInclude(x => x.Subscription)
                            .Where(x => x.UserId == userId && x.Company.Status == CompanyStatus.Active)
                            .Select(x => x.Company)
                            .OrderBy(x => x.Name)
                            .InvokeGetQuery(getQuery, x => x.Name.Contains(getQuery.Search) || x.UniqueName.Contains(getQuery.Search))
                            .ToArrayAsync();

            return(Ok(companies));
        }
Ejemplo n.º 29
0
        public Response <T> Get <T>(IdRequest request, GetQuery <T, IdRequest> query)
            where T : class, IEntity
        {
            var response = new Response <T>();

            if (request.IsRequestInvalid(response, ContextInfo))
            {
                return(response);
            }

            query.ContextRequest = WrapRequest(request);
            var result = Repository.ExecuteQuery(query);

            response.Merge(result);
            return(response);
        }
Ejemplo n.º 30
0
 public Task <IMongoQueryable <ManufacturerDto> > Handle(GetQuery <ManufacturerDto> request, CancellationToken cancellationToken)
 {
     if (string.IsNullOrEmpty(request.Id))
     {
         return(Task.FromResult(
                    _mongoDBContext.Database()
                    .GetCollection <ManufacturerDto>
                        (typeof(Domain.Catalog.Manufacturer).Name)
                    .AsQueryable()));
     }
     else
     {
         return(Task.FromResult(_mongoDBContext.Database()
                                .GetCollection <ManufacturerDto>(typeof(Domain.Catalog.Manufacturer).Name)
                                .AsQueryable()
                                .Where(x => x.Id == request.Id)));
     }
 }