aboutsummaryrefslogtreecommitdiff
path: root/BackEnd/Timeline/Services
diff options
context:
space:
mode:
Diffstat (limited to 'BackEnd/Timeline/Services')
-rw-r--r--BackEnd/Timeline/Services/HighlightTimelineService.cs7
-rw-r--r--BackEnd/Timeline/Services/TimelinePostService.cs24
-rw-r--r--BackEnd/Timeline/Services/TimelineService.cs54
-rw-r--r--BackEnd/Timeline/Services/UserCredentialService.cs2
-rw-r--r--BackEnd/Timeline/Services/UserService.cs45
-rw-r--r--BackEnd/Timeline/Services/UserTokenManager.cs6
6 files changed, 65 insertions, 73 deletions
diff --git a/BackEnd/Timeline/Services/HighlightTimelineService.cs b/BackEnd/Timeline/Services/HighlightTimelineService.cs
index 88ad4a4b..619bc33e 100644
--- a/BackEnd/Timeline/Services/HighlightTimelineService.cs
+++ b/BackEnd/Timeline/Services/HighlightTimelineService.cs
@@ -4,6 +4,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Timeline.Entities;
+using Timeline.Models;
using Timeline.Services.Exceptions;
namespace Timeline.Services
@@ -14,7 +15,7 @@ namespace Timeline.Services
/// Get all highlight timelines.
/// </summary>
/// <returns>A list of all highlight timelines.</returns>
- Task<List<Models.Timeline>> GetHighlightTimelines();
+ Task<List<TimelineInfo>> GetHighlightTimelines();
/// <summary>
/// Add a timeline to highlight list.
@@ -73,11 +74,11 @@ namespace Timeline.Services
await _database.SaveChangesAsync();
}
- public async Task<List<Models.Timeline>> GetHighlightTimelines()
+ public async Task<List<TimelineInfo>> GetHighlightTimelines()
{
var entities = await _database.HighlightTimelines.Select(t => new { t.Id }).ToListAsync();
- var result = new List<Models.Timeline>();
+ var result = new List<TimelineInfo>();
foreach (var entity in entities)
{
diff --git a/BackEnd/Timeline/Services/TimelinePostService.cs b/BackEnd/Timeline/Services/TimelinePostService.cs
index a1176a68..35513a36 100644
--- a/BackEnd/Timeline/Services/TimelinePostService.cs
+++ b/BackEnd/Timeline/Services/TimelinePostService.cs
@@ -39,7 +39,7 @@ namespace Timeline.Services
/// Thrown when timeline with name <paramref name="timelineName"/> does not exist.
/// If it is a personal timeline, then inner exception is <see cref="UserNotExistException"/>.
/// </exception>
- Task<List<TimelinePost>> GetPosts(string timelineName, DateTime? modifiedSince = null, bool includeDeleted = false);
+ Task<List<TimelinePostInfo>> GetPosts(string timelineName, DateTime? modifiedSince = null, bool includeDeleted = false);
/// <summary>
/// Get the etag of data of a post.
@@ -90,7 +90,7 @@ namespace Timeline.Services
/// If it is a personal timeline, then inner exception is <see cref="UserNotExistException"/>.
/// </exception>
/// <exception cref="UserNotExistException">Thrown if user of <paramref name="authorId"/> does not exist.</exception>
- Task<TimelinePost> CreateTextPost(string timelineName, long authorId, string text, DateTime? time);
+ Task<TimelinePostInfo> CreateTextPost(string timelineName, long authorId, string text, DateTime? time);
/// <summary>
/// Create a new image post in timeline.
@@ -108,7 +108,7 @@ namespace Timeline.Services
/// </exception>
/// <exception cref="UserNotExistException">Thrown if user of <paramref name="authorId"/> does not exist.</exception>
/// <exception cref="ImageException">Thrown if data is not a image. Validated by <see cref="ImageValidator"/>.</exception>
- Task<TimelinePost> CreateImagePost(string timelineName, long authorId, byte[] imageData, DateTime? time);
+ Task<TimelinePostInfo> CreateImagePost(string timelineName, long authorId, byte[] imageData, DateTime? time);
/// <summary>
/// Delete a post.
@@ -179,9 +179,9 @@ namespace Timeline.Services
_clock = clock;
}
- private async Task<TimelinePost> MapTimelinePostFromEntity(TimelinePostEntity entity, string timelineName)
+ private async Task<TimelinePostInfo> MapTimelinePostFromEntity(TimelinePostEntity entity, string timelineName)
{
- User? author = entity.AuthorId.HasValue ? await _userService.GetUser(entity.AuthorId.Value) : null;
+ UserInfo? author = entity.AuthorId.HasValue ? await _userService.GetUser(entity.AuthorId.Value) : null;
ITimelinePostContent? content = null;
@@ -197,7 +197,7 @@ namespace Timeline.Services
};
}
- return new TimelinePost(
+ return new TimelinePostInfo(
id: entity.LocalId,
author: author,
content: content,
@@ -207,7 +207,7 @@ namespace Timeline.Services
);
}
- public async Task<List<TimelinePost>> GetPosts(string timelineName, DateTime? modifiedSince = null, bool includeDeleted = false)
+ public async Task<List<TimelinePostInfo>> GetPosts(string timelineName, DateTime? modifiedSince = null, bool includeDeleted = false)
{
modifiedSince = modifiedSince?.MyToUtc();
@@ -231,7 +231,7 @@ namespace Timeline.Services
var postEntities = await query.ToListAsync();
- var posts = new List<TimelinePost>();
+ var posts = new List<TimelinePostInfo>();
foreach (var entity in postEntities)
{
posts.Add(await MapTimelinePostFromEntity(entity, timelineName));
@@ -309,7 +309,7 @@ namespace Timeline.Services
};
}
- public async Task<TimelinePost> CreateTextPost(string timelineName, long authorId, string text, DateTime? time)
+ public async Task<TimelinePostInfo> CreateTextPost(string timelineName, long authorId, string text, DateTime? time)
{
time = time?.MyToUtc();
@@ -342,7 +342,7 @@ namespace Timeline.Services
await _database.SaveChangesAsync();
- return new TimelinePost(
+ return new TimelinePostInfo(
id: postEntity.LocalId,
content: new TextTimelinePostContent(text),
time: finalTime,
@@ -352,7 +352,7 @@ namespace Timeline.Services
);
}
- public async Task<TimelinePost> CreateImagePost(string timelineName, long authorId, byte[] data, DateTime? time)
+ public async Task<TimelinePostInfo> CreateImagePost(string timelineName, long authorId, byte[] data, DateTime? time)
{
time = time?.MyToUtc();
@@ -391,7 +391,7 @@ namespace Timeline.Services
_database.TimelinePosts.Add(postEntity);
await _database.SaveChangesAsync();
- return new TimelinePost(
+ return new TimelinePostInfo(
id: postEntity.LocalId,
content: new ImageTimelinePostContent(tag),
time: finalTime,
diff --git a/BackEnd/Timeline/Services/TimelineService.cs b/BackEnd/Timeline/Services/TimelineService.cs
index b8ec354a..b65b3cf4 100644
--- a/BackEnd/Timeline/Services/TimelineService.cs
+++ b/BackEnd/Timeline/Services/TimelineService.cs
@@ -90,7 +90,7 @@ namespace Timeline.Services
/// Thrown when timeline with name <paramref name="timelineName"/> does not exist.
/// If it is a personal timeline, then inner exception is <see cref="UserNotExistException"/>.
/// </exception>
- Task<Models.Timeline> GetTimeline(string timelineName);
+ Task<TimelineInfo> GetTimeline(string timelineName);
/// <summary>
/// Get timeline by id.
@@ -98,7 +98,7 @@ namespace Timeline.Services
/// <param name="id">Id of timeline.</param>
/// <returns>The timeline.</returns>
/// <exception cref="TimelineNotExistException">Thrown when timeline with given id does not exist.</exception>
- Task<Models.Timeline> GetTimelineById(long id);
+ Task<TimelineInfo> GetTimelineById(long id);
/// <summary>
/// Set the properties of a timeline.
@@ -113,8 +113,6 @@ namespace Timeline.Services
/// </exception>
Task ChangeProperty(string timelineName, TimelineChangePropertyRequest newProperties);
-
-
/// <summary>
/// Change member of timeline.
/// </summary>
@@ -174,7 +172,6 @@ namespace Timeline.Services
/// </remarks>
Task<bool> HasReadPermission(string timelineName, long? visitorId);
-
/// <summary>
/// Verify whether a user is member of a timeline.
/// </summary>
@@ -202,7 +199,7 @@ namespace Timeline.Services
/// <remarks>
/// If user with related user id does not exist, empty list will be returned.
/// </remarks>
- Task<List<Models.Timeline>> GetTimelines(TimelineUserRelationship? relate = null, List<TimelineVisibility>? visibility = null);
+ Task<List<TimelineInfo>> GetTimelines(TimelineUserRelationship? relate = null, List<TimelineVisibility>? visibility = null);
/// <summary>
/// Create a timeline.
@@ -214,7 +211,7 @@ namespace Timeline.Services
/// <exception cref="ArgumentException">Thrown when timeline name is invalid.</exception>
/// <exception cref="EntityAlreadyExistException">Thrown when the timeline already exists.</exception>
/// <exception cref="UserNotExistException">Thrown when the owner user does not exist.</exception>
- Task<Models.Timeline> CreateTimeline(string timelineName, long ownerId);
+ Task<TimelineInfo> CreateTimeline(string timelineName, long ownerId);
/// <summary>
/// Delete a timeline.
@@ -238,7 +235,7 @@ namespace Timeline.Services
/// <remarks>
/// You can only change name of general timeline.
/// </remarks>
- Task<Models.Timeline> ChangeTimelineName(string oldTimelineName, string newTimelineName);
+ Task<TimelineInfo> ChangeTimelineName(string oldTimelineName, string newTimelineName);
}
public class TimelineService : BasicTimelineService, ITimelineService
@@ -270,11 +267,11 @@ namespace Timeline.Services
}
/// Remember to include Members when query.
- private async Task<Models.Timeline> MapTimelineFromEntity(TimelineEntity entity)
+ private async Task<TimelineInfo> MapTimelineFromEntity(TimelineEntity entity)
{
var owner = await _userService.GetUser(entity.OwnerId);
- var members = new List<User>();
+ var members = new List<UserInfo>();
foreach (var memberEntity in entity.Members)
{
members.Add(await _userService.GetUser(memberEntity.UserId));
@@ -282,19 +279,18 @@ namespace Timeline.Services
var name = entity.Name ?? ("@" + owner.Username);
- return new Models.Timeline
- {
- UniqueID = entity.UniqueId,
- Name = name,
- NameLastModified = entity.NameLastModified,
- Title = string.IsNullOrEmpty(entity.Title) ? name : entity.Title,
- Description = entity.Description ?? "",
- Owner = owner,
- Visibility = entity.Visibility,
- Members = members,
- CreateTime = entity.CreateTime,
- LastModified = entity.LastModified
- };
+ return new TimelineInfo(
+ entity.UniqueId,
+ name,
+ entity.NameLastModified,
+ string.IsNullOrEmpty(entity.Title) ? name : entity.Title,
+ entity.Description ?? "",
+ owner,
+ entity.Visibility,
+ members,
+ entity.CreateTime,
+ entity.LastModified
+ );
}
public async Task<DateTime> GetTimelineLastModifiedTime(string timelineName)
@@ -321,7 +317,7 @@ namespace Timeline.Services
return timelineEntity.UniqueId;
}
- public async Task<Models.Timeline> GetTimeline(string timelineName)
+ public async Task<TimelineInfo> GetTimeline(string timelineName)
{
if (timelineName == null)
throw new ArgumentNullException(nameof(timelineName));
@@ -333,7 +329,7 @@ namespace Timeline.Services
return await MapTimelineFromEntity(timelineEntity);
}
- public async Task<Models.Timeline> GetTimelineById(long id)
+ public async Task<TimelineInfo> GetTimelineById(long id)
{
var timelineEntity = await _database.Timelines.Where(t => t.Id == id).Include(t => t.Members).SingleOrDefaultAsync();
@@ -522,7 +518,7 @@ namespace Timeline.Services
return await _database.TimelineMembers.AnyAsync(m => m.TimelineId == timelineId && m.UserId == userId);
}
- public async Task<List<Models.Timeline>> GetTimelines(TimelineUserRelationship? relate = null, List<TimelineVisibility>? visibility = null)
+ public async Task<List<TimelineInfo>> GetTimelines(TimelineUserRelationship? relate = null, List<TimelineVisibility>? visibility = null)
{
List<TimelineEntity> entities;
@@ -556,7 +552,7 @@ namespace Timeline.Services
}
}
- var result = new List<Models.Timeline>();
+ var result = new List<TimelineInfo>();
foreach (var entity in entities)
{
@@ -566,7 +562,7 @@ namespace Timeline.Services
return result;
}
- public async Task<Models.Timeline> CreateTimeline(string name, long owner)
+ public async Task<TimelineInfo> CreateTimeline(string name, long owner)
{
if (name == null)
throw new ArgumentNullException(nameof(name));
@@ -604,7 +600,7 @@ namespace Timeline.Services
await _database.SaveChangesAsync();
}
- public async Task<Models.Timeline> ChangeTimelineName(string oldTimelineName, string newTimelineName)
+ public async Task<TimelineInfo> ChangeTimelineName(string oldTimelineName, string newTimelineName)
{
if (oldTimelineName == null)
throw new ArgumentNullException(nameof(oldTimelineName));
diff --git a/BackEnd/Timeline/Services/UserCredentialService.cs b/BackEnd/Timeline/Services/UserCredentialService.cs
index e5c3581b..8aeef9ef 100644
--- a/BackEnd/Timeline/Services/UserCredentialService.cs
+++ b/BackEnd/Timeline/Services/UserCredentialService.cs
@@ -1,12 +1,10 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
using System;
-using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Timeline.Entities;
using Timeline.Helpers;
-using Timeline.Models;
using Timeline.Models.Validation;
using Timeline.Services.Exceptions;
diff --git a/BackEnd/Timeline/Services/UserService.cs b/BackEnd/Timeline/Services/UserService.cs
index 9395cc52..96068e44 100644
--- a/BackEnd/Timeline/Services/UserService.cs
+++ b/BackEnd/Timeline/Services/UserService.cs
@@ -32,13 +32,13 @@ namespace Timeline.Services
/// <param name="id">The id of the user.</param>
/// <returns>The user info.</returns>
/// <exception cref="UserNotExistException">Thrown when the user with given id does not exist.</exception>
- Task<User> GetUser(long id);
+ Task<UserInfo> GetUser(long id);
/// <summary>
/// List all users.
/// </summary>
/// <returns>The user info of users.</returns>
- Task<List<User>> GetUsers();
+ Task<List<UserInfo>> GetUsers();
/// <summary>
/// Create a user with given info.
@@ -49,7 +49,7 @@ namespace Timeline.Services
/// <exception cref="ArgumentNullException">Thrown when <paramref name="username"/> or <paramref name="password"/> is null.</exception>
/// <exception cref="ArgumentException">Thrown when <paramref name="username"/> or <paramref name="password"/> is of bad format.</exception>
/// <exception cref="EntityAlreadyExistException">Thrown when a user with given username already exists.</exception>
- Task<User> CreateUser(string username, string password);
+ Task<UserInfo> CreateUser(string username, string password);
/// <summary>
/// Modify a user.
@@ -62,7 +62,7 @@ namespace Timeline.Services
/// <remarks>
/// Version will increase if password is changed.
/// </remarks>
- Task<User> ModifyUser(long id, ModifyUserParams? param);
+ Task<UserInfo> ModifyUser(long id, ModifyUserParams? param);
}
public class UserService : BasicUserService, IUserService
@@ -116,26 +116,23 @@ namespace Timeline.Services
throw new EntityAlreadyExistException(EntityNames.User, ExceptionUsernameConflict);
}
- private async Task<User> CreateUserFromEntity(UserEntity entity)
+ private async Task<UserInfo> CreateUserFromEntity(UserEntity entity)
{
var permission = await _userPermissionService.GetPermissionsOfUserAsync(entity.Id);
- return new User
- {
- UniqueId = entity.UniqueId,
- Username = entity.Username,
- Permissions = permission,
- Nickname = string.IsNullOrEmpty(entity.Nickname) ? entity.Username : entity.Nickname,
- Id = entity.Id,
- Version = entity.Version,
- CreateTime = entity.CreateTime,
- UsernameChangeTime = entity.UsernameChangeTime,
- LastModified = entity.LastModified
- };
+ return new UserInfo(
+ entity.Id,
+ entity.UniqueId,
+ entity.Username,
+ string.IsNullOrEmpty(entity.Nickname) ? entity.Username : entity.Nickname,
+ permission,
+ entity.UsernameChangeTime,
+ entity.CreateTime,
+ entity.LastModified,
+ entity.Version
+ );
}
-
-
- public async Task<User> GetUser(long id)
+ public async Task<UserInfo> GetUser(long id)
{
var user = await _databaseContext.Users.Where(u => u.Id == id).SingleOrDefaultAsync();
@@ -145,9 +142,9 @@ namespace Timeline.Services
return await CreateUserFromEntity(user);
}
- public async Task<List<User>> GetUsers()
+ public async Task<List<UserInfo>> GetUsers()
{
- List<User> result = new();
+ List<UserInfo> result = new();
foreach (var entity in await _databaseContext.Users.ToArrayAsync())
{
result.Add(await CreateUserFromEntity(entity));
@@ -155,7 +152,7 @@ namespace Timeline.Services
return result;
}
- public async Task<User> CreateUser(string username, string password)
+ public async Task<UserInfo> CreateUser(string username, string password)
{
if (username == null)
throw new ArgumentNullException(nameof(username));
@@ -183,7 +180,7 @@ namespace Timeline.Services
return await CreateUserFromEntity(newEntity);
}
- public async Task<User> ModifyUser(long id, ModifyUserParams? param)
+ public async Task<UserInfo> ModifyUser(long id, ModifyUserParams? param)
{
if (param != null)
{
diff --git a/BackEnd/Timeline/Services/UserTokenManager.cs b/BackEnd/Timeline/Services/UserTokenManager.cs
index 831329e6..b887b987 100644
--- a/BackEnd/Timeline/Services/UserTokenManager.cs
+++ b/BackEnd/Timeline/Services/UserTokenManager.cs
@@ -10,7 +10,7 @@ namespace Timeline.Services
public class UserTokenCreateResult
{
public string Token { get; set; } = default!;
- public User User { get; set; } = default!;
+ public UserInfo User { get; set; } = default!;
}
public interface IUserTokenManager
@@ -38,7 +38,7 @@ namespace Timeline.Services
/// <exception cref="UserTokenBadVersionException">Thrown when the token is of bad version.</exception>
/// <exception cref="UserTokenBadFormatException">Thrown when the token is of bad format.</exception>
/// <exception cref="UserNotExistException">Thrown when the user specified by the token does not exist. Usually the user had been deleted after the token was issued.</exception>
- public Task<User> VerifyToken(string token);
+ public Task<UserInfo> VerifyToken(string token);
}
public class UserTokenManager : IUserTokenManager
@@ -75,7 +75,7 @@ namespace Timeline.Services
}
- public async Task<User> VerifyToken(string token)
+ public async Task<UserInfo> VerifyToken(string token)
{
if (token == null)
throw new ArgumentNullException(nameof(token));