aboutsummaryrefslogtreecommitdiff
path: root/Timeline/Entities
diff options
context:
space:
mode:
author杨宇千 <crupest@outlook.com>2019-08-05 18:58:56 +0800
committer杨宇千 <crupest@outlook.com>2019-08-05 18:58:56 +0800
commitdc1ab11cea249f4ca967f86b115147a63f7c93a5 (patch)
treeb5f26eabcfa547e76dd7e70ffe0763f3fadf0ad5 /Timeline/Entities
parent5f5458518df0475fa36af754cae52eb31eb92fa3 (diff)
downloadtimeline-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.cs42
-rw-r--r--Timeline/Entities/Http/Common.cs37
-rw-r--r--Timeline/Entities/Http/Token.cs26
-rw-r--r--Timeline/Entities/Http/User.cs20
-rw-r--r--Timeline/Entities/PutResult.cs17
-rw-r--r--Timeline/Entities/UserInfo.cs23
-rw-r--r--Timeline/Entities/UserUtility.cs60
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 };
- }
- }
-}