diff options
author | 杨宇千 <crupest@outlook.com> | 2019-08-22 14:54:47 +0800 |
---|---|---|
committer | 杨宇千 <crupest@outlook.com> | 2019-08-22 14:54:47 +0800 |
commit | 9112f288f638f34aab48fdb965ff9703a99adb4d (patch) | |
tree | 652b674f8aeccc96245802b7f980f6993fc53db7 /Timeline/Services/UserDetailService.cs | |
parent | 1934e2d6ade6115bdb8f7f90f590b557ec96323d (diff) | |
download | timeline-9112f288f638f34aab48fdb965ff9703a99adb4d.tar.gz timeline-9112f288f638f34aab48fdb965ff9703a99adb4d.tar.bz2 timeline-9112f288f638f34aab48fdb965ff9703a99adb4d.zip |
Add nickname. Step 1.
Diffstat (limited to 'Timeline/Services/UserDetailService.cs')
-rw-r--r-- | Timeline/Services/UserDetailService.cs | 48 |
1 files changed, 41 insertions, 7 deletions
diff --git a/Timeline/Services/UserDetailService.cs b/Timeline/Services/UserDetailService.cs index 0bb745f3..a8ed662b 100644 --- a/Timeline/Services/UserDetailService.cs +++ b/Timeline/Services/UserDetailService.cs @@ -12,6 +12,15 @@ namespace Timeline.Services public interface IUserDetailService
{
/// <summary>
+ /// Get the nickname of user.
+ /// </summary>
+ /// <param name="username">The username to get nickname of.</param>
+ /// <returns>The user's nickname. Null if not set.</returns>
+ /// <exception cref="ArgumentException">Thrown if <paramref name="username"/> is null or empty.</exception>
+ /// <exception cref="UserNotExistException">Thrown if user doesn't exist.</exception>
+ Task<string> GetUserNickname(string username);
+
+ /// <summary>
/// Get the detail of user.
/// </summary>
/// <param name="username">The username to get user detail of.</param>
@@ -42,23 +51,45 @@ namespace Timeline.Services _databaseContext = databaseContext;
}
+ private async Task<UserDetailEntity> CreateEntity(long userId)
+ {
+ var entity = new UserDetailEntity()
+ {
+ UserId = userId
+ };
+ _databaseContext.UserDetails.Add(entity);
+ await _databaseContext.SaveChangesAsync();
+ _logger.LogInformation("An entity is created in user_details.");
+ return entity;
+ }
+
// Check the existence of user detail entry
private async Task<UserDetailEntity> CheckAndInit(long userId)
{
var detail = await _databaseContext.UserDetails.Where(e => e.UserId == userId).SingleOrDefaultAsync();
if (detail == null)
{
- detail = new UserDetailEntity()
- {
- UserId = userId
- };
- _databaseContext.UserDetails.Add(detail);
- await _databaseContext.SaveChangesAsync();
- _logger.LogInformation("An entity is created in user_details.");
+ detail = await CreateEntity(userId);
}
return detail;
}
+ public async Task<string> GetUserNickname(string username)
+ {
+ var userId = await DatabaseExtensions.CheckAndGetUser(_databaseContext.Users, username);
+ var detail = await _databaseContext.UserDetails.Where(e => e.UserId == userId).Select(e => new { e.Nickname }).SingleOrDefaultAsync();
+ if (detail == null)
+ {
+ var entity = await CreateEntity(userId);
+ return null;
+ }
+ else
+ {
+ var nickname = detail.Nickname;
+ return string.IsNullOrEmpty(nickname) ? null : nickname;
+ }
+ }
+
public async Task<UserDetail> GetUserDetail(string username)
{
var userId = await DatabaseExtensions.CheckAndGetUser(_databaseContext.Users, username);
@@ -74,6 +105,9 @@ namespace Timeline.Services var userId = await DatabaseExtensions.CheckAndGetUser(_databaseContext.Users, username);
var detailEntity = await CheckAndInit(userId);
+ if (detail.Nickname != null)
+ detailEntity.Nickname = detail.Nickname;
+
if (detail.QQ != null)
detailEntity.QQ = detail.QQ;
|