aboutsummaryrefslogtreecommitdiff
path: root/BackEnd/Timeline/Services/Api/TimelineBookmarkService1.cs
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2022-04-10 22:37:58 +0800
committercrupest <crupest@outlook.com>2022-04-10 22:37:58 +0800
commit74bfab88dfdcdc08ee512253a803f2b3016e5f03 (patch)
tree79ef03b744245460983ed2cc3b0322ee16e50989 /BackEnd/Timeline/Services/Api/TimelineBookmarkService1.cs
parent9c874edbb35c87448ce91c142b127b450879e6b4 (diff)
downloadtimeline-74bfab88dfdcdc08ee512253a803f2b3016e5f03.tar.gz
timeline-74bfab88dfdcdc08ee512253a803f2b3016e5f03.tar.bz2
timeline-74bfab88dfdcdc08ee512253a803f2b3016e5f03.zip
...
Diffstat (limited to 'BackEnd/Timeline/Services/Api/TimelineBookmarkService1.cs')
-rw-r--r--BackEnd/Timeline/Services/Api/TimelineBookmarkService1.cs31
1 files changed, 30 insertions, 1 deletions
diff --git a/BackEnd/Timeline/Services/Api/TimelineBookmarkService1.cs b/BackEnd/Timeline/Services/Api/TimelineBookmarkService1.cs
index f047a12d..4b52d61c 100644
--- a/BackEnd/Timeline/Services/Api/TimelineBookmarkService1.cs
+++ b/BackEnd/Timeline/Services/Api/TimelineBookmarkService1.cs
@@ -29,6 +29,15 @@ namespace Timeline.Services.Api
var user = await _userService.GetUserAsync(userId);
var timeline = await _timelineService.GetTimelineAsync(timelineId);
+ if (await _databaseContext.BookmarkTimelines.AnyAsync(b => b.UserId == userId && b.TimelineId == timelineId))
+ {
+ throw new EntityAlreadyExistException(EntityTypes.BookmarkTimeline, new Dictionary<string, object>
+ {
+ {"user-id", userId },
+ {"timeline-id", timelineId }
+ });
+ }
+
var count = await _databaseContext.BookmarkTimelines.Where(b => b.UserId == userId).CountAsync();
if (position.HasValue)
@@ -92,7 +101,8 @@ namespace Timeline.Services.Api
public async Task<TimelineBookmark> GetBookmarkAsync(long userId, long timelineId)
{
var user = await _userService.GetUserAsync(userId);
- var timeline = await _timelineService.GetTimelineAsync(timelineId); var entity = await _databaseContext.BookmarkTimelines.Where(b => b.UserId == userId && b.TimelineId == timelineId).SingleOrDefaultAsync();
+ var timeline = await _timelineService.GetTimelineAsync(timelineId);
+ var entity = await _databaseContext.BookmarkTimelines.Where(b => b.UserId == userId && b.TimelineId == timelineId).SingleOrDefaultAsync();
if (entity is null)
{
@@ -106,6 +116,25 @@ namespace Timeline.Services.Api
return new TimelineBookmark(user.Username, timeline.Name is null ? "self" : timeline.Name, (int)entity.Rank);
}
+ public async Task<TimelineBookmark> GetBookmarkAtAsync(long userId, int position)
+ {
+ var user = await _userService.GetUserAsync(userId);
+ var entity = await _databaseContext.BookmarkTimelines.Where(b => b.UserId == userId && b.Rank == position).SingleOrDefaultAsync();
+
+ if (entity is null)
+ {
+ throw new EntityNotExistException(EntityTypes.BookmarkTimeline, new Dictionary<string, object>
+ {
+ { "user-id", userId },
+ { "position", position }
+ });
+ }
+
+ var timeline = await _timelineService.GetTimelineAsync(entity.TimelineId);
+
+ return new TimelineBookmark(user.Username, timeline.Name is null ? "self" : timeline.Name, (int)entity.Rank);
+ }
+
public async Task<Page<TimelineBookmark>> GetBookmarksAsync(long userId, int page, int pageSize)
{
if (page <= 0) throw new ArgumentOutOfRangeException(nameof(page));