From e6323fc37823438a780012f026d8396560cc616a Mon Sep 17 00:00:00 2001 From: Haik Date: Thu, 4 Jul 2024 14:56:29 +0400 Subject: [PATCH] cleanup --- .../Configurations/Options/SwaggerOptions.cs | 2 +- .../Configurations/Options/SwaggerVersionOptions.cs | 4 ++-- .../Features/Auth/Application/Auth/AuthQueryHandler.cs | 2 +- .../RefreshToken/RefreshTokenCommandHandler.cs | 2 +- .../Features/Auth/Contracts/Auth/IdentityCookies.cs | 4 ++-- .../Features/Auth/Contracts/Login/LoginCommandResponse.cs | 4 ++-- .../Contracts/RefreshToken/RefreshTokenCommandResponse.cs | 6 +++--- .../User/Application/Create/CreateUserCommandHandler.cs | 2 +- .../User/Application/Delete/DeleteUsersCommand.cs | 2 +- .../Features/User/Application/Update/UpdateUserCommand.cs | 4 ++-- .../User/Application/Update/UpdateUserCommandHandler.cs | 2 +- .../UpdatePassword/UpdateUserPasswordCommand.cs | 2 +- .../User/Contracts/GetById/GetUserQueryResponse.cs | 6 +++--- .../DTOs/Auth/Identity.cs | 6 +++--- .../DTOs/Auth/MetaData.cs | 2 +- src/Pandatech.CleanArchitecture.Core/Entities/Token.cs | 6 +++--- src/Pandatech.CleanArchitecture.Core/Entities/User.cs | 8 ++++---- .../Entities/UserConfig.cs | 6 +++--- .../RedisEntities/LoggedUserRedisEntity.cs | 6 +++--- .../Context/EntityFilters/UserEntityFilters.cs | 3 +++ ...ial.Designer.cs => 20240703100810_Initial.Designer.cs} | 3 ++- ...0240629164406_Initial.cs => 20240703100810_Initial.cs} | 2 +- .../Context/Migrations/PostgresContextModelSnapshot.cs | 1 + .../Context/PostgresContext.cs | 6 +++--- .../Repositories/UnitOfWork.cs | 2 +- 25 files changed, 49 insertions(+), 44 deletions(-) rename src/Pandatech.CleanArchitecture.Infrastructure/Context/Migrations/{20240629164406_Initial.Designer.cs => 20240703100810_Initial.Designer.cs} (99%) rename src/Pandatech.CleanArchitecture.Infrastructure/Context/Migrations/{20240629164406_Initial.cs => 20240703100810_Initial.cs} (99%) diff --git a/src/Pandatech.CleanArchitecture.Api/Configurations/Options/SwaggerOptions.cs b/src/Pandatech.CleanArchitecture.Api/Configurations/Options/SwaggerOptions.cs index 0f70962..fedbd31 100644 --- a/src/Pandatech.CleanArchitecture.Api/Configurations/Options/SwaggerOptions.cs +++ b/src/Pandatech.CleanArchitecture.Api/Configurations/Options/SwaggerOptions.cs @@ -2,5 +2,5 @@ public class SwaggerOptions { - public Dictionary Versions { get; set; } = null!; + public required Dictionary Versions { get; set; } } diff --git a/src/Pandatech.CleanArchitecture.Api/Configurations/Options/SwaggerVersionOptions.cs b/src/Pandatech.CleanArchitecture.Api/Configurations/Options/SwaggerVersionOptions.cs index 7fb95e0..c0d432d 100644 --- a/src/Pandatech.CleanArchitecture.Api/Configurations/Options/SwaggerVersionOptions.cs +++ b/src/Pandatech.CleanArchitecture.Api/Configurations/Options/SwaggerVersionOptions.cs @@ -2,8 +2,8 @@ public class SwaggerVersionOptions { - public string Title { get; set; } = null!; - public string Description { get; set; } = null!; + public required string Title { get; set; } + public required string Description { get; set; } public bool Separate { get; set; } public string? RoutePrefix { get; set; } diff --git a/src/Pandatech.CleanArchitecture.Application/Features/Auth/Application/Auth/AuthQueryHandler.cs b/src/Pandatech.CleanArchitecture.Application/Features/Auth/Application/Auth/AuthQueryHandler.cs index 0a8d91a..d858c46 100644 --- a/src/Pandatech.CleanArchitecture.Application/Features/Auth/Application/Auth/AuthQueryHandler.cs +++ b/src/Pandatech.CleanArchitecture.Application/Features/Auth/Application/Auth/AuthQueryHandler.cs @@ -38,7 +38,7 @@ public async Task Handle(AuthQuery request, CancellationToken cancellationToken) var tokenEntity = await unitOfWork.Tokens.GetTokenByAccessTokenAsync(accessTokenHash, cancellationToken); UnauthorizedException.ThrowIfNull(tokenEntity); - UnauthorizedException.ThrowIf(tokenEntity.User.Status is not UserStatus.Active); + UnauthorizedException.ThrowIf(tokenEntity.User!.Status is not UserStatus.Active); UnauthorizedException.ThrowIf(tokenEntity.AccessTokenExpiresAt <= DateTime.UtcNow, ErrorMessages.AccessTokenIsExpired); diff --git a/src/Pandatech.CleanArchitecture.Application/Features/Auth/Application/RefreshToken/RefreshTokenCommandHandler.cs b/src/Pandatech.CleanArchitecture.Application/Features/Auth/Application/RefreshToken/RefreshTokenCommandHandler.cs index b52462e..cd336a5 100644 --- a/src/Pandatech.CleanArchitecture.Application/Features/Auth/Application/RefreshToken/RefreshTokenCommandHandler.cs +++ b/src/Pandatech.CleanArchitecture.Application/Features/Auth/Application/RefreshToken/RefreshTokenCommandHandler.cs @@ -48,7 +48,7 @@ private static void ValidateUserToken(Token? userToken, DateTime now) { NotFoundException.ThrowIfNull(userToken); - UnauthorizedException.ThrowIf(userToken.User.Status != UserStatus.Active, + UnauthorizedException.ThrowIf(userToken.User!.Status != UserStatus.Active, ErrorMessages.ThisUserIsNotAllowedToPerformThisAction); UnauthorizedException.ThrowIf(userToken.RefreshTokenExpiresAt < now, ErrorMessages.RefreshTokenExpired); diff --git a/src/Pandatech.CleanArchitecture.Application/Features/Auth/Contracts/Auth/IdentityCookies.cs b/src/Pandatech.CleanArchitecture.Application/Features/Auth/Contracts/Auth/IdentityCookies.cs index 73400b1..6bde4e0 100644 --- a/src/Pandatech.CleanArchitecture.Application/Features/Auth/Contracts/Auth/IdentityCookies.cs +++ b/src/Pandatech.CleanArchitecture.Application/Features/Auth/Contracts/Auth/IdentityCookies.cs @@ -2,8 +2,8 @@ public class IdentityCookies { - public string AccessTokenSignature { get; set; } = null!; - public string RefreshTokenSignature { get; set; } = null!; + public required string AccessTokenSignature { get; set; } + public required string RefreshTokenSignature { get; set; } public DateTime AccessTokenExpiresAt { get; set; } public DateTime RefreshTokenExpiresAt { get; set; } } diff --git a/src/Pandatech.CleanArchitecture.Application/Features/Auth/Contracts/Login/LoginCommandResponse.cs b/src/Pandatech.CleanArchitecture.Application/Features/Auth/Contracts/Login/LoginCommandResponse.cs index 59dcef0..9839459 100644 --- a/src/Pandatech.CleanArchitecture.Application/Features/Auth/Contracts/Login/LoginCommandResponse.cs +++ b/src/Pandatech.CleanArchitecture.Application/Features/Auth/Contracts/Login/LoginCommandResponse.cs @@ -10,9 +10,9 @@ public class LoginCommandResponse public bool ForcePasswordChange { get; set; } public UserRole UserRole { get; set; } - public string AccessTokenSignature { get; set; } = null!; + public required string AccessTokenSignature { get; set; } public DateTime AccessTokenExpiration { get; set; } - public string RefreshTokenSignature { get; set; } = null!; + public required string RefreshTokenSignature { get; set; } public DateTime RefreshTokenExpiration { get; set; } public static LoginCommandResponse MapFromEntity(CreateTokenCommandResponse token, UserRole userRole, diff --git a/src/Pandatech.CleanArchitecture.Application/Features/Auth/Contracts/RefreshToken/RefreshTokenCommandResponse.cs b/src/Pandatech.CleanArchitecture.Application/Features/Auth/Contracts/RefreshToken/RefreshTokenCommandResponse.cs index 1783cf4..446ac32 100644 --- a/src/Pandatech.CleanArchitecture.Application/Features/Auth/Contracts/RefreshToken/RefreshTokenCommandResponse.cs +++ b/src/Pandatech.CleanArchitecture.Application/Features/Auth/Contracts/RefreshToken/RefreshTokenCommandResponse.cs @@ -9,9 +9,9 @@ public class RefreshTokenCommandResponse [PropertyBaseConverter] public long UserId { get; set; } public bool ForcePasswordChange { get; set; } public UserRole UserRole { get; set; } - public string AccessTokenSignature { get; set; } = null!; + public required string AccessTokenSignature { get; set; } public DateTime AccessTokenExpiration { get; set; } - public string RefreshTokenSignature { get; set; } = null!; + public required string RefreshTokenSignature { get; set; } public DateTime RefreshTokenExpiration { get; set; } public static RefreshTokenCommandResponse MapFromTokenEntity(Token token, @@ -20,7 +20,7 @@ public static RefreshTokenCommandResponse MapFromTokenEntity(Token token, return new RefreshTokenCommandResponse { UserId = token.UserId, - ForcePasswordChange = oldToken.User.ForcePasswordChange, + ForcePasswordChange = oldToken.User!.ForcePasswordChange, UserRole = oldToken.User.Role, AccessTokenSignature = accessTokenSignature, AccessTokenExpiration = token.AccessTokenExpiresAt, diff --git a/src/Pandatech.CleanArchitecture.Application/Features/User/Application/Create/CreateUserCommandHandler.cs b/src/Pandatech.CleanArchitecture.Application/Features/User/Application/Create/CreateUserCommandHandler.cs index 4c67802..5eebc09 100644 --- a/src/Pandatech.CleanArchitecture.Application/Features/User/Application/Create/CreateUserCommandHandler.cs +++ b/src/Pandatech.CleanArchitecture.Application/Features/User/Application/Create/CreateUserCommandHandler.cs @@ -24,7 +24,7 @@ public async Task Handle(CreateUserCommand request, CancellationToken cancellati FullName = request.FullName, PasswordHash = passwordHash, Role = request.UserRole, - Comment = request.Comment, + Comment = request.Comment ?? "", CreatedByUserId = requestContext.Identity.UserId }; unitOfWork.Users.Add(user); diff --git a/src/Pandatech.CleanArchitecture.Application/Features/User/Application/Delete/DeleteUsersCommand.cs b/src/Pandatech.CleanArchitecture.Application/Features/User/Application/Delete/DeleteUsersCommand.cs index e194d67..cec74bd 100644 --- a/src/Pandatech.CleanArchitecture.Application/Features/User/Application/Delete/DeleteUsersCommand.cs +++ b/src/Pandatech.CleanArchitecture.Application/Features/User/Application/Delete/DeleteUsersCommand.cs @@ -5,5 +5,5 @@ namespace Pandatech.CleanArchitecture.Application.Features.User.Application.Dele public class DeleteUsersCommand : ICommand { - [PropertyBaseConverter] public List Ids { get; set; } = null!; + [PropertyBaseConverter] public required List Ids { get; set; } } diff --git a/src/Pandatech.CleanArchitecture.Application/Features/User/Application/Update/UpdateUserCommand.cs b/src/Pandatech.CleanArchitecture.Application/Features/User/Application/Update/UpdateUserCommand.cs index a56e421..8679544 100644 --- a/src/Pandatech.CleanArchitecture.Application/Features/User/Application/Update/UpdateUserCommand.cs +++ b/src/Pandatech.CleanArchitecture.Application/Features/User/Application/Update/UpdateUserCommand.cs @@ -8,8 +8,8 @@ public class UpdateUserCommand : ICommand { [JsonIgnore] public long Id { get; set; } - public string Username { get; set; } = null!; - public string FullName { get; set; } = null!; + public required string Username { get; set; } + public required string FullName { get; set; } public UserRole Role { get; set; } public string? Comment { get; set; } } diff --git a/src/Pandatech.CleanArchitecture.Application/Features/User/Application/Update/UpdateUserCommandHandler.cs b/src/Pandatech.CleanArchitecture.Application/Features/User/Application/Update/UpdateUserCommandHandler.cs index c1031bf..cca11a4 100644 --- a/src/Pandatech.CleanArchitecture.Application/Features/User/Application/Update/UpdateUserCommandHandler.cs +++ b/src/Pandatech.CleanArchitecture.Application/Features/User/Application/Update/UpdateUserCommandHandler.cs @@ -28,7 +28,7 @@ public async Task Handle(UpdateUserCommand request, CancellationToken cancellati user.Username = username; user.FullName = request.FullName; user.Role = request.Role; - user.Comment = request.Comment; + user.Comment = request.Comment ?? ""; user.MarkAsUpdated(requestContext.Identity.UserId); diff --git a/src/Pandatech.CleanArchitecture.Application/Features/User/Application/UpdatePassword/UpdateUserPasswordCommand.cs b/src/Pandatech.CleanArchitecture.Application/Features/User/Application/UpdatePassword/UpdateUserPasswordCommand.cs index c0e488a..1f80074 100644 --- a/src/Pandatech.CleanArchitecture.Application/Features/User/Application/UpdatePassword/UpdateUserPasswordCommand.cs +++ b/src/Pandatech.CleanArchitecture.Application/Features/User/Application/UpdatePassword/UpdateUserPasswordCommand.cs @@ -7,5 +7,5 @@ public class UpdateUserPasswordCommand : ICommand { [JsonIgnore] public long Id { get; set; } - public string NewPassword { get; set; } = null!; + public required string NewPassword { get; set; } } diff --git a/src/Pandatech.CleanArchitecture.Application/Features/User/Contracts/GetById/GetUserQueryResponse.cs b/src/Pandatech.CleanArchitecture.Application/Features/User/Contracts/GetById/GetUserQueryResponse.cs index 802bf4d..61ef678 100644 --- a/src/Pandatech.CleanArchitecture.Application/Features/User/Contracts/GetById/GetUserQueryResponse.cs +++ b/src/Pandatech.CleanArchitecture.Application/Features/User/Contracts/GetById/GetUserQueryResponse.cs @@ -6,13 +6,13 @@ namespace Pandatech.CleanArchitecture.Application.Features.User.Contracts.GetByI public class GetUserQueryResponse { [PropertyBaseConverter] public long Id { get; set; } - public string Username { get; set; } = null!; - public string FullName { get; set; } = null!; + public required string Username { get; set; } + public required string FullName { get; set; } public UserRole Role { get; set; } public UserStatus Status { get; set; } public DateTime CreatedAt { get; set; } public DateTime? UpdatedAt { get; set; } - public string? Comment { get; set; } + public string Comment { get; set; } = ""; public static GetUserQueryResponse MapFromEntity(Core.Entities.User entity) { diff --git a/src/Pandatech.CleanArchitecture.Core/DTOs/Auth/Identity.cs b/src/Pandatech.CleanArchitecture.Core/DTOs/Auth/Identity.cs index 2840925..7acdeb5 100644 --- a/src/Pandatech.CleanArchitecture.Core/DTOs/Auth/Identity.cs +++ b/src/Pandatech.CleanArchitecture.Core/DTOs/Auth/Identity.cs @@ -5,14 +5,14 @@ namespace Pandatech.CleanArchitecture.Core.DTOs.Auth; public class Identity { public long UserId { get; set; } - public string Username { get; set; } = null!; + public required string Username { get; set; } public UserStatus Status { get; set; } public bool ForcePasswordChange { get; set; } - public string FullName { get; set; } = null!; + public required string FullName { get; set; } public UserRole UserRole { get; set; } public DateTime CreatedAt { get; set; } public DateTime? UpdatedAt { get; set; } public long TokenId { get; set; } - public string AccessTokenSignature { get; set; } = null!; + public required string AccessTokenSignature { get; set; } public DateTime AccessTokenExpiration { get; set; } } diff --git a/src/Pandatech.CleanArchitecture.Core/DTOs/Auth/MetaData.cs b/src/Pandatech.CleanArchitecture.Core/DTOs/Auth/MetaData.cs index ff256ab..048c6da 100644 --- a/src/Pandatech.CleanArchitecture.Core/DTOs/Auth/MetaData.cs +++ b/src/Pandatech.CleanArchitecture.Core/DTOs/Auth/MetaData.cs @@ -4,7 +4,7 @@ namespace Pandatech.CleanArchitecture.Core.DTOs.Auth; public class MetaData { - public string RequestId { get; set; } = null!; + public required string RequestId { get; set; } public DateTime RequestTime { get; set; } public SupportedLanguageType LanguageId { get; set; } public ClientType ClientType { get; set; } diff --git a/src/Pandatech.CleanArchitecture.Core/Entities/Token.cs b/src/Pandatech.CleanArchitecture.Core/Entities/Token.cs index 3fa05df..023fd68 100644 --- a/src/Pandatech.CleanArchitecture.Core/Entities/Token.cs +++ b/src/Pandatech.CleanArchitecture.Core/Entities/Token.cs @@ -5,13 +5,13 @@ public class Token public long Id { get; set; } public long UserId { get; set; } public long? PreviousTokenId { get; set; } - public byte[] AccessTokenHash { get; set; } = null!; - public byte[] RefreshTokenHash { get; set; } = null!; + public required byte[] AccessTokenHash { get; set; } + public required byte[] RefreshTokenHash { get; set; } public DateTime AccessTokenExpiresAt { get; set; } public DateTime RefreshTokenExpiresAt { get; set; } public DateTime InitialRefreshTokenCreatedAt { get; set; } = DateTime.UtcNow; public DateTime CreatedAt { get; set; } = DateTime.UtcNow; public DateTime UpdatedAt { get; set; } = DateTime.UtcNow; - public User User { get; set; } = null!; + public User? User { get; set; } public Token? PreviousToken { get; set; } } diff --git a/src/Pandatech.CleanArchitecture.Core/Entities/User.cs b/src/Pandatech.CleanArchitecture.Core/Entities/User.cs index 1e33a50..5ac65f8 100644 --- a/src/Pandatech.CleanArchitecture.Core/Entities/User.cs +++ b/src/Pandatech.CleanArchitecture.Core/Entities/User.cs @@ -6,13 +6,13 @@ namespace Pandatech.CleanArchitecture.Core.Entities; public class User : AuditEntityBase { public long Id { get; set; } - public string Username { get; set; } = null!; - public string FullName { get; set; } = null!; - public byte[] PasswordHash { get; set; } = null!; + public required string Username { get; set; } + public required string FullName { get; set; } + public required byte[] PasswordHash { get; set; } public UserRole Role { get; set; } public UserStatus Status { get; set; } = UserStatus.Active; public bool ForcePasswordChange { get; set; } = true; - public string? Comment { get; set; } + public string Comment { get; set; } = ""; public ICollection Tokens { get; set; } = new List(); } diff --git a/src/Pandatech.CleanArchitecture.Core/Entities/UserConfig.cs b/src/Pandatech.CleanArchitecture.Core/Entities/UserConfig.cs index 3a64e71..2b6f738 100644 --- a/src/Pandatech.CleanArchitecture.Core/Entities/UserConfig.cs +++ b/src/Pandatech.CleanArchitecture.Core/Entities/UserConfig.cs @@ -6,7 +6,7 @@ public class UserConfig : AuditEntityBase { public long Id { get; set; } public long UserId { get; set; } - public string Key { get; set; } = null!; - public string Value { get; set; } = null!; - public User User { get; set; } = null!; + public required string Key { get; set; } + public required string Value { get; set; } + public User? User { get; set; } } diff --git a/src/Pandatech.CleanArchitecture.Core/RedisEntities/LoggedUserRedisEntity.cs b/src/Pandatech.CleanArchitecture.Core/RedisEntities/LoggedUserRedisEntity.cs index 7e66ffc..3e121c0 100644 --- a/src/Pandatech.CleanArchitecture.Core/RedisEntities/LoggedUserRedisEntity.cs +++ b/src/Pandatech.CleanArchitecture.Core/RedisEntities/LoggedUserRedisEntity.cs @@ -7,12 +7,12 @@ namespace Pandatech.CleanArchitecture.Core.RedisEntities; [MessagePackObject] public class LoggedUserRedisEntity : ICacheEntity { - [Key(0)] public string AccessToken { get; set; } = null!; + [Key(0)] public required string AccessToken { get; set; } [Key(1)] public DateTime UpdatedAt { get; set; } [Key(2)] public DateTime AccessTokenExpiration { get; set; } [Key(3)] public long UserId { get; set; } - [Key(4)] public string Username { get; set; } = null!; - [Key(5)] public string FullName { get; set; } = null!; + [Key(4)] public required string Username { get; set; } + [Key(5)] public required string FullName { get; set; } [Key(6)] public UserRole UserRole { get; set; } [Key(7)] public UserStatus UserStatus { get; set; } [Key(8)] public bool ForcePasswordChange { get; set; } diff --git a/src/Pandatech.CleanArchitecture.Infrastructure/Context/EntityFilters/UserEntityFilters.cs b/src/Pandatech.CleanArchitecture.Infrastructure/Context/EntityFilters/UserEntityFilters.cs index fe05673..bc3e184 100644 --- a/src/Pandatech.CleanArchitecture.Infrastructure/Context/EntityFilters/UserEntityFilters.cs +++ b/src/Pandatech.CleanArchitecture.Infrastructure/Context/EntityFilters/UserEntityFilters.cs @@ -12,6 +12,9 @@ public UserEntityFilters() GenerateMappings(); AddMap("Role", x => x.Role != UserRole.SuperAdmin); AddMap("Id", x => x.Id, x => PandaBaseConverter.Base36ToBase10NotNull(x)); + AddMap("FullName", x => x.FullName.ToLower(), x => x.ToLower()); + AddMap("Username", x => x.Username.ToLower(), x => x.ToLower()); + AddMap("Comment", x => x.Comment.ToLower(), x => x.ToLower()); AddDefaultOrderBy("FullName"); } } diff --git a/src/Pandatech.CleanArchitecture.Infrastructure/Context/Migrations/20240629164406_Initial.Designer.cs b/src/Pandatech.CleanArchitecture.Infrastructure/Context/Migrations/20240703100810_Initial.Designer.cs similarity index 99% rename from src/Pandatech.CleanArchitecture.Infrastructure/Context/Migrations/20240629164406_Initial.Designer.cs rename to src/Pandatech.CleanArchitecture.Infrastructure/Context/Migrations/20240703100810_Initial.Designer.cs index de7b94e..3212638 100644 --- a/src/Pandatech.CleanArchitecture.Infrastructure/Context/Migrations/20240629164406_Initial.Designer.cs +++ b/src/Pandatech.CleanArchitecture.Infrastructure/Context/Migrations/20240703100810_Initial.Designer.cs @@ -12,7 +12,7 @@ namespace Pandatech.CleanArchitecture.Infrastructure.Context.Migrations { [DbContext(typeof(PostgresContext))] - [Migration("20240629164406_Initial")] + [Migration("20240703100810_Initial")] partial class Initial { /// @@ -165,6 +165,7 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("Comment") + .IsRequired() .HasColumnType("text") .HasColumnName("comment"); diff --git a/src/Pandatech.CleanArchitecture.Infrastructure/Context/Migrations/20240629164406_Initial.cs b/src/Pandatech.CleanArchitecture.Infrastructure/Context/Migrations/20240703100810_Initial.cs similarity index 99% rename from src/Pandatech.CleanArchitecture.Infrastructure/Context/Migrations/20240629164406_Initial.cs rename to src/Pandatech.CleanArchitecture.Infrastructure/Context/Migrations/20240703100810_Initial.cs index fe4d7ce..c681bfb 100644 --- a/src/Pandatech.CleanArchitecture.Infrastructure/Context/Migrations/20240629164406_Initial.cs +++ b/src/Pandatech.CleanArchitecture.Infrastructure/Context/Migrations/20240703100810_Initial.cs @@ -55,7 +55,7 @@ protected override void Up(MigrationBuilder migrationBuilder) role = table.Column(type: "integer", nullable: false), status = table.Column(type: "integer", nullable: false), force_password_change = table.Column(type: "boolean", nullable: false), - comment = table.Column(type: "text", nullable: true), + comment = table.Column(type: "text", nullable: false), created_at = table.Column(type: "timestamp with time zone", nullable: false), created_by_user_id = table.Column(type: "bigint", nullable: true), updated_at = table.Column(type: "timestamp with time zone", nullable: true), diff --git a/src/Pandatech.CleanArchitecture.Infrastructure/Context/Migrations/PostgresContextModelSnapshot.cs b/src/Pandatech.CleanArchitecture.Infrastructure/Context/Migrations/PostgresContextModelSnapshot.cs index 597ac17..38b450b 100644 --- a/src/Pandatech.CleanArchitecture.Infrastructure/Context/Migrations/PostgresContextModelSnapshot.cs +++ b/src/Pandatech.CleanArchitecture.Infrastructure/Context/Migrations/PostgresContextModelSnapshot.cs @@ -162,6 +162,7 @@ protected override void BuildModel(ModelBuilder modelBuilder) NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("Comment") + .IsRequired() .HasColumnType("text") .HasColumnName("comment"); diff --git a/src/Pandatech.CleanArchitecture.Infrastructure/Context/PostgresContext.cs b/src/Pandatech.CleanArchitecture.Infrastructure/Context/PostgresContext.cs index d5a9837..f6e6bf3 100644 --- a/src/Pandatech.CleanArchitecture.Infrastructure/Context/PostgresContext.cs +++ b/src/Pandatech.CleanArchitecture.Infrastructure/Context/PostgresContext.cs @@ -16,9 +16,9 @@ public PostgresContext(DbContextOptions options) : base(options this.UseAuditPropertyValidation(); } - public DbSet Tokens { get; set; } = null!; - public DbSet Users { get; set; } = null!; - public DbSet UserConfigs { get; set; } = null!; + public DbSet Tokens { get; set; } + public DbSet Users { get; set; } + public DbSet UserConfigs { get; set; } public DbSet InboxMessages { get; set; } public DbSet OutboxMessages { get; set; } diff --git a/src/Pandatech.CleanArchitecture.Infrastructure/Repositories/UnitOfWork.cs b/src/Pandatech.CleanArchitecture.Infrastructure/Repositories/UnitOfWork.cs index 783c3a9..bcbe95b 100644 --- a/src/Pandatech.CleanArchitecture.Infrastructure/Repositories/UnitOfWork.cs +++ b/src/Pandatech.CleanArchitecture.Infrastructure/Repositories/UnitOfWork.cs @@ -12,7 +12,7 @@ public class UnitOfWork( PostgresContext context) : IUnitOfWork { - private IDbContextTransaction _transaction = null!; + private IDbContextTransaction _transaction = null!; public IUserRepository Users { get; set; } = userRepository; public ITokenRepository Tokens { get; set; } = tokenRepository;