Skip to content

Commit

Permalink
Fix compiler warnings related to nullability in Relationships module (#…
Browse files Browse the repository at this point in the history
…505)

* feat: update project with nullable reference type warnings

* refactor: make method param nullable
refactor: remove check, id is never null

* refactor: make method param nullable, RelationshipChangeIdEntityFrameworkValueConverter
refactor: remove check, id is never null

* refactor: make method param nullable, RelationshipTemplateIdEntityFrameworkValueConverter
refactor: remove check, id should never be null

* refactor: use null-forgiving operator, it's a test for null value Ids

* refactor: use null-forgiving operator, it's a test for null value Ids

* refactor: assign default! to prop within the parameterless ctor
refactor: suppress null warning, method is testing for possible null value

* refactor: make input param nullable
fix: check for null values in query

* refactor: make prop nullable, BlobOptions

* refactor: make imput param nullable and return empty list instead of null
refactor: remove null warning suppression

* refactor: make prop required, RejectRelationsipChangeRequestCommand

* refactor: make prop required

* refactor: make prop nullable, GetChangeQuery

* refactor: make prop required, GetRelationshipQuery

* refactor: make input param nullable and return [] instead of null

* refactor: make prop required, GetRelationshipTemplateQuery

* refactor: make prop nullable, CreateRelationshipCommand
refactor: remove unnecessary using directive

* refactor: make prop required, RelationshipDTO

* refactor: make prop required, RelatoinshipMetadataDTO

* refactor: make prop required

* refactor: make prop required, CreateRelationshipTemplateResponse

* refactor: make prop required, RelationshipTemplateDTO

* refactor: assign null! to field in the ctor

* refactor: suppress warning, field can not be null at this point

* refactor: assign null with null-forgiving operator to the prop

* refactor: make prop nullable

* refactor: make prop nullable

* refactor: make prop nullable, PersistenceOptions

* refactor: remove nullability operator
refactor: assign null with null-forgiving operator

* refactor: make prop required

* refactor: make returning type nullable

* refactor: make returning type nullable, now method does what it says it does

* refactor: enable method to return null

* refactor: enable method to return null

* refactor: suppress code warning in tests

* refactor: make prop required

* refactor: change prop form required to nullable

* fix: change prop from required to nullable

* fix: change prop from required to nullable

* fix: change prop form required to nullable

* refactor: make prop required

* refactor: make prop required

* refactor: make prop required

* refactor: make prop required

* fix: change prop from required to nullable

* refactor: make prop required

* refactor: make prop required

* refactor: suppress null reference warning in RelationshipTests

