async Task <GangUserData> IGangUserStore .TryGetByCredentialIdAsync(string credentialId) { var id = await _store.TryGetIndexedKeyAsync(credentialId); if (id == null) { return(null); } return(await _store.TryGetAsync(id)); }
async Task <IGangStateEvent> GetEventAsync(string key) { var wrapper = await _eventStore.TryGetAsync(key); var type = _eventMap.GetType(wrapper.Type); return(GangStateEvent.From( _serializer.Map(wrapper.Data, type), wrapper.Audit )); }
async Task <GangState <TStateData> > IGangStateStore .RestoreAsync <TStateData>( string gangId, TStateData initial ) where TStateData : class { var data = await _cache.TryGetAsync(gangId); var state = _serializer.Map <GangState <TStateData> >(data); return(state ?? await RehydrateAsync(gangId, initial)); }
public GangStateStore( IGangSerializationService serializer, GangStateEventMap eventMap, IGangStoreFactory storeFactory ) { _events = new Subject <IGangStateEvent>(); _eventStore = storeFactory .For <GangStateEventWrapper>() .AddIndex(e => e.Audit.GangId) .Create(STORE_EVENTS); _sequenceNumberStore = storeFactory .For <uint>() .Create(STORE_EVENTS); _cache = storeFactory .For <object>() .Create(STORE_CACHE); _serializer = serializer; _eventMap = eventMap; _sequenceNumber = _sequenceNumberStore .TryGetAsync(KEY_SEQUENCE_NUMBER) .GetAwaiter().GetResult(); }
async Task <GangSessionUser> IGangSessionUserStore .TryGetByIdAsync(string id) { return(await _store.TryGetAsync(id)); }