Files
Swarm/DysonNetwork.Sphere/Discovery/DiscoveryService.cs
2025-09-27 14:09:28 +08:00

30 lines
944 B
C#

using Microsoft.EntityFrameworkCore;
namespace DysonNetwork.Sphere.Discovery;
public class DiscoveryService(AppDatabase appDatabase)
{
public Task<List<Shared.Models.SnRealm>> GetCommunityRealmAsync(
string? query,
int take = 10,
int offset = 0,
bool randomizer = false
)
{
var realmsQuery = appDatabase.Realms
.Where(r => r.IsCommunity)
.OrderByDescending(r => r.CreatedAt)
.AsQueryable();
if (!string.IsNullOrEmpty(query))
realmsQuery = realmsQuery.Where(r =>
EF.Functions.ILike(r.Name, $"%{query}%") ||
EF.Functions.ILike(r.Description, $"%{query}%")
);
realmsQuery = randomizer
? realmsQuery.OrderBy(r => EF.Functions.Random())
: realmsQuery.OrderByDescending(r => r.CreatedAt);
return realmsQuery.Skip(offset).Take(take).ToListAsync();
}
}