Implement gRPC on client and server
Pending Testing
This commit is contained in:
@@ -18,6 +18,18 @@ public class AobaService(IMongoDatabase db)
|
||||
return await _media.Find(m => m.Id == id).FirstOrDefaultAsync(cancellationToken);
|
||||
}
|
||||
|
||||
public async Task<PagedResult<Media>> FindMediaAsync(string? query, int page = 1, int pageSize = 50)
|
||||
{
|
||||
var filter = string.IsNullOrWhiteSpace(query) ? "{}" : Builders<Media>.Filter.Text(query);
|
||||
var find = _media.Find(filter);
|
||||
|
||||
var total = await find.CountDocumentsAsync();
|
||||
page -= 1;
|
||||
var items = await find.Skip(page * pageSize).Limit(pageSize).ToListAsync();
|
||||
return new PagedResult<Media>(items, page, pageSize, total);
|
||||
}
|
||||
|
||||
|
||||
public Task AddMediaAsync(Media media, CancellationToken cancellationToken = default)
|
||||
{
|
||||
return _media.InsertOneAsync(media, null, cancellationToken);
|
||||
|
||||
18
AobaCore/Models/PagedResult.cs
Normal file
18
AobaCore/Models/PagedResult.cs
Normal file
@@ -0,0 +1,18 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AobaCore.Models;
|
||||
public class PagedResult<T>(List<T> items, int page, int pageSize, long totalItems)
|
||||
{
|
||||
public List<T> Items { get; set; } = items;
|
||||
public int Page { get; set; } = page;
|
||||
public int PageSize { get; set; } = pageSize;
|
||||
public long TotalItems { get; set; } = totalItems;
|
||||
public long TotalPages { get; set; } = totalItems / pageSize;
|
||||
public string? Query { get; set; }
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user