diff options
author | 杨宇千 <crupest@outlook.com> | 2019-08-05 18:58:56 +0800 |
---|---|---|
committer | 杨宇千 <crupest@outlook.com> | 2019-08-05 18:58:56 +0800 |
commit | dc1ab11cea249f4ca967f86b115147a63f7c93a5 (patch) | |
tree | b5f26eabcfa547e76dd7e70ffe0763f3fadf0ad5 /Timeline/Entities | |
parent | 5f5458518df0475fa36af754cae52eb31eb92fa3 (diff) | |
download | timeline-dc1ab11cea249f4ca967f86b115147a63f7c93a5.tar.gz timeline-dc1ab11cea249f4ca967f86b115147a63f7c93a5.tar.bz2 timeline-dc1ab11cea249f4ca967f86b115147a63f7c93a5.zip |
3 things.
1. Exchange Models and Entities namespace.
2. Fix the bug that input with missing field leads to 500.
3. Write unit tests.
Diffstat (limited to 'Timeline/Entities')
-rw-r--r-- | Timeline/Entities/DatabaseContext.cs | 42 | ||||
-rw-r--r-- | Timeline/Entities/Http/Common.cs | 37 | ||||
-rw-r--r-- | Timeline/Entities/Http/Token.cs | 26 | ||||
-rw-r--r-- | Timeline/Entities/Http/User.cs | 20 | ||||
-rw-r--r-- | Timeline/Entities/PutResult.cs | 17 | ||||
-rw-r--r-- | Timeline/Entities/UserInfo.cs | 23 | ||||
-rw-r--r-- | Timeline/Entities/UserUtility.cs | 60 |
7 files changed, 42 insertions, 183 deletions
diff --git a/Timeline/Entities/DatabaseContext.cs b/Timeline/Entities/DatabaseContext.cs new file mode 100644 index 00000000..9fe046ac --- /dev/null +++ b/Timeline/Entities/DatabaseContext.cs @@ -0,0 +1,42 @@ +using Microsoft.EntityFrameworkCore; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace Timeline.Entities +{ + public static class UserRoles + { + public const string Admin = "admin"; + public const string User = "user"; + } + + [Table("user")] + public class User + { + [Column("id"), Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public long Id { get; set; } + + [Column("name"), Required] + public string Name { get; set; } + + [Column("password"), Required] + public string EncryptedPassword { get; set; } + + [Column("roles"), Required] + public string RoleString { get; set; } + + [Column("version"), Required] + public long Version { get; set; } + } + + public class DatabaseContext : DbContext + { + public DatabaseContext(DbContextOptions<DatabaseContext> options) + : base(options) + { + + } + + public DbSet<User> Users { get; set; } + } +} diff --git a/Timeline/Entities/Http/Common.cs b/Timeline/Entities/Http/Common.cs deleted file mode 100644 index 3a45a0ae..00000000 --- a/Timeline/Entities/Http/Common.cs +++ /dev/null @@ -1,37 +0,0 @@ -namespace Timeline.Entities.Http -{ - public class CommonResponse - { - public CommonResponse() - { - - } - - public CommonResponse(int code, string message) - { - Code = code; - Message = message; - } - - public int Code { get; set; } - public string Message { get; set; } - } - - public static class CommonPutResponse - { - public const int CreatedCode = 0; - public const int ModifiedCode = 1; - - public static CommonResponse Created { get; } = new CommonResponse(CreatedCode, "A new item is created."); - public static CommonResponse Modified { get; } = new CommonResponse(ModifiedCode, "An existent item is modified."); - } - - public static class CommonDeleteResponse - { - public const int DeletedCode = 0; - public const int NotExistsCode = 1; - - public static CommonResponse Deleted { get; } = new CommonResponse(DeletedCode, "An existent item is deleted."); - public static CommonResponse NotExists { get; } = new CommonResponse(NotExistsCode, "The item does not exist."); - } -} diff --git a/Timeline/Entities/Http/Token.cs b/Timeline/Entities/Http/Token.cs deleted file mode 100644 index 8a02ed2e..00000000 --- a/Timeline/Entities/Http/Token.cs +++ /dev/null @@ -1,26 +0,0 @@ -namespace Timeline.Entities.Http -{ - public class CreateTokenRequest - { - public string Username { get; set; } - public string Password { get; set; } - // in day - public double? ExpireOffset { get; set; } - } - - public class CreateTokenResponse - { - public string Token { get; set; } - public UserInfo User { get; set; } - } - - public class VerifyTokenRequest - { - public string Token { get; set; } - } - - public class VerifyTokenResponse - { - public UserInfo User { get; set; } - } -} diff --git a/Timeline/Entities/Http/User.cs b/Timeline/Entities/Http/User.cs deleted file mode 100644 index b5384778..00000000 --- a/Timeline/Entities/Http/User.cs +++ /dev/null @@ -1,20 +0,0 @@ -namespace Timeline.Entities.Http -{ - public class UserPutRequest - { - public string Password { get; set; } - public bool Administrator { get; set; } - } - - public class UserPatchRequest - { - public string Password { get; set; } - public bool? Administrator { get; set; } - } - - public class ChangePasswordRequest - { - public string OldPassword { get; set; } - public string NewPassword { get; set; } - } -} diff --git a/Timeline/Entities/PutResult.cs b/Timeline/Entities/PutResult.cs deleted file mode 100644 index 4ed48572..00000000 --- a/Timeline/Entities/PutResult.cs +++ /dev/null @@ -1,17 +0,0 @@ -namespace Timeline.Entities -{ - /// <summary> - /// Represents the result of a "put" operation. - /// </summary> - public enum PutResult - { - /// <summary> - /// Indicates the item did not exist and now is created. - /// </summary> - Created, - /// <summary> - /// Indicates the item exists already and is modified. - /// </summary> - Modified - } -} diff --git a/Timeline/Entities/UserInfo.cs b/Timeline/Entities/UserInfo.cs deleted file mode 100644 index 414a8dfe..00000000 --- a/Timeline/Entities/UserInfo.cs +++ /dev/null @@ -1,23 +0,0 @@ -namespace Timeline.Entities -{ - public sealed class UserInfo - { - public UserInfo() - { - } - - public UserInfo(string username, bool administrator) - { - Username = username; - Administrator = administrator; - } - - public string Username { get; set; } - public bool Administrator { get; set; } - - public override string ToString() - { - return $"Username: {Username} ; Administrator: {Administrator}"; - } - } -} diff --git a/Timeline/Entities/UserUtility.cs b/Timeline/Entities/UserUtility.cs deleted file mode 100644 index 14cdb2d6..00000000 --- a/Timeline/Entities/UserUtility.cs +++ /dev/null @@ -1,60 +0,0 @@ -using System; -using System.Linq; -using Timeline.Models; -using Timeline.Services; - -namespace Timeline.Entities -{ - public static class UserUtility - { - public const string UserRole = UserRoles.User; - public const string AdminRole = UserRoles.Admin; - - public static string[] UserRoleArray { get; } = new string[] { UserRole }; - public static string[] AdminRoleArray { get; } = new string[] { UserRole, AdminRole }; - - public static string[] IsAdminToRoleArray(bool isAdmin) - { - return isAdmin ? AdminRoleArray : UserRoleArray; - } - - public static bool RoleArrayToIsAdmin(string[] roles) - { - return roles.Contains(AdminRole); - } - - public static string[] RoleStringToRoleArray(string roleString) - { - return roleString.Split(',').ToArray(); - } - - public static string RoleArrayToRoleString(string[] roles) - { - return string.Join(',', roles); - } - - public static string IsAdminToRoleString(bool isAdmin) - { - return RoleArrayToRoleString(IsAdminToRoleArray(isAdmin)); - } - - public static bool RoleStringToIsAdmin(string roleString) - { - return RoleArrayToIsAdmin(RoleStringToRoleArray(roleString)); - } - - public static UserInfo CreateUserInfo(User user) - { - if (user == null) - throw new ArgumentNullException(nameof(user)); - return new UserInfo(user.Name, RoleStringToIsAdmin(user.RoleString)); - } - - internal static UserCache CreateUserCache(User user) - { - if (user == null) - throw new ArgumentNullException(nameof(user)); - return new UserCache { Username = user.Name, Administrator = RoleStringToIsAdmin(user.RoleString), Version = user.Version }; - } - } -} |