forked from swapnil.bendal/TypeScript-Backend-Template
feat: add player deletion and update functionality, enhance player controller
This commit is contained in:
@@ -18,11 +18,29 @@ export class PlayerController {
|
||||
@AsyncHandler()
|
||||
async onCreatePlayer(req: Request, res: Response) {
|
||||
const data :Player = req.body;
|
||||
console.log(data);
|
||||
console.log(req.body);
|
||||
const newPlayer= await this.interactor.createPlayer(data);
|
||||
res.status(201).json(new ApiResponse(201, newPlayer, 'Successfully created'));
|
||||
}
|
||||
@AsyncHandler()
|
||||
async onDeletePlayer(req: Request, res: Response) {
|
||||
const id: number = parseInt(req.params.id, 10);
|
||||
console.log(req.params.id);
|
||||
await this.interactor.deletePlayer(id);
|
||||
res.status(200).json(new ApiResponse(200, null, 'Successfully deleted'));
|
||||
}
|
||||
|
||||
@AsyncHandler()
|
||||
async onUpdatePlayer(req: Request, res: Response) {
|
||||
const id: number = parseInt(req.params.id, 10);
|
||||
const data: Partial<Player> = req.body;
|
||||
console.log(data);
|
||||
const updatedPlayer = await this.interactor.updatePlayer(id, data);
|
||||
res.status(200).json(new ApiResponse(200, updatedPlayer, 'Successfully updated'));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -12,5 +12,4 @@ export class Player {
|
||||
@Column()
|
||||
name!: string;
|
||||
|
||||
|
||||
}
|
||||
@@ -27,9 +27,17 @@ export class PlayerInteractor implements IPlayerInteractor {
|
||||
|
||||
async createPlayer(data : Player): Promise<Player> {
|
||||
const players = await this.repository.create(data);
|
||||
return players[0]; // Assuming the first player is the one you need
|
||||
// Do something notify promotion message
|
||||
|
||||
return players[0];
|
||||
|
||||
}
|
||||
|
||||
async deletePlayer(id: number): Promise<void> {
|
||||
await this.repository.delete(id);
|
||||
|
||||
|
||||
}
|
||||
async updatePlayer(id: number, data: Partial<Player>): Promise<Player> {
|
||||
const player = await this.repository.update(id, data);
|
||||
return player;
|
||||
}
|
||||
}
|
||||
@@ -1,3 +1,15 @@
|
||||
export interface IMessageBroker {
|
||||
NotifyToPromotionService(product: unknown): Promise<boolean>;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -2,5 +2,7 @@ import { Player } from "../entities/principletype";
|
||||
|
||||
export interface IPlayerInteractor {
|
||||
createPlayer(input: Partial<Player>): Promise<Player>;
|
||||
deletePlayer(id: number): Promise<void>;
|
||||
updatePlayer(id: number, input: Partial<Player>): Promise<Player>;
|
||||
|
||||
}
|
||||
@@ -2,6 +2,8 @@ import { Player } from "../entities/principletype";
|
||||
|
||||
export interface IPlayerRepository {
|
||||
create(data: Player): Promise<Player[]>;
|
||||
delete(id: number): Promise<void>;
|
||||
update(id: number, data: Partial<Player>): Promise<Player>;
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -19,7 +19,20 @@ export class PlayerRepository implements IPlayerRepository {
|
||||
const savedPlayer = await this.playerRepository.save(player);
|
||||
return [savedPlayer];
|
||||
}
|
||||
// Delete a player
|
||||
async delete(id: number): Promise<void> {
|
||||
await this.playerRepository.delete(id);
|
||||
}
|
||||
|
||||
// Update a product
|
||||
async update(id: number, data: Partial<Player>): Promise<Player> {
|
||||
await this.playerRepository.update(id, data);
|
||||
const player = await this.playerRepository.findOne({ where: { id } });
|
||||
if (!player) {
|
||||
throw new Error("Player not found");
|
||||
}
|
||||
return player;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -67,7 +67,7 @@ class Routes {
|
||||
console.error(`Failed to load route at path: ${path}`, error);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Return the router instance
|
||||
public getRouter(): Router {
|
||||
return this.router;
|
||||
|
||||
@@ -37,5 +37,9 @@ const playerController = container.get<PlayerController>(INTERFACE_TYPE.PlayerCo
|
||||
|
||||
router.post('/create', playerController.onCreatePlayer.bind(playerController));
|
||||
|
||||
router.delete('/delete/:id', playerController.onDeletePlayer.bind(playerController));
|
||||
|
||||
router.put('/update/:id', playerController.onUpdatePlayer.bind(playerController));
|
||||
|
||||
|
||||
export default router;
|
||||
@@ -9,4 +9,16 @@ export const INTERFACE_TYPE = {
|
||||
MessageBroker: Symbol.for("MessageBroker"),
|
||||
PlayerRepository: Symbol.for("PlayerRepository"),
|
||||
PlayerInteractor: Symbol.for("PlayerInteractor"),
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user