* Enable Mergify (#520)

* ci: enable mergify

* ci: remove autoupdate.yml

* chore remove mergify.yaml

* chore: fix nullability annotations in NumberOfBytesValidator

* chore: fix nullability for Relationship recursiveley

* chore: remove unused file

* chore: comment ef core constructors

* chore: fix nullability of Range and OptionalDateRange

* chore: fix nullability for ListChangesQuery

* chore: fix nullability of RangeValidator

* chore: fix some compiler warnings

* chore: remove unused methods

* chore: fix nullability in RelationshipTests

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Timo Notheisen <[email protected]>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Co-authored-by: Timo Notheisen <[email protected]>
  • Loading branch information
5 people authored Feb 12, 2024
1 parent 2b52cd4 commit 5a6ea7a
Show file tree
Hide file tree
Showing 49 changed files with 239 additions and 268 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

namespace Backbone.BuildingBlocks.Application.FluentValidation;

public class NumberOfBytesValidator<T> : PropertyValidator<T, byte[]>, ILengthValidator
public class NumberOfBytesValidator<T> : PropertyValidator<T, byte[]?>, ILengthValidator
{
public NumberOfBytesValidator(int min, int max)
{
Expand Down Expand Up @@ -51,7 +51,7 @@ protected override string GetDefaultMessageTemplate(string errorCode)

public static class NumberOfBytesValidatorRuleBuilderExtensions
{
public static IRuleBuilderOptions<T, byte[]?> NumberOfBytes<T>(this IRuleBuilder<T, byte[]> ruleBuilder,
public static IRuleBuilderOptions<T, byte[]?> NumberOfBytes<T>(this IRuleBuilder<T, byte[]?> ruleBuilder,
int minNumberOfBytes, int maxNumberOfBytes)
{
return ruleBuilder
Expand Down
1 change: 1 addition & 0 deletions Modules/Files/src/Files.Domain/Entities/File.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ namespace Backbone.Modules.Files.Domain.Entities;

public class File
{
// ReSharper disable once UnusedMember.Local
private File()
{
// This constructor is for EF Core only; initializing the properties with null is therefore not a problem
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@

public class BlobOptions
{
public string RootFolder { get; set; }
public string? RootFolder { get; set; }
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@ public interface IRelationshipsRepository
{
Task<DbPaginationResult<Relationship>> FindRelationshipsWithIds(IEnumerable<RelationshipId> ids, IdentityAddress identityAddress, PaginationFilter paginationFilter, CancellationToken cancellationToken, bool track = false);
Task<DbPaginationResult<RelationshipChange>> FindChangesWithIds(IEnumerable<RelationshipChangeId> ids, RelationshipChangeType? relationshipChangeType,
RelationshipChangeStatus? relationshipChangeStatus, OptionalDateRange modifiedAt, OptionalDateRange createdAt, OptionalDateRange completedAt, IdentityAddress createdBy,
IdentityAddress completedBy, IdentityAddress identityAddress, PaginationFilter paginationFilter, CancellationToken cancellationToken, bool onlyPeerChanges = false, bool track = false);
RelationshipChangeStatus? relationshipChangeStatus, OptionalDateRange? modifiedAt, OptionalDateRange? createdAt, OptionalDateRange? completedAt, IdentityAddress? createdBy,
IdentityAddress? completedBy, IdentityAddress activeIdentity, PaginationFilter paginationFilter, CancellationToken cancellationToken, bool onlyPeerChanges = false, bool track = false);
Task<Relationship> FindRelationship(RelationshipId id, IdentityAddress identityAddress, CancellationToken cancellationToken, bool track = false);
Task<RelationshipChange> FindRelationshipChange(RelationshipChangeId id, IdentityAddress identityAddress, CancellationToken cancellationToken, bool track = false);
Task<RelationshipChange?> FindRelationshipChange(RelationshipChangeId id, IdentityAddress identityAddress, CancellationToken cancellationToken, bool track = false);
Task Add(Relationship relationship, CancellationToken cancellationToken);
Task Update(Relationship relationship);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,5 @@ public class CreateRelationshipTemplateCommand : IMapTo<RelationshipTemplate>, I
{
public DateTime? ExpiresAt { get; set; }
public int? MaxNumberOfAllocations { get; set; }
public byte[] Content { get; set; }
public required byte[] Content { get; set; }
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,6 @@ namespace Backbone.Modules.Relationships.Application.RelationshipTemplates.Comma

public class CreateRelationshipTemplateResponse : IMapTo<RelationshipTemplate>
{
public RelationshipTemplateId Id { get; set; }
public DateTime CreatedAt { get; set; }
public required RelationshipTemplateId Id { get; set; }
public required DateTime CreatedAt { get; set; }
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@ namespace Backbone.Modules.Relationships.Application.RelationshipTemplates.Queri

public class GetRelationshipTemplateQuery : IRequest<RelationshipTemplateDTO>
{
public RelationshipTemplateId Id { get; set; }
public required RelationshipTemplateId Id { get; set; }
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@ namespace Backbone.Modules.Relationships.Application.RelationshipTemplates.Queri

public class ListRelationshipTemplatesQuery : IRequest<ListRelationshipTemplatesResponse>
{
public ListRelationshipTemplatesQuery(PaginationFilter paginationFilter, IEnumerable<RelationshipTemplateId> ids)
public ListRelationshipTemplatesQuery(PaginationFilter paginationFilter, IEnumerable<RelationshipTemplateId>? ids)
{
PaginationFilter = paginationFilter;
Ids = ids == null ? null : new List<RelationshipTemplateId>(ids);
Ids = ids == null ? [] : new List<RelationshipTemplateId>(ids);
}

public PaginationFilter PaginationFilter { get; set; }
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<Nullable>enable</Nullable>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="FluentValidation.DependencyInjectionExtensions" Version="11.9.0" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ namespace Backbone.Modules.Relationships.Application.Relationships.Commands.Acce

public class AcceptRelationshipChangeRequestCommand : IRequest<AcceptRelationshipChangeRequestResponse>
{
public RelationshipId Id { get; set; }
public RelationshipChangeId ChangeId { get; set; }
public byte[] ResponseContent { get; set; }
public required RelationshipId Id { get; set; }
public required RelationshipChangeId ChangeId { get; set; }
public byte[]? ResponseContent { get; set; }
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@ namespace Backbone.Modules.Relationships.Application.Relationships.Commands.Crea
[ApplyQuotasForMetrics("NumberOfRelationships")]
public class CreateRelationshipCommand : IRequest<CreateRelationshipResponse>
{
public RelationshipTemplateId RelationshipTemplateId { get; set; }
public byte[] Content { get; set; }
public required RelationshipTemplateId RelationshipTemplateId { get; set; }
public byte[]? Content { get; set; }
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@ public class Handler : IRequestHandler<CreateRelationshipCommand, CreateRelation
private readonly IRelationshipTemplatesRepository _relationshipTemplatesRepository;
private readonly IUserContext _userContext;
private CancellationToken _cancellationToken;
private Relationship _relationship;
private CreateRelationshipCommand _request;
private RelationshipTemplate _template;
private Relationship _relationship;

public Handler(IUserContext userContext, IMapper mapper, IEventBus eventBus, IRelationshipsRepository relationshipsRepository, IRelationshipTemplatesRepository relationshipTemplatesRepository)
{
Expand All @@ -28,6 +28,10 @@ public Handler(IUserContext userContext, IMapper mapper, IEventBus eventBus, IRe
_relationshipsRepository = relationshipsRepository;
_relationshipTemplatesRepository = relationshipTemplatesRepository;
_eventBus = eventBus;

_request = null!;
_template = null!;
_relationship = null!;
}

public async Task<CreateRelationshipResponse> Handle(CreateRelationshipCommand request, CancellationToken cancellationToken)
Expand Down Expand Up @@ -77,12 +81,11 @@ private async Task CreateAndSaveRelationship()
_request.Content);

await _relationshipsRepository.Add(_relationship, _cancellationToken);

}

private void PublishIntegrationEvent()
{
var change = _relationship.Changes.FirstOrDefault();
var change = _relationship.Changes.First(); // there is always one change, because the relationship was just created
var evt = new RelationshipChangeCreatedIntegrationEvent(change);
_eventBus.Publish(evt);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ namespace Backbone.Modules.Relationships.Application.Relationships.Commands.Reje

public class RejectRelationshipChangeRequestCommand : IRequest<RejectRelationshipChangeRequestResponse>
{
public RelationshipId Id { get; set; }
public RelationshipChangeId ChangeId { get; set; }
public byte[] ResponseContent { get; set; }
public required RelationshipId Id { get; set; }
public required RelationshipChangeId ChangeId { get; set; }
public byte[]? ResponseContent { get; set; }
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ namespace Backbone.Modules.Relationships.Application.Relationships.Commands.Revo

public class RevokeRelationshipChangeRequestCommand : IRequest<RevokeRelationshipChangeRequestResponse>
{
public RelationshipId Id { get; set; }
public RelationshipChangeId ChangeId { get; set; }
public byte[] ResponseContent { get; set; }
public required RelationshipId Id { get; set; }
public required RelationshipChangeId ChangeId { get; set; }
public byte[]? ResponseContent { get; set; }
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,30 +7,30 @@ namespace Backbone.Modules.Relationships.Application.Relationships.DTOs;

public class RelationshipChangeDTO : IMapTo<RelationshipChange>
{
public RelationshipChangeId Id { get; set; }
public required RelationshipChangeId Id { get; set; }

public RelationshipId RelationshipId { get; set; }
public required RelationshipId RelationshipId { get; set; }

public RelationshipChangeRequestDTO Request { get; set; }
public RelationshipChangeResponseDTO Response { get; set; }
public required RelationshipChangeRequestDTO Request { get; set; }
public required RelationshipChangeResponseDTO? Response { get; set; }

public RelationshipChangeType Type { get; set; }
public required RelationshipChangeType Type { get; set; }

public RelationshipChangeStatus Status { get; set; }
public required RelationshipChangeStatus Status { get; set; }
}

public class RelationshipChangeRequestDTO : IMapTo<RelationshipChangeRequest>
{
public DateTime CreatedAt { get; set; }
public IdentityAddress CreatedBy { get; set; }
public DeviceId CreatedByDevice { get; set; }
public byte[] Content { get; set; }
public required DateTime CreatedAt { get; set; }
public required IdentityAddress CreatedBy { get; set; }
public required DeviceId CreatedByDevice { get; set; }
public required byte[]? Content { get; set; }
}

public class RelationshipChangeResponseDTO : IMapTo<RelationshipChangeResponse>
{
public DateTime CreatedAt { get; set; }
public IdentityAddress CreatedBy { get; set; }
public DeviceId CreatedByDevice { get; set; }
public byte[] Content { get; set; }
public required DateTime CreatedAt { get; set; }
public required IdentityAddress CreatedBy { get; set; }
public required DeviceId CreatedByDevice { get; set; }
public required byte[]? Content { get; set; }
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@ namespace Backbone.Modules.Relationships.Application.Relationships.DTOs;

public class RelationshipDTO : IMapTo<Relationship>
{
public RelationshipId Id { get; set; }
public RelationshipTemplateId RelationshipTemplateId { get; set; }
public required RelationshipId Id { get; set; }
public required RelationshipTemplateId RelationshipTemplateId { get; set; }

public IdentityAddress From { get; set; }
public IdentityAddress To { get; set; }
public IEnumerable<RelationshipChangeDTO> Changes { get; set; }
public required IdentityAddress From { get; set; }
public required IdentityAddress To { get; set; }
public required IEnumerable<RelationshipChangeDTO> Changes { get; set; }

public DateTime CreatedAt { get; set; }
public required DateTime CreatedAt { get; set; }

public RelationshipStatus Status { get; set; }
public required RelationshipStatus Status { get; set; }
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,42 +7,42 @@ namespace Backbone.Modules.Relationships.Application.Relationships.DTOs;

public class RelationshipMetadataDTO : IMapTo<Relationship>
{
public RelationshipId Id { get; set; }
public RelationshipTemplateId RelationshipTemplateId { get; set; }
public required RelationshipId Id { get; set; }
public required RelationshipTemplateId RelationshipTemplateId { get; set; }

public IdentityAddress From { get; set; }
public IdentityAddress To { get; set; }
public IEnumerable<RelationshipChangeMetadataDTO> Changes { get; set; }
public required IdentityAddress From { get; set; }
public required IdentityAddress To { get; set; }
public required IEnumerable<RelationshipChangeMetadataDTO> Changes { get; set; }

public DateTime CreatedAt { get; set; }
public required DateTime CreatedAt { get; set; }

public RelationshipStatus Status { get; private set; }
public RelationshipStatus Status { get; set; }
}

public class RelationshipChangeMetadataDTO : IMapTo<RelationshipChange>
{
public RelationshipChangeId Id { get; set; }
public required RelationshipChangeId Id { get; set; }

public RelationshipId RelationshipId { get; set; }
public required RelationshipId RelationshipId { get; set; }

public RelationshipChangeRequestMetadataDTO Request { get; set; }
public RelationshipChangeResponseMetadataDTO Response { get; set; }
public required RelationshipChangeRequestMetadataDTO Request { get; set; }
public required RelationshipChangeResponseMetadataDTO? Response { get; set; }

public RelationshipChangeType Type { get; set; }
public required RelationshipChangeType Type { get; set; }

public RelationshipChangeStatus Status { get; set; }
public required RelationshipChangeStatus Status { get; set; }
}

public class RelationshipChangeRequestMetadataDTO : IMapTo<RelationshipChangeRequest>
{
public DateTime CreatedAt { get; set; }
public IdentityAddress CreatedBy { get; set; }
public DeviceId CreatedByDevice { get; set; }
public required DateTime CreatedAt { get; set; }
public required IdentityAddress CreatedBy { get; set; }
public required DeviceId CreatedByDevice { get; set; }
}

public class RelationshipChangeResponseMetadataDTO : IMapTo<RelationshipChangeResponse>
{
public DateTime CreatedAt { get; set; }
public IdentityAddress CreatedBy { get; set; }
public DeviceId CreatedByDevice { get; set; }
public required DateTime CreatedAt { get; set; }
public required IdentityAddress CreatedBy { get; set; }
public required DeviceId CreatedByDevice { get; set; }
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@ namespace Backbone.Modules.Relationships.Application.Relationships.DTOs;

public class RelationshipTemplateDTO : IMapTo<RelationshipTemplate>
{
public RelationshipTemplateId Id { get; set; }
public required RelationshipTemplateId Id { get; set; }

public IdentityAddress CreatedBy { get; set; }
public DeviceId CreatedByDevice { get; set; }
public required IdentityAddress CreatedBy { get; set; }
public required DeviceId CreatedByDevice { get; set; }
public int? MaxNumberOfAllocations { get; set; }
public DateTime? ExpiresAt { get; set; }
public byte[] Content { get; set; }
public byte[]? Content { get; set; }

public DateTime CreatedAt { get; set; }
public required DateTime CreatedAt { get; set; }
public DateTime? DeletedAt { get; set; }
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@ namespace Backbone.Modules.Relationships.Application.Relationships.Queries.GetCh

public class GetChangeQuery : IRequest<RelationshipChangeDTO>
{
public RelationshipChangeId Id { get; set; }
public required RelationshipChangeId Id { get; set; }
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@ namespace Backbone.Modules.Relationships.Application.Relationships.Queries.GetRe

public class GetRelationshipQuery : IRequest<RelationshipDTO>
{
public RelationshipId Id { get; set; }
public required RelationshipId Id { get; set; }
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ namespace Backbone.Modules.Relationships.Application.Relationships.Queries.ListC

public class ListChangesQuery : IRequest<ListChangesResponse>
{
public ListChangesQuery(PaginationFilter paginationFilter, IEnumerable<RelationshipChangeId> ids, OptionalDateRange createdAt, OptionalDateRange completedAt, OptionalDateRange modifiedAt, RelationshipChangeStatus? status, RelationshipChangeType? type, IdentityAddress createdBy, IdentityAddress completedBy, bool onlyPeerChanges)
public ListChangesQuery(PaginationFilter paginationFilter, IEnumerable<RelationshipChangeId> ids, OptionalDateRange? createdAt, OptionalDateRange? completedAt, OptionalDateRange? modifiedAt, RelationshipChangeStatus? status, RelationshipChangeType? type, IdentityAddress? createdBy, IdentityAddress? completedBy, bool onlyPeerChanges)
{
PaginationFilter = paginationFilter;
Ids = ids;
Expand All @@ -25,12 +25,12 @@ public ListChangesQuery(PaginationFilter paginationFilter, IEnumerable<Relations

public PaginationFilter PaginationFilter { get; set; }
public IEnumerable<RelationshipChangeId> Ids { get; set; }
public OptionalDateRange CreatedAt { get; set; }
public OptionalDateRange CompletedAt { get; set; }
public OptionalDateRange ModifiedAt { get; }
public OptionalDateRange? CreatedAt { get; set; }
public OptionalDateRange? CompletedAt { get; set; }
public OptionalDateRange? ModifiedAt { get; }
public RelationshipChangeStatus? Status { get; }
public IdentityAddress CreatedBy { get; set; }
public IdentityAddress CompletedBy { get; set; }
public IdentityAddress? CreatedBy { get; set; }
public IdentityAddress? CompletedBy { get; set; }
public bool OnlyPeerChanges { get; set; }
public RelationshipChangeType? Type { get; set; }
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,6 @@ public class ListChangesQueryValidator : AbstractValidator<ListChangesQuery>
public ListChangesQueryValidator()
{
RuleFor(query => query.CreatedAt)
.IsValidRange<ListChangesQuery, OptionalDateRange, DateTime?>().WithErrorCode(GenericApplicationErrors.Validation.InvalidPropertyValue().Code);
.IsValidRange<ListChangesQuery, OptionalDateRange?, DateTime?>().WithErrorCode(GenericApplicationErrors.Validation.InvalidPropertyValue().Code);
}
}
Loading

0 comments on commit 5a6ea7a

Please sign in to comment.