Skip to content

Commit

Permalink
Delete unused endpoints and add new game-related endpoints
Browse files Browse the repository at this point in the history
  • Loading branch information
ricksu978 committed Jan 21, 2024
1 parent 72f8099 commit f8d6cf4
Show file tree
Hide file tree
Showing 40 changed files with 735 additions and 183 deletions.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
using Wsa.Gaas.Werewolf.Application.Dtos;
using Wsa.Gaas.Werewolf.Domain.Objects;

namespace Wsa.Gaas.Werewolf.Application.UseCases;
public class CreateGameRequest
namespace Wsa.Gaas.Werewolf.Application.UseCases.Games;
public class GameCreateRequest
{
public ulong DiscordVoiceChannelId { get; set; }
}

public class CreateGameResponse
public class GameCreateResponse
{
public CreateGameResponse(GameEvent gameEvent)
public GameCreateResponse(GameEvent gameEvent)
{
Id = gameEvent.Data.DiscordVoiceChannelId;
Players = gameEvent.Data.Players.Select(p => new PlayerDto
Expand All @@ -26,15 +26,15 @@ public CreateGameResponse(GameEvent gameEvent)
public GameStatus Status { get; set; }
}

public class CreateGameUseCase : UseCase<CreateGameRequest, CreateGameResponse>
public class GameCreateUseCase : UseCase<GameCreateRequest, GameCreateResponse>
{
private readonly static object _lock = new();

public CreateGameUseCase(IRepository repository, GameEventBus eventPublisher) : base(repository, eventPublisher)
public GameCreateUseCase(IRepository repository, GameEventBus eventPublisher) : base(repository, eventPublisher)
{
}

public override async Task<CreateGameResponse> ExecuteAsync(CreateGameRequest request, CancellationToken cancellationToken = default)
public override async Task<GameCreateResponse> ExecuteAsync(GameCreateRequest request, CancellationToken cancellationToken = default)
{
Game? game;

Expand Down Expand Up @@ -62,6 +62,6 @@ public override async Task<CreateGameResponse> ExecuteAsync(CreateGameRequest re
await GameEventBus.BroadcastAsync(new[] { gameEvent }, cancellationToken);

// Restful API
return new CreateGameResponse(gameEvent);
return new GameCreateResponse(gameEvent);
}
}
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
using Wsa.Gaas.Werewolf.Domain.Objects;

namespace Wsa.Gaas.Werewolf.Application.UseCases;
public class EndGameRequest
namespace Wsa.Gaas.Werewolf.Application.UseCases.Games;
public class GameEndRequest
{
public ulong DiscordVoiceChannelId { get; set; }
}

public record EndGameResponse();
public record GameEndResponse();

public class EndGameUseCase : UseCase<EndGameRequest, EndGameResponse>
public class GameEndUseCase : UseCase<GameEndRequest, GameEndResponse>
{
private readonly static object _lock = new();

public EndGameUseCase(IRepository repository, GameEventBus gameEventBus) : base(repository, gameEventBus)
public GameEndUseCase(IRepository repository, GameEventBus gameEventBus) : base(repository, gameEventBus)
{
}

public override Task<EndGameResponse> ExecuteAsync(EndGameRequest request, CancellationToken cancellationToken = default)
public override Task<GameEndResponse> ExecuteAsync(GameEndRequest request, CancellationToken cancellationToken = default)
{
Game? game;
lock (_lock)
Expand All @@ -40,6 +40,6 @@ public override Task<EndGameResponse> ExecuteAsync(EndGameRequest request, Cance
// SignalR 中斷連線

// Restful API
return Task.FromResult(new EndGameResponse());
return Task.FromResult(new GameEndResponse());
}
}
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
using Wsa.Gaas.Werewolf.Application.Dtos;
using Wsa.Gaas.Werewolf.Domain.Objects;

namespace Wsa.Gaas.Werewolf.Application.UseCases;
public class StartGameRequest
namespace Wsa.Gaas.Werewolf.Application.UseCases.Games;
public class GameStartRequest
{
public ulong DiscordVoiceChannelId { get; set; }

public ulong[] Players { get; set; } = Array.Empty<ulong>();
}

public class StartGameResponse
public class GameStartResponse
{
public StartGameResponse() { }
public StartGameResponse(GameEvent gameEvent)
public GameStartResponse() { }
public GameStartResponse(GameEvent gameEvent)
{
Id = gameEvent.Data.DiscordVoiceChannelId;
Players = gameEvent.Data.Players.Select(p => new PlayerDto
Expand All @@ -29,15 +29,15 @@ public StartGameResponse(GameEvent gameEvent)
public GameStatus Status { get; set; }
}

public class StartGameUseCase : UseCase<StartGameRequest, StartGameResponse>
public class GameStartUseCase : UseCase<GameStartRequest, GameStartResponse>
{
private readonly static object _lock = new();

public StartGameUseCase(IRepository repository, GameEventBus eventPublisher) : base(repository, eventPublisher)
public GameStartUseCase(IRepository repository, GameEventBus eventPublisher) : base(repository, eventPublisher)
{
}

public override async Task<StartGameResponse> ExecuteAsync(StartGameRequest request, CancellationToken cancellationToken = default)
public override async Task<GameStartResponse> ExecuteAsync(GameStartRequest request, CancellationToken cancellationToken = default)
{
Game? game;
IEnumerable<GameEvent> events;
Expand All @@ -63,6 +63,6 @@ public override async Task<StartGameResponse> ExecuteAsync(StartGameRequest requ
await GameEventBus.BroadcastAsync(events, cancellationToken);

// Restful API
return new StartGameResponse(events.First());
return new GameStartResponse(events.First());
}
}
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
using Wsa.Gaas.Werewolf.Application.Dtos;
using Wsa.Gaas.Werewolf.Domain.Objects;

namespace Wsa.Gaas.Werewolf.Application.UseCases;
public class GetGameRequest
namespace Wsa.Gaas.Werewolf.Application.UseCases.Games;
public class GameGetRequest
{
public ulong DiscordVoiceChannelId { get; set; }
}

public class GetGameResponse
public class GameGetResponse
{
public GetGameResponse()
public GameGetResponse()
{

}

public GetGameResponse(GameEvent gameEvent)
public GameGetResponse(GameEvent gameEvent)
{
Id = gameEvent.Data.DiscordVoiceChannelId;
Players = gameEvent.Data.Players.Select(p => new PlayerDto
Expand All @@ -31,13 +31,13 @@ public GetGameResponse(GameEvent gameEvent)
public GameStatus Status { get; set; }
}

public class GetGamesUseCase : UseCase<GetGameRequest, GetGameResponse>
public class GamesGetUseCase : UseCase<GameGetRequest, GameGetResponse>
{
public GetGamesUseCase(IRepository repository, GameEventBus gameEventBus) : base(repository, gameEventBus)
public GamesGetUseCase(IRepository repository, GameEventBus gameEventBus) : base(repository, gameEventBus)
{
}

public override async Task<GetGameResponse> ExecuteAsync(GetGameRequest request, CancellationToken cancellationToken = default)
public override async Task<GameGetResponse> ExecuteAsync(GameGetRequest request, CancellationToken cancellationToken = default)
{
// 查
var game = await Repository.FindByDiscordChannelIdAsync(request.DiscordVoiceChannelId);
Expand All @@ -53,6 +53,6 @@ public override async Task<GetGameResponse> ExecuteAsync(GetGameRequest request,
// 推
var gameEvent = new GetGameEvent(game);

return new GetGameResponse(gameEvent);
return new GameGetResponse(gameEvent);
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace Wsa.Gaas.Werewolf.Application.UseCases;
namespace Wsa.Gaas.Werewolf.Application.UseCases.Players;
public class DiscoverPlayerRoleRequest
{
public ulong DiscordVoiceChannelId { get; set; }
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
namespace Wsa.Gaas.Werewolf.Application.UseCases.Players;
public class PlayerGetRoleRequest
{
public ulong DiscordVoiceChannelId { get; set; }
public ulong PlayerId { get; set; }
}

public record PlayerGetRoleResponse(string GameId, string PlayerId, string Role);

public class PlayerGetRoleUseCase : UseCase<PlayerGetRoleRequest, PlayerGetRoleResponse>
{
public PlayerGetRoleUseCase(IRepository repository, GameEventBus gameEventBus) : base(repository, gameEventBus)
{
}

public async override Task<PlayerGetRoleResponse> ExecuteAsync(PlayerGetRoleRequest request, CancellationToken cancellationToken = default)
{
// Query
var game = await Repository.FindByDiscordChannelIdAsync(request.DiscordVoiceChannelId)
?? throw new GameNotFoundException(request.DiscordVoiceChannelId);

// Update (Query)
var gameEvent = game.PlayerGetRole(request.PlayerId);

// Push
return new PlayerGetRoleResponse(
gameEvent.Data.DiscordVoiceChannelId.ToString(),
gameEvent.PlayerId.ToString(),
gameEvent.Role
);
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace Wsa.Gaas.Werewolf.Application.UseCases;
namespace Wsa.Gaas.Werewolf.Application.UseCases.Players;
public class PlayerTriggerSkillRequest
{
public ulong DiscordVoiceChannelId { get; set; }
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace Wsa.Gaas.Werewolf.Application.UseCases;
namespace Wsa.Gaas.Werewolf.Application.UseCases.Players;
public class WerewolfVoteRequest
{
public ulong DiscordChannelId { get; set; }
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace Wsa.Gaas.Werewolf.Application.UseCases;
namespace Wsa.Gaas.Werewolf.Application.UseCases.Players;
public class WitchUseAntidoteRequest
{
public ulong DiscordVoiceChannelId { get; set; }
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace Wsa.Gaas.Werewolf.Application.UseCases;
namespace Wsa.Gaas.Werewolf.Application.UseCases.Players;
public class WitchUsePoisonRequest
{
public ulong DiscordVoiceChannelId { get; set; }
Expand Down
2 changes: 1 addition & 1 deletion src/BackEnd/src/Core/Domain/Objects/Game.cs
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ public virtual IEnumerable<GameEvent> StartGame(ulong[] playerIds)
};
}

public PlayerRoleConfirmedEvent ConfirmPlayerRole(ulong playerId)
public PlayerRoleConfirmedEvent PlayerGetRole(ulong playerId)
{
var player = Players.FirstOrDefault(x => x.UserId == playerId)
?? throw new PlayerNotFoundException(DiscordVoiceChannelId, playerId);
Expand Down

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
using Wsa.Gaas.Werewolf.Application.UseCases.Games;

namespace Wsa.Gaas.Werewolf.WebApi.Endpoints.Games;
public class GameCreateEndpoint : WebApiEndpoint<GameCreateRequest, GameCreateResponse>
{
public override void Configure()
{
Post("/games");
AllowAnonymous();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
using Wsa.Gaas.Werewolf.Application.UseCases.Games;

namespace Wsa.Gaas.Werewolf.WebApi.Endpoints.Games;
public class GameEndEndpoint : WebApiEndpoint<GameEndRequest, GameEndResponse>
{
public override void Configure()
{
Post("/games/{DiscordVoiceChannelId}/end");
AllowAnonymous();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
using Wsa.Gaas.Werewolf.Application.UseCases.Games;

namespace Wsa.Gaas.Werewolf.WebApi.Endpoints.Games;

public class GameGetEndpoint : WebApiEndpoint<GameGetRequest, GameGetResponse>
{
public override void Configure()
{
Get("/games/{DiscordVoiceChannelId}");
AllowAnonymous();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
using Wsa.Gaas.Werewolf.Application.UseCases.Games;

namespace Wsa.Gaas.Werewolf.WebApi.Endpoints.Games;
public class GameStartEndpoint : WebApiEndpoint<GameStartRequest, GameStartResponse>
{
public override void Configure()
{
Post("/games/{DiscordVoiceChannelId}/start");
AllowAnonymous();
}
}
10 changes: 0 additions & 10 deletions src/BackEnd/src/Presentation/WebApi/Endpoints/GetGameEndpoint.cs

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
namespace Wsa.Gaas.Werewolf.WebApi.Endpoints;
using Wsa.Gaas.Werewolf.Application.UseCases.Players;

namespace Wsa.Gaas.Werewolf.WebApi.Endpoints.Players;
public class DiscoverPlayerRoleEndpoint : WebApiEndpoint<DiscoverPlayerRoleRequest, DiscoverPlayerRoleResponse>
{
public override void Configure()
Expand Down
Loading

0 comments on commit f8d6cf4

Please sign in to comment.