55 lines
2.8 KiB
C#
55 lines
2.8 KiB
C#
using RpgRoller.Contracts;
|
|
using RpgRoller.Services;
|
|
|
|
namespace RpgRoller.Api;
|
|
|
|
internal static class SkillEndpoints
|
|
{
|
|
public static RouteGroupBuilder MapSkillEndpoints(this RouteGroupBuilder group)
|
|
{
|
|
group.MapPost("/characters/{characterId:guid}/skills", (Guid characterId, CreateSkillRequest request, HttpContext context, IGameService game) =>
|
|
{
|
|
var result = game.CreateSkill(context.GetRequiredSessionToken(), characterId, request.Name, request.DiceRollDefinition, request.WildDice, request.AllowFumble, request.SkillGroupId, request.FumbleRange);
|
|
return ApiResultMapper.ToApiResult(result);
|
|
});
|
|
|
|
group.MapPut("/skills/{skillId:guid}", (Guid skillId, UpdateSkillRequest request, HttpContext context, IGameService game) =>
|
|
{
|
|
var result = game.UpdateSkill(context.GetRequiredSessionToken(), skillId, request.Name, request.DiceRollDefinition, request.WildDice, request.AllowFumble, request.SkillGroupId, request.FumbleRange);
|
|
return ApiResultMapper.ToApiResult(result);
|
|
});
|
|
|
|
group.MapDelete("/skills/{skillId:guid}", (Guid skillId, HttpContext context, IGameService game) =>
|
|
{
|
|
var result = game.DeleteSkill(context.GetRequiredSessionToken(), skillId);
|
|
return ApiResultMapper.ToApiResult(result);
|
|
});
|
|
|
|
group.MapPost("/characters/{characterId:guid}/skill-groups", (Guid characterId, CreateSkillGroupRequest request, HttpContext context, IGameService game) =>
|
|
{
|
|
var result = game.CreateSkillGroup(context.GetRequiredSessionToken(), characterId, request.Name, request.DiceRollDefinition, request.WildDice, request.AllowFumble, request.FumbleRange);
|
|
return ApiResultMapper.ToApiResult(result);
|
|
});
|
|
|
|
group.MapPut("/skill-groups/{skillGroupId:guid}", (Guid skillGroupId, UpdateSkillGroupRequest request, HttpContext context, IGameService game) =>
|
|
{
|
|
var result = game.UpdateSkillGroup(context.GetRequiredSessionToken(), skillGroupId, request.Name, request.DiceRollDefinition, request.WildDice, request.AllowFumble, request.FumbleRange);
|
|
return ApiResultMapper.ToApiResult(result);
|
|
});
|
|
|
|
group.MapDelete("/skill-groups/{skillGroupId:guid}", (Guid skillGroupId, HttpContext context, IGameService game) =>
|
|
{
|
|
var result = game.DeleteSkillGroup(context.GetRequiredSessionToken(), skillGroupId);
|
|
return ApiResultMapper.ToApiResult(result);
|
|
});
|
|
|
|
group.MapPost("/skills/{skillId:guid}/roll", (Guid skillId, RollSkillRequest request, HttpContext context, IGameService game) =>
|
|
{
|
|
var result = game.RollSkill(context.GetRequiredSessionToken(), skillId, request.Visibility);
|
|
return ApiResultMapper.ToApiResult(result);
|
|
});
|
|
|
|
return group;
|
|
}
|
|
}
|