diff options
author | crupest <crupest@outlook.com> | 2020-06-14 01:03:20 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2020-06-14 01:03:20 +0800 |
commit | 7ed5306c62262921264bf9c83e00a4c9f3ae33b1 (patch) | |
tree | 96f2c2c2ae927bf68e2e8306f6e4c90aa7508c05 | |
parent | 4cfb50d40384e5dea1805f8d6fc5ab38cd32d93b (diff) | |
download | timeline-7ed5306c62262921264bf9c83e00a4c9f3ae33b1.tar.gz timeline-7ed5306c62262921264bf9c83e00a4c9f3ae33b1.tar.bz2 timeline-7ed5306c62262921264bf9c83e00a4c9f3ae33b1.zip |
feat(back): Fix #103 .
-rw-r--r-- | Timeline/Entities/DatabaseContext.cs | 2 | ||||
-rw-r--r-- | Timeline/Models/Http/Timeline.cs | 3 | ||||
-rw-r--r-- | Timeline/Models/Timeline.cs | 1 | ||||
-rw-r--r-- | Timeline/Services/TimelineService.cs | 76 | ||||
-rw-r--r-- | Timeline/Startup.cs | 5 |
5 files changed, 38 insertions, 49 deletions
diff --git a/Timeline/Entities/DatabaseContext.cs b/Timeline/Entities/DatabaseContext.cs index af7d2edb..136dc442 100644 --- a/Timeline/Entities/DatabaseContext.cs +++ b/Timeline/Entities/DatabaseContext.cs @@ -1,6 +1,4 @@ -using Microsoft.Data.Sqlite;
using Microsoft.EntityFrameworkCore;
-using System;
namespace Timeline.Entities
{
diff --git a/Timeline/Models/Http/Timeline.cs b/Timeline/Models/Http/Timeline.cs index fb767f10..a942db1e 100644 --- a/Timeline/Models/Http/Timeline.cs +++ b/Timeline/Models/Http/Timeline.cs @@ -26,7 +26,8 @@ namespace Timeline.Models.Http public class TimelineInfo
{
- public string? Name { get; set; }
+ public string UniqueId { get; set; } = default!;
+ public string Name { get; set; } = default!;
public string Description { get; set; } = default!;
public UserInfo Owner { get; set; } = default!;
public TimelineVisibility Visibility { get; set; }
diff --git a/Timeline/Models/Timeline.cs b/Timeline/Models/Timeline.cs index 803a5c5c..c47d7be3 100644 --- a/Timeline/Models/Timeline.cs +++ b/Timeline/Models/Timeline.cs @@ -70,6 +70,7 @@ namespace Timeline.Models public class Timeline
#pragma warning restore CA1724 // Type names should not match namespaces
{
+ public Guid UniqueID { get; set; } = default!;
public string Name { get; set; } = default!;
public string Description { get; set; } = default!;
public User Owner { get; set; } = default!;
diff --git a/Timeline/Services/TimelineService.cs b/Timeline/Services/TimelineService.cs index a473ae66..0b845a57 100644 --- a/Timeline/Services/TimelineService.cs +++ b/Timeline/Services/TimelineService.cs @@ -304,6 +304,30 @@ namespace Timeline.Services }
+ internal static class TimelineServiceHelper
+ {
+ public static async Task<Models.Timeline> MapTimelineFromEntity(IUserService userService, TimelineEntity entity)
+ {
+ var owner = await userService.GetUserById(entity.OwnerId);
+
+ var members = new List<User>();
+ foreach (var memberEntity in entity.Members)
+ {
+ members.Add(await userService.GetUserById(memberEntity.UserId));
+ }
+
+ return new Models.Timeline
+ {
+ UniqueID = entity.UniqueId,
+ Name = entity.Name ?? ("@" + owner.Username),
+ Description = entity.Description ?? "",
+ Owner = owner,
+ Visibility = entity.Visibility,
+ Members = members
+ };
+ }
+ }
+
public abstract class BaseTimelineService : IBaseTimelineService
{
protected BaseTimelineService(ILoggerFactory loggerFactory, DatabaseContext database, IImageValidator imageValidator, IDataManager dataManager, IUserService userService, IClock clock)
@@ -316,7 +340,7 @@ namespace Timeline.Services UserService = userService;
}
- private ILogger<BaseTimelineService> _logger;
+ private readonly ILogger<BaseTimelineService> _logger;
protected IClock Clock { get; }
@@ -361,26 +385,9 @@ namespace Timeline.Services var timelineId = await FindTimelineId(name);
- var timelineEntity = await Database.Timelines.Where(t => t.Id == timelineId).SingleAsync();
-
- var timelineMemberEntities = await Database.TimelineMembers.Where(m => m.TimelineId == timelineId).Select(m => new { m.UserId }).ToListAsync();
+ var timelineEntity = await Database.Timelines.Where(t => t.Id == timelineId).Include(t => t.Members).SingleAsync();
- var owner = await UserService.GetUserById(timelineEntity.OwnerId);
-
- var members = new List<User>();
- foreach (var memberEntity in timelineMemberEntities)
- {
- members.Add(await UserService.GetUserById(memberEntity.UserId));
- }
-
- return new Models.Timeline
- {
- Name = GenerateName(name),
- Description = timelineEntity.Description ?? "",
- Owner = owner,
- Visibility = timelineEntity.Visibility,
- Members = members
- };
+ return await TimelineServiceHelper.MapTimelineFromEntity(UserService, timelineEntity);
}
public async Task<List<TimelinePost>> GetPosts(string name)
@@ -945,22 +952,7 @@ namespace Timeline.Services foreach (var entity in entities)
{
- var owner = await _userService.GetUserById(entity.OwnerId);
- var timeline = new Models.Timeline
- {
- Name = entity.Name ?? ("@" + owner.Username),
- Description = entity.Description ?? "",
- Owner = owner,
- Visibility = entity.Visibility,
- Members = new List<User>()
- };
-
- foreach (var m in entity.Members)
- {
- timeline.Members.Add(await _userService.GetUserById(m.UserId));
- }
-
- result.Add(timeline);
+ result.Add(await TimelineServiceHelper.MapTimelineFromEntity(_userService, entity));
}
return result;
@@ -986,20 +978,14 @@ namespace Timeline.Services Name = name,
OwnerId = owner,
Visibility = TimelineVisibility.Register,
- CreateTime = _clock.GetCurrentTime()
+ CreateTime = _clock.GetCurrentTime(),
+ Members = new List<TimelineMemberEntity>()
};
_database.Timelines.Add(newEntity);
await _database.SaveChangesAsync();
- return new Models.Timeline
- {
- Name = name,
- Description = "",
- Owner = user,
- Visibility = newEntity.Visibility,
- Members = new List<User>()
- };
+ return await TimelineServiceHelper.MapTimelineFromEntity(_userService, newEntity);
}
public async Task DeleteTimeline(string name)
diff --git a/Timeline/Startup.cs b/Timeline/Startup.cs index 35c47712..76d77e8e 100644 --- a/Timeline/Startup.cs +++ b/Timeline/Startup.cs @@ -62,7 +62,10 @@ namespace Timeline services.AddScoped<IPathProvider, PathProvider>();
- services.AddAutoMapper(GetType().Assembly);
+ services.AddAutoMapper((config) =>
+ {
+ config.CreateMap<Guid, string>().ConvertUsing(guid => guid.ToString());
+ }, GetType().Assembly);
services.AddTransient<IClock, Clock>();
|