public async Task <Cow> Handle(CreateCowCommand request, CancellationToken cancellationToken)
        {
            var model = new Cow {
                FarmId = request.FarmId, State = request.State
            };
            await _eventRepository.CreateAsync(model);

            await _snapShotRepository.SaveAsync(model);

            return(model);
        }
        //Idempotent method
        public async Task <Unit> Handle(UpdateCowCommand request, CancellationToken cancellationToken)
        {
            var model = await _snapShotRepository.GetAsync(request.Id);

            if (model == default || (model.FarmId == request.FarmId && model.State == request.State))
            {
                return(Unit.Value);
            }
            model.FarmId = request.FarmId;
            model.State  = request.State;

            await _snapShotRepository.SaveAsync(model);

            await _eventRepository.UpdateAsync(model);

            return(Unit.Value);
        }