Realm tags and discovery

This commit is contained in:
2025-06-26 19:00:55 +08:00
parent f170793928
commit d492c9ce1f
12 changed files with 4220 additions and 2 deletions

View File

@ -0,0 +1,29 @@
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using DysonNetwork.Sphere;
using DysonNetwork.Sphere.Realm;
using Microsoft.EntityFrameworkCore;
namespace DysonNetwork.Sphere.Discovery;
public class DiscoveryService(AppDatabase appDatabase)
{
public Task<List<Realm.Realm>> GetPublicRealmsAsync(string? query, List<string>? tags)
{
var realmsQuery = appDatabase.Realms
.Where(r => r.IsPublic);
if (!string.IsNullOrEmpty(query))
{
realmsQuery = realmsQuery.Where(r => r.Name.Contains(query) || r.Description.Contains(query));
}
if (tags != null && tags.Count > 0)
{
realmsQuery = realmsQuery.Where(r => r.RealmTags.Any(rt => tags.Contains(rt.Tag.Name)));
}
return realmsQuery.ToListAsync();
}
}