feat(guild): /guild/search_guild
Implement SearchAsync in GuildService (wraps IGuildRepository.SearchAsync + CountBatchByGuildIdsAsync), wire the controller action, add 7 integration tests (GuildSearchFlowTests) covering no-filter / activity / join_condition / bucket-1 / bucket-3 / name-prefix / flat-entry shape, and a wire-shape test in GuildWireShape confirming list entries are flat (no detail wrapper). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -131,8 +131,12 @@ public sealed class GuildController : SVSimController
|
||||
}
|
||||
|
||||
[HttpPost("search_guild")]
|
||||
public Task<ActionResult<GuildSearchGuildResponse>> SearchGuild([FromBody] GuildSearchGuildRequest req, CancellationToken ct)
|
||||
=> Task.FromResult<ActionResult<GuildSearchGuildResponse>>(new GuildSearchGuildResponse { List = new() });
|
||||
public async Task<ActionResult<GuildSearchGuildResponse>> SearchGuild([FromBody] GuildSearchGuildRequest req, CancellationToken ct)
|
||||
{
|
||||
if (!TryGetViewerId(out var v)) return Unauthorized();
|
||||
var entries = await _guild.SearchAsync(req.GuildName ?? "", req.Activity, req.JoinCondition, req.MemberConditionRange, ct);
|
||||
return new GuildSearchGuildResponse { List = entries.Select(e => ToDetailDto(e.Guild, e.MemberNum)).ToList() };
|
||||
}
|
||||
|
||||
[HttpPost("emblem_list")]
|
||||
public async Task<ActionResult<GuildEmblemListResponse>> EmblemList([FromBody] BaseRequest _, CancellationToken ct)
|
||||
|
||||
Reference in New Issue
Block a user