public Document Get(Guid id) { var row = _databaseGateway.GetSingleRowUsing(_queryFactory.Get(id)); row.GuardAgainstRecordNotFound <Document>(id); var result = new Document( Columns.Id.MapFrom(row), Columns.ReferenceId.MapFrom(row), Columns.FileName.MapFrom(row), Columns.ContentType.MapFrom(row), Columns.Content.MapFrom(row), Columns.SystemName.MapFrom(row), Columns.Username.MapFrom(row), Columns.EffectiveFromDate.MapFrom(row) ); var sanitizedContent = Columns.SanitizedContent.MapFrom(row); if (sanitizedContent != null && sanitizedContent.Length > 0) { result.WithSanitizedContent(sanitizedContent); } foreach (var statusEventRow in _databaseGateway.GetRowsUsing(_queryFactory.GetStatusEvents(id))) { result.OnStatusEvent( (ServiceStatus)Enum.Parse(typeof(ServiceStatus), Columns.Status.MapFrom(statusEventRow)), Columns.DateRegistered.MapFrom(statusEventRow)); } foreach (var propertyRow in _databaseGateway.GetRowsUsing(_queryFactory.GetProperties(id))) { result.SetProperty(Columns.Name.MapFrom(propertyRow), Columns.Value.MapFrom(propertyRow)); } return(result); }
public IEnumerable <Query.Document> Search(Query.Document.Specification specification) { Guard.AgainstNull(specification, nameof(specification)); var result = _queryMapper.MapObjects <Query.Document>(_queryFactory.Search(specification)) .ToDictionary(document => document.Id); if (specification.StatusEventsIncluded && result.Any()) { foreach (var mappedRow in _queryMapper.MapRows <Query.Document.StatusEvent>(_queryFactory.GetStatusEvents(result.Keys))) { if (result.TryGetValue(Columns.DocumentId.MapFrom(mappedRow.Row), out var document)) { document.StatusEvents.Add(mappedRow.Result); } } } if (specification.PropertiesIncluded && result.Any()) { foreach (var mappedRow in _queryMapper.MapRows <Query.Document.Property>(query: _queryFactory.GetProperties(result.Keys))) { if (result.TryGetValue(Columns.DocumentId.MapFrom(mappedRow.Row), out var document)) { document.Properties.Add(mappedRow.Result); } } } return(result.Values); }