Files
edr-platform/apps/edr-passenger-api/src/modules/wallet/wallet.controller.ts
2026-07-14 10:46:27 +03:00

47 lines
1.3 KiB
TypeScript

import {
Body,
Controller,
Get,
Param,
Post,
Delete,
UseGuards,
SetMetadata,
Query,
} from "@nestjs/common";
import { ApiTags, ApiOperation, ApiBearerAuth } from "@nestjs/swagger";
import { WalletService } from "./wallet.service";
import { JwtGuard } from "../../common/jwt.guard";
@ApiTags("Wallet")
@Controller("wallet")
@UseGuards(JwtGuard)
@ApiBearerAuth("JWT-auth")
// @Throttle({ strict: { limit: 20, ttl: 60_000 } })
export class WalletController {
constructor(private service: WalletService) {}
@Get("accounts")
@SetMetadata("isPublic", true)
@ApiOperation({ summary: "List all wallet accounts" })
getAccounts(@Query() q: any) {
return this.service.getAccounts(q);
}
@Get(":passengerId")
@ApiOperation({ summary: "Get wallet balance and ledger" })
getWallet(@Param("passengerId") id: string) {
return this.service.getWallet(id);
}
@Post(":passengerId/topup") @ApiOperation({ summary: "Top up wallet" }) topUp(
@Param("passengerId") id: string,
@Body("amountMinor") amount: number,
) {
return this.service.topUp(id, amount);
}
@Delete("accounts/:id")
@SetMetadata("isPublic", true)
@ApiOperation({ summary: "Delete wallet account" })
deleteAccount(@Param("id") id: string) {
return this.service.deleteAccount(id);
}
}