public async Task <SaveResult> SaveAsync(UserRegistrationProcess process) { if (process == null) { throw new ArgumentNullException(nameof(process)); } var eventsData = process.GetPendingEvents().Select(_eventSerializer.ToEventData); try { await _connection.AppendToStreamAsync( StreamBy(process.UserId), process.Version == 0 ?ExpectedVersion.NoStream : process.Version - 1, eventsData); return(SaveResult.Success); } catch (WrongExpectedVersionException) { return(SaveResult.WrongExpextedVersion); } }
public Task <Option <UserRegistrationProcess> > GetAsync(Guid userId) { var streamId = StreamBy(userId); var events = _eventStoreStub.GetByStreamId(streamId); var result = new UserRegistrationProcess(events); return(Task.FromResult(result.Some())); }
public Task <SaveResult> SaveAsync(UserRegistrationProcess process) { var streamId = StreamBy(process.UserId); var result = _eventStoreStub.Save( streamId, process.GetPendingEvents(), process.Version); return(Task.FromResult(result)); }
public async Task <Guid> StartRegistrationAsync(UserRegistrationForm registrationForm) { if (registrationForm == null) { throw new ArgumentNullException(nameof(registrationForm)); } var userRegistrationProcess = new UserRegistrationProcess(registrationForm); await _userRegistrationProcessRepository.SaveAsync(userRegistrationProcess); return(userRegistrationProcess.UserId); }