public IProjectionGetResult <T> Get <T>(IBlobId projectionId) where T : IProjectionDefinition { if (ReferenceEquals(null, projectionId)) { throw new ArgumentNullException(nameof(projectionId)); } Type projectionType = typeof(T); string contractId = projectionType.GetContractId(); try { ProjectionVersion liveVersion = GetProjectionVersions(contractId).GetLive(); if (ReferenceEquals(null, liveVersion)) { log.Warn(() => $"Unable to find `live` version for projection with contract id {contractId} and name {projectionType.Name}"); return(new ProjectionGetResult <T>(default(T))); } ISnapshot snapshot = snapshotStore.Load(contractId, projectionId, liveVersion); ProjectionStream stream = LoadProjectionStream(projectionType, liveVersion, projectionId, snapshot); IProjectionGetResult <T> queryResult = stream.RestoreFromHistory <T>(); return(queryResult); } catch (Exception ex) { log.ErrorException($"Unable to load projection. ProjectionId:{projectionId} ProjectionContractId:{contractId} ProjectionName:{projectionType.Name}", ex); return(new ProjectionGetResult <T>(default(T))); } }
public IProjectionGetResult <T> Get <T>(IBlobId projectionId) where T : IProjectionDefinition { try { Type projectionType = typeof(T); string contractId = projectionType.GetContractId(); ProjectionVersion liveVersion = GetProjectionVersions(contractId).GetLive(); ISnapshot snapshot = snapshotStore.Load(contractId, projectionId, liveVersion); ProjectionStream stream = LoadProjectionStream(projectionType, liveVersion, projectionId, snapshot); IProjectionGetResult <T> queryResult = stream.RestoreFromHistory <T>(); return(queryResult); } catch (Exception ex) { log.ErrorException(ex.Message, ex); return(new ProjectionGetResult <T>(default(T))); } }