mirror of
https://github.com/bitwarden/server.git
synced 2025-07-16 15:17:33 -05:00
[PM-10563] Notification Center API (#4852)
* PM-10563: Notification Center API * PM-10563: continuation token hack * PM-10563: Resolving merge conflicts * PM-10563: Unit Tests * PM-10563: Paging simplification by page number and size in database * PM-10563: Request validation * PM-10563: Read, Deleted status filters change * PM-10563: Plural name for tests * PM-10563: Request validation to always for int type * PM-10563: Continuation Token returns null on response when no more records available * PM-10563: Integration tests for GET * PM-10563: Mark notification read, deleted commands date typos fix * PM-10563: Integration tests for PATCH read, deleted * PM-10563: Request, Response models tests * PM-10563: EditorConfig compliance * PM-10563: Extracting to const * PM-10563: Update db migration script date * PM-10563: Update migration script date
This commit is contained in:
@ -1,6 +1,7 @@
|
||||
#nullable enable
|
||||
using System.Data;
|
||||
using Bit.Core.Enums;
|
||||
using Bit.Core.Models.Data;
|
||||
using Bit.Core.NotificationCenter.Entities;
|
||||
using Bit.Core.NotificationCenter.Models.Data;
|
||||
using Bit.Core.NotificationCenter.Models.Filter;
|
||||
@ -24,16 +25,35 @@ public class NotificationRepository : Repository<Notification, Guid>, INotificat
|
||||
{
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<NotificationStatusDetails>> GetByUserIdAndStatusAsync(Guid userId,
|
||||
ClientType clientType, NotificationStatusFilter? statusFilter)
|
||||
public async Task<PagedResult<NotificationStatusDetails>> GetByUserIdAndStatusAsync(Guid userId,
|
||||
ClientType clientType, NotificationStatusFilter? statusFilter, PageOptions pageOptions)
|
||||
{
|
||||
await using var connection = new SqlConnection(ConnectionString);
|
||||
|
||||
if (!int.TryParse(pageOptions.ContinuationToken, out var pageNumber))
|
||||
{
|
||||
pageNumber = 1;
|
||||
}
|
||||
|
||||
var results = await connection.QueryAsync<NotificationStatusDetails>(
|
||||
"[dbo].[Notification_ReadByUserIdAndStatus]",
|
||||
new { UserId = userId, ClientType = clientType, statusFilter?.Read, statusFilter?.Deleted },
|
||||
new
|
||||
{
|
||||
UserId = userId,
|
||||
ClientType = clientType,
|
||||
statusFilter?.Read,
|
||||
statusFilter?.Deleted,
|
||||
PageNumber = pageNumber,
|
||||
pageOptions.PageSize
|
||||
},
|
||||
commandType: CommandType.StoredProcedure);
|
||||
|
||||
return results.ToList();
|
||||
var data = results.ToList();
|
||||
|
||||
return new PagedResult<NotificationStatusDetails>
|
||||
{
|
||||
Data = data,
|
||||
ContinuationToken = data.Count < pageOptions.PageSize ? null : (pageNumber + 1).ToString()
|
||||
};
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user