29 lines
845 B
C#
29 lines
845 B
C#
using Microsoft.EntityFrameworkCore;
|
|
|
|
namespace DysonNetwork.Sphere.Discovery;
|
|
|
|
public class DiscoveryService(AppDatabase appDatabase)
|
|
{
|
|
public Task<List<Shared.Models.Realm>> GetPublicRealmsAsync(string? query,
|
|
int take = 10,
|
|
int offset = 0,
|
|
bool randomizer = false
|
|
)
|
|
{
|
|
var realmsQuery = appDatabase.Realms
|
|
.Take(take)
|
|
.Skip(offset)
|
|
.Where(r => r.IsCommunity);
|
|
|
|
if (!string.IsNullOrEmpty(query))
|
|
{
|
|
realmsQuery = realmsQuery.Where(r => r.Name.Contains(query) || r.Description.Contains(query));
|
|
}
|
|
|
|
realmsQuery = randomizer
|
|
? realmsQuery.OrderBy(r => EF.Functions.Random())
|
|
: realmsQuery.OrderByDescending(r => r.CreatedAt);
|
|
|
|
return realmsQuery.Skip(offset).Take(take).ToListAsync();
|
|
}
|
|
} |