From c2a1aca765eb034cdd937d443bb3df3dab65d2b0 Mon Sep 17 00:00:00 2001 From: crupest Date: Sat, 29 Feb 2020 00:14:05 +0800 Subject: Remove the length constraint in entity as entity framework core does not use them as well. --- Timeline/Entities/UserAvatarEntity.cs | 2 +- Timeline/Entities/UserEntity.cs | 4 ++-- Timeline/Migrations/20200105150407_Initialize.cs | 6 +++--- Timeline/Migrations/DatabaseContextModelSnapshot.cs | 9 +++------ 4 files changed, 9 insertions(+), 12 deletions(-) diff --git a/Timeline/Entities/UserAvatarEntity.cs b/Timeline/Entities/UserAvatarEntity.cs index 6cecce1a..be094a77 100644 --- a/Timeline/Entities/UserAvatarEntity.cs +++ b/Timeline/Entities/UserAvatarEntity.cs @@ -17,7 +17,7 @@ namespace Timeline.Entities [Column("type")] public string? Type { get; set; } - [Column("etag"), MaxLength(30)] + [Column("etag")] public string? ETag { get; set; } [Column("last_modified"), Required] diff --git a/Timeline/Entities/UserEntity.cs b/Timeline/Entities/UserEntity.cs index 946c3fa2..1ef3f98c 100644 --- a/Timeline/Entities/UserEntity.cs +++ b/Timeline/Entities/UserEntity.cs @@ -17,7 +17,7 @@ namespace Timeline.Entities [Column("id"), Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] public long Id { get; set; } - [Column("username"), MaxLength(26), Required] + [Column("username"), Required] public string Username { get; set; } = default!; [Column("password"), Required] @@ -29,7 +29,7 @@ namespace Timeline.Entities [Column("version"), Required] public long Version { get; set; } - [Column("nickname"), MaxLength(100)] + [Column("nickname")] public string? Nickname { get; set; } public UserAvatarEntity? Avatar { get; set; } diff --git a/Timeline/Migrations/20200105150407_Initialize.cs b/Timeline/Migrations/20200105150407_Initialize.cs index 2881ee64..4e12ef83 100644 --- a/Timeline/Migrations/20200105150407_Initialize.cs +++ b/Timeline/Migrations/20200105150407_Initialize.cs @@ -13,7 +13,7 @@ namespace Timeline.Migrations { id = table.Column(nullable: false) .Annotation("Sqlite:Autoincrement", true), - name = table.Column(maxLength: 26, nullable: false), + name = table.Column(nullable: false), password = table.Column(nullable: false), roles = table.Column(nullable: false), version = table.Column(nullable: false, defaultValue: 0L) @@ -55,7 +55,7 @@ namespace Timeline.Migrations .Annotation("Sqlite:Autoincrement", true), data = table.Column(nullable: true), type = table.Column(nullable: true), - etag = table.Column(maxLength: 30, nullable: true), + etag = table.Column(nullable: true), last_modified = table.Column(nullable: false), UserId = table.Column(nullable: false) }, @@ -76,7 +76,7 @@ namespace Timeline.Migrations { id = table.Column(nullable: false) .Annotation("Sqlite:Autoincrement", true), - nickname = table.Column(maxLength: 26, nullable: true), + nickname = table.Column(nullable: true), UserId = table.Column(nullable: false) }, constraints: table => diff --git a/Timeline/Migrations/DatabaseContextModelSnapshot.cs b/Timeline/Migrations/DatabaseContextModelSnapshot.cs index d5f9c0e4..2c97ea79 100644 --- a/Timeline/Migrations/DatabaseContextModelSnapshot.cs +++ b/Timeline/Migrations/DatabaseContextModelSnapshot.cs @@ -140,8 +140,7 @@ namespace Timeline.Migrations b.Property("ETag") .HasColumnName("etag") - .HasColumnType("TEXT") - .HasMaxLength(30); + .HasColumnType("TEXT"); b.Property("LastModified") .HasColumnName("last_modified") @@ -172,8 +171,7 @@ namespace Timeline.Migrations b.Property("Nickname") .HasColumnName("nickname") - .HasColumnType("TEXT") - .HasMaxLength(100); + .HasColumnType("TEXT"); b.Property("Password") .IsRequired() @@ -188,8 +186,7 @@ namespace Timeline.Migrations b.Property("Username") .IsRequired() .HasColumnName("username") - .HasColumnType("TEXT") - .HasMaxLength(26); + .HasColumnType("TEXT"); b.Property("Version") .ValueGeneratedOnAdd() -- cgit v1.2.3 From e84573dde542b18bf3f78d250e6f0898f05c8d10 Mon Sep 17 00:00:00 2001 From: crupest Date: Sat, 29 Feb 2020 00:21:08 +0800 Subject: One fogeted place is cleared. Also a note: Sqlite does not respect the length constraint on type. --- Timeline/Migrations/20200131100517_RefactorUser.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/Timeline/Migrations/20200131100517_RefactorUser.cs b/Timeline/Migrations/20200131100517_RefactorUser.cs index 533f4bc4..8597ed50 100644 --- a/Timeline/Migrations/20200131100517_RefactorUser.cs +++ b/Timeline/Migrations/20200131100517_RefactorUser.cs @@ -12,7 +12,6 @@ namespace Timeline.Migrations migrationBuilder.AddColumn( name: "nickname", table: "users", - maxLength: 100, nullable: true); migrationBuilder.Sql(@" -- cgit v1.2.3 From b43b480d3c50b3f12cf01750c0951ece1fe70119 Mon Sep 17 00:00:00 2001 From: crupest Date: Sat, 29 Feb 2020 17:29:57 +0800 Subject: Guess what, Chinese character is also a "letter". So no need to change code. Just add some tests. --- Timeline.Tests/UsernameValidatorUnitTest.cs | 2 ++ Timeline/Models/Validation/NameValidator.cs | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/Timeline.Tests/UsernameValidatorUnitTest.cs b/Timeline.Tests/UsernameValidatorUnitTest.cs index 0f844452..8824362b 100644 --- a/Timeline.Tests/UsernameValidatorUnitTest.cs +++ b/Timeline.Tests/UsernameValidatorUnitTest.cs @@ -39,6 +39,7 @@ namespace Timeline.Tests [InlineData("!")] [InlineData("!abc")] [InlineData("ab c")] + [InlineData("ab c!")] // This is a chinese ! . public void BadCharactor(string value) { FailAndMessage(value).Should().ContainEquivalentOf("invalid") @@ -61,6 +62,7 @@ namespace Timeline.Tests [InlineData("a-bc")] [InlineData("a-b-c")] [InlineData("a-b_c")] + [InlineData("a-你好_c")] public void Success(string value) { var (result, _) = _validator.Validate(value); diff --git a/Timeline/Models/Validation/NameValidator.cs b/Timeline/Models/Validation/NameValidator.cs index 8db10ebd..dec2b872 100644 --- a/Timeline/Models/Validation/NameValidator.cs +++ b/Timeline/Models/Validation/NameValidator.cs @@ -14,7 +14,7 @@ namespace Timeline.Models.Validation return (false, MessageEmptyString); } - if (value.Length > 26) + if (value.Length > MaxLength) { return (false, MessageTooLong); } -- cgit v1.2.3