gamer147
09104f4e73
fix(guild): /guild/update response — flat detail under guild (matches GuildUpdateTask.Parse)
...
GuildUpdateTask.Parse() reads data[guild] as GuildDetailInfo directly; the previous
GuildDetailSubTree wrapper (data[guild][detail]) caused json[guild_id].ToInt() to
crash on the client. Split GuildUpdateResponse (flat) from GuildUpdateEmblemResponse
(nested, correct for GuildEmblemUpdateTask.Parse). Also surfaces guild_name from the
request through UpdateGuildRequest.Name -> service -> repo so the client rename is honoured.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-27 12:54:15 -04:00
gamer147
c0e1c10192
feat(guild): update + update_description + update_emblem
2026-06-27 12:47:00 -04:00
gamer147
cb5fc8d2d6
feat(guild): breakup + emblem_list + others_info
...
Implements GuildService.BreakupAsync (soft-delete guild, hard-delete
dependents, clear viewer GuildId pointers). Wires /guild/breakup,
/guild/emblem_list, /guild/others_info in GuildController. Fixes
ToDetailDto to accept and populate leader_name from the member list.
Adds GuildServiceBreakupTests (3 tests: cascade delete, permission
guard, leader_name HTTP regression).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-27 12:32:04 -04:00
gamer147
f7f68d03a7
feat(guild): /guild/create + populated /guild/info
...
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-06-27 12:17:22 -04:00
gamer147
99019963ca
feat(guild): controller scaffolding + /guild/info baseline
...
- 5 common DTOs under Models/Dtos/Common/Guild/ (GuildDetailDto,
GuildUserBaseDto, GuildMemberInfoDto, ChatUserDto, ChatMessageDto)
- 28 per-endpoint request/response DTOs under Models/Dtos/Guild/ and
Models/Dtos/GuildChat/ with full [MessagePackObject]/[Key]/
[JsonPropertyName] attribute mirrors on every property
- GuildController (22 actions): /guild/info returns prod-shape with
config-backed max_member_num/max_sub_leader_num/usable_stamp_list;
21 stubs return empty/default DTOs
- GuildChatController (7 stubs), /guild_chat/messages stub returns
wait_interval=10 per config
- 29 new routing smoke test cases (100 total, all pass)
- GuildWireShape literal-JSON test for GuildInfoResponse (1/1 pass)
- GameConfigurationJsonbTests updated for 17th GuildConfig section
- Total: 1422 tests pass, 0 errors
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-27 12:01:27 -04:00