From a1f6b41accb47e4c1e1e0474148afa94732377da Mon Sep 17 00:00:00 2001 From: crupest Date: Thu, 7 Apr 2022 21:52:26 +0800 Subject: ... --- .../Timeline/Services/Timeline/TimelineService.cs | 32 +++++++++++++++++++--- 1 file changed, 28 insertions(+), 4 deletions(-) (limited to 'BackEnd/Timeline/Services') diff --git a/BackEnd/Timeline/Services/Timeline/TimelineService.cs b/BackEnd/Timeline/Services/Timeline/TimelineService.cs index bd838c7d..cdea39fa 100644 --- a/BackEnd/Timeline/Services/Timeline/TimelineService.cs +++ b/BackEnd/Timeline/Services/Timeline/TimelineService.cs @@ -82,6 +82,15 @@ namespace Timeline.Services.Timeline { ["id"] = id }); + } + + protected static EntityNotExistException CreateTimelineNotExistException(long ownerId, string timelineName) + { + return new EntityNotExistException(EntityTypes.Timeline, new Dictionary + { + [nameof(ownerId)] = ownerId, + [nameof(timelineName)] = timelineName + }); } protected void CheckGeneralTimelineName(string timelineName, string? paramName) @@ -378,6 +387,10 @@ namespace Timeline.Services.Timeline throw new ArgumentNullException(nameof(timelineName)); CheckTimelineName(timelineName, nameof(timelineName)); + if (timelineName == "self") + { + throw new ArgumentException("Timeline name can't be 'self'."); + } var conflict = await _database.Timelines.AnyAsync(t => t.OwnerId == ownerId && t.Name == timelineName); @@ -405,14 +418,25 @@ namespace Timeline.Services.Timeline _logger.LogWarning(Resource.LogTimelineDelete, id); } - public Task GetTimelineIdAsync(long ownerId, string timelineName) + public async Task GetTimelineIdAsync(long ownerId, string timelineName) { - throw new NotImplementedException(); + if (timelineName is null) + throw new ArgumentNullException(nameof(timelineName)); + CheckTimelineName(timelineName, nameof(timelineName)); + + string? tn = timelineName == "self" ? null : timelineName; + + var entity = await _database.Timelines.Where(t => t.OwnerId == ownerId && t.Name == tn).SingleOrDefaultAsync(); + if (entity is null) + throw CreateTimelineNotExistException(ownerId, timelineName); + + return entity.Id; } - public Task GetTimelineIdAsync(string ownerUsername, string timelineName) + public async Task GetTimelineIdAsync(string ownerUsername, string timelineName) { - throw new NotImplementedException(); + var ownerId = await _userService.GetUserIdByUsernameAsync(ownerUsername); + return await GetTimelineIdAsync(ownerId, timelineName); } } } -- cgit v1.2.3