Skip to content

Commit 2a033c5

Browse files
committed
refactor: upbit controller swagger 설명 추가
1 parent 958f005 commit 2a033c5

31 files changed

+1248
-938
lines changed

packages/server/.eslintrc.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ module.exports = {
2525
'error',
2626
{
2727
endOfLine: 'auto',
28-
useTabs: 'false',
28+
useTabs: false,
2929
},
3030
],
3131
'no-console': ['warn', { allow: ['warn', 'error'] }],

packages/server/src/account/account.controller.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,10 @@ export class AccountController {
2626

2727
constructor(private readonly accountService: AccountService) {}
2828

29-
@ApiOperation({ summary: '내 계정 정보 조회', description: '현재 로그인한 사용자의 계정 정보를 조회합니다.' })
29+
@ApiOperation({
30+
summary: '내 계정 정보 조회',
31+
description: '현재 로그인한 사용자의 계정 정보를 조회합니다.',
32+
})
3033
@ApiResponse({
3134
status: HttpStatus.OK,
3235
description: '계정 정보 조회 성공',
@@ -56,4 +59,4 @@ export class AccountController {
5659
throw error;
5760
}
5861
}
59-
}
62+
}

packages/server/src/account/account.repository.ts

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
import { DataSource, Repository, QueryRunner } from 'typeorm';
2-
import { Injectable, UnprocessableEntityException, Logger } from '@nestjs/common';
2+
import {
3+
Injectable,
4+
UnprocessableEntityException,
5+
Logger,
6+
} from '@nestjs/common';
37
import { Account } from './account.entity';
48
import { User } from '@src/auth/user.entity';
59
import { CURRENCY_CONSTANTS } from './constants/currency.constants';
@@ -21,7 +25,7 @@ export class AccountRepository extends Repository<Account> {
2125
account.USDT = CURRENCY_CONSTANTS.ADMIN_INITIAL_USDT;
2226
account.BTC = CURRENCY_CONSTANTS.ADMIN_INITIAL_BTC;
2327
account.user = adminUser;
24-
28+
2529
await this.save(account);
2630
this.logger.log(`관리자 계정 생성 완료: ${adminUser.id}`);
2731
} catch (error) {
@@ -49,26 +53,31 @@ export class AccountRepository extends Repository<Account> {
4953
accountId: number,
5054
queryRunner: QueryRunner,
5155
): Promise<void> {
52-
this.logger.log(`계정 통화 업데이트 시작: accountId=${accountId}, type=${typeGiven}`);
56+
this.logger.log(
57+
`계정 통화 업데이트 시작: accountId=${accountId}, type=${typeGiven}`,
58+
);
5359
try {
5460
await queryRunner.manager
5561
.createQueryBuilder()
5662
.update(Account)
5763
.set({ [typeGiven]: accountBalance })
5864
.where('id = :id', { id: accountId })
5965
.execute();
60-
66+
6167
this.logger.log(`계정 통화 업데이트 완료: accountId=${accountId}`);
6268
} catch (error) {
63-
this.logger.error(`계정 통화 업데이트 실패: ${error.message}`, error.stack);
69+
this.logger.error(
70+
`계정 통화 업데이트 실패: ${error.message}`,
71+
error.stack,
72+
);
6473
throw error;
6574
}
6675
}
6776

6877
async updateAccountBTC(
6978
id: number,
7079
quantity: number,
71-
queryRunner: QueryRunner
80+
queryRunner: QueryRunner,
7281
): Promise<void> {
7382
this.logger.log(`BTC 잔액 업데이트 시작: accountId=${id}`);
7483
try {
@@ -78,10 +87,13 @@ export class AccountRepository extends Repository<Account> {
7887
.set({ BTC: quantity })
7988
.where('id = :id', { id })
8089
.execute();
81-
90+
8291
this.logger.log(`BTC 잔액 업데이트 완료: accountId=${id}`);
8392
} catch (error) {
84-
this.logger.error(`BTC 잔액 업데이트 실패: ${error.message}`, error.stack);
93+
this.logger.error(
94+
`BTC 잔액 업데이트 실패: ${error.message}`,
95+
error.stack,
96+
);
8597
throw error;
8698
}
8799
}
@@ -106,12 +118,12 @@ export class AccountRepository extends Repository<Account> {
106118
const account = await queryRunner.manager.findOne(Account, {
107119
where: { user: { id } },
108120
});
109-
121+
110122
this.logger.log(`계정 조회 완료: userId=${id}`);
111123
return account;
112124
} catch (error) {
113125
this.logger.error(`계정 조회 실패: ${error.message}`, error.stack);
114126
throw error;
115127
}
116128
}
117-
}
129+
}

packages/server/src/account/account.service.ts

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
1-
import { HttpStatus, Injectable, Logger, UnauthorizedException } from '@nestjs/common';
1+
import {
2+
HttpStatus,
3+
Injectable,
4+
Logger,
5+
UnauthorizedException,
6+
} from '@nestjs/common';
27
import { AssetRepository } from '@src/asset/asset.repository';
38
import { CoinDto, MyAccountDto } from './dtos/my-account.dto';
49
import { CoinDataUpdaterService } from '@src/upbit/coin-data-updater.service';
@@ -19,7 +24,7 @@ export class AccountService {
1924

2025
async getMyAccountData(user: UserDto): Promise<MyAccountResponseDto> {
2126
this.logger.log(`계정 데이터 조회 시작: ${user.userId}`);
22-
27+
2328
const account = await this.accountRepository.findOne({
2429
where: { user: { id: user.userId } },
2530
});
@@ -57,7 +62,10 @@ export class AccountService {
5762
}
5863
}
5964

60-
private mapCoinsData(myCoins: Asset[], coinNameData: Map<string, string>): CoinDto[] {
65+
private mapCoinsData(
66+
myCoins: Asset[],
67+
coinNameData: Map<string, string>,
68+
): CoinDto[] {
6169
return myCoins.map((myCoin) => {
6270
const name = myCoin.assetName;
6371
return {
@@ -72,7 +80,10 @@ export class AccountService {
7280
});
7381
}
7482

75-
private getKoreanName(name: string, coinNameData: Map<string, string>): string {
83+
private getKoreanName(
84+
name: string,
85+
coinNameData: Map<string, string>,
86+
): string {
7687
const markets = ['KRW', 'BTC', 'USDT'];
7788
for (const market of markets) {
7889
const koreanName = coinNameData.get(`${market}-${name}`);
@@ -84,4 +95,4 @@ export class AccountService {
8495
private calculateTotalPrice(coins: CoinDto[]): number {
8596
return coins.reduce((total, coin) => total + coin.price, 0);
8697
}
87-
}
98+
}
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
export const CURRENCY_CONSTANTS = {
2-
ADMIN_INITIAL_KRW: 300000000,
3-
ADMIN_INITIAL_USDT: 300000,
4-
ADMIN_INITIAL_BTC: 0,
5-
UPBIT_IMAGE_URL: 'https://static.upbit.com/logos/',
6-
} as const;
2+
ADMIN_INITIAL_KRW: 300000000,
3+
ADMIN_INITIAL_USDT: 300000,
4+
ADMIN_INITIAL_BTC: 0,
5+
UPBIT_IMAGE_URL: 'https://static.upbit.com/logos/',
6+
} as const;

packages/server/src/account/dtos/my-account.dto.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,6 @@ export class MyAccountDto {
3030

3131
@IsArray()
3232
@ValidateNested({ each: true })
33-
@Type(() => CoinDto)
33+
@Type(() => CoinDto)
3434
coins: CoinDto[];
3535
}

packages/server/src/account/dtos/my-account.response.dto.ts

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,18 @@ export class MyAccountResponseDto {
1616
message: MyAccountDto;
1717
}
1818

19-
2019
export class UserDto {
21-
@ApiProperty({
22-
example: 1,
23-
description: '사용자 고유 ID',
24-
})
25-
@IsNumber()
26-
readonly userId: number;
27-
28-
@ApiProperty({
29-
example: 'john_doe',
30-
description: '사용자 이름',
31-
})
32-
@IsString()
33-
readonly userName: string;
34-
}
20+
@ApiProperty({
21+
example: 1,
22+
description: '사용자 고유 ID',
23+
})
24+
@IsNumber()
25+
readonly userId: number;
26+
27+
@ApiProperty({
28+
example: 'john_doe',
29+
description: '사용자 이름',
30+
})
31+
@IsString()
32+
readonly userName: string;
33+
}

packages/server/src/asset/asset.repository.ts

Lines changed: 63 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
import { DataSource, Repository, QueryRunner } from 'typeorm';
2-
import { Injectable, Logger, InternalServerErrorException } from '@nestjs/common';
2+
import {
3+
Injectable,
4+
Logger,
5+
InternalServerErrorException,
6+
} from '@nestjs/common';
37
import { Account } from '@src/account/account.entity';
48
import { Asset } from './asset.entity';
59

@@ -18,7 +22,9 @@ export class AssetRepository extends Repository<Asset> {
1822
quantity: number,
1923
queryRunner: QueryRunner,
2024
): Promise<Asset> {
21-
this.logger.log(`자산 생성 시작: type=${typeReceived}, accountId=${account.id}`);
25+
this.logger.log(
26+
`자산 생성 시작: type=${typeReceived}, accountId=${account.id}`,
27+
);
2228
try {
2329
const asset = new Asset();
2430
asset.assetName = typeReceived;
@@ -29,15 +35,20 @@ export class AssetRepository extends Repository<Asset> {
2935

3036
const savedAsset = await queryRunner.manager.save(Asset, asset);
3137
this.logger.log(`자산 생성 완료: assetId=${savedAsset.assetId}`);
32-
38+
3339
return savedAsset;
3440
} catch (error) {
3541
this.logger.error(`자산 생성 실패: ${error.message}`, error.stack);
36-
throw new InternalServerErrorException('자산 생성 중 오류가 발생했습니다.');
42+
throw new InternalServerErrorException(
43+
'자산 생성 중 오류가 발생했습니다.',
44+
);
3745
}
3846
}
3947

40-
async updateAssetQuantityPrice(asset: Asset, queryRunner: QueryRunner): Promise<void> {
48+
async updateAssetQuantityPrice(
49+
asset: Asset,
50+
queryRunner: QueryRunner,
51+
): Promise<void> {
4152
this.logger.log(`자산 수량/가격 업데이트 시작: assetId=${asset.assetId}`);
4253
try {
4354
await queryRunner.manager
@@ -53,12 +64,20 @@ export class AssetRepository extends Repository<Asset> {
5364

5465
this.logger.log(`자산 수량/가격 업데이트 완료: assetId=${asset.assetId}`);
5566
} catch (error) {
56-
this.logger.error(`자산 수량/가격 업데이트 실패: ${error.message}`, error.stack);
57-
throw new InternalServerErrorException('자산 업데이트 중 오류가 발생했습니다.');
67+
this.logger.error(
68+
`자산 수량/가격 업데이트 실패: ${error.message}`,
69+
error.stack,
70+
);
71+
throw new InternalServerErrorException(
72+
'자산 업데이트 중 오류가 발생했습니다.',
73+
);
5874
}
5975
}
6076

61-
async updateAssetQuantity(asset: Asset, queryRunner: QueryRunner): Promise<void> {
77+
async updateAssetQuantity(
78+
asset: Asset,
79+
queryRunner: QueryRunner,
80+
): Promise<void> {
6281
this.logger.log(`자산 수량 업데이트 시작: assetId=${asset.assetId}`);
6382
try {
6483
await queryRunner.manager
@@ -70,12 +89,20 @@ export class AssetRepository extends Repository<Asset> {
7089

7190
this.logger.log(`자산 수량 업데이트 완료: assetId=${asset.assetId}`);
7291
} catch (error) {
73-
this.logger.error(`자산 수량 업데이트 실패: ${error.message}`, error.stack);
74-
throw new InternalServerErrorException('자산 수량 업데이트 중 오류가 발생했습니다.');
92+
this.logger.error(
93+
`자산 수량 업데이트 실패: ${error.message}`,
94+
error.stack,
95+
);
96+
throw new InternalServerErrorException(
97+
'자산 수량 업데이트 중 오류가 발생했습니다.',
98+
);
7599
}
76100
}
77101

78-
async updateAssetAvailableQuantity(asset: Asset, queryRunner: QueryRunner): Promise<void> {
102+
async updateAssetAvailableQuantity(
103+
asset: Asset,
104+
queryRunner: QueryRunner,
105+
): Promise<void> {
79106
this.logger.log(`거래가능 수량 업데이트 시작: assetId=${asset.assetId}`);
80107
try {
81108
await queryRunner.manager
@@ -87,12 +114,20 @@ export class AssetRepository extends Repository<Asset> {
87114

88115
this.logger.log(`거래가능 수량 업데이트 완료: assetId=${asset.assetId}`);
89116
} catch (error) {
90-
this.logger.error(`거래가능 수량 업데이트 실패: ${error.message}`, error.stack);
91-
throw new InternalServerErrorException('거래가능 수량 업데이트 중 오류가 발생했습니다.');
117+
this.logger.error(
118+
`거래가능 수량 업데이트 실패: ${error.message}`,
119+
error.stack,
120+
);
121+
throw new InternalServerErrorException(
122+
'거래가능 수량 업데이트 중 오류가 발생했습니다.',
123+
);
92124
}
93125
}
94126

95-
async updateAssetPrice(asset: Asset, queryRunner: QueryRunner): Promise<void> {
127+
async updateAssetPrice(
128+
asset: Asset,
129+
queryRunner: QueryRunner,
130+
): Promise<void> {
96131
this.logger.log(`자산 가격 업데이트 시작: assetId=${asset.assetId}`);
97132
try {
98133
await queryRunner.manager
@@ -107,8 +142,13 @@ export class AssetRepository extends Repository<Asset> {
107142

108143
this.logger.log(`자산 가격 업데이트 완료: assetId=${asset.assetId}`);
109144
} catch (error) {
110-
this.logger.error(`자산 가격 업데이트 실패: ${error.message}`, error.stack);
111-
throw new InternalServerErrorException('자산 가격 업데이트 중 오류가 발생했습니다.');
145+
this.logger.error(
146+
`자산 가격 업데이트 실패: ${error.message}`,
147+
error.stack,
148+
);
149+
throw new InternalServerErrorException(
150+
'자산 가격 업데이트 중 오류가 발생했습니다.',
151+
);
112152
}
113153
}
114154

@@ -126,11 +166,15 @@ export class AssetRepository extends Repository<Asset> {
126166
},
127167
});
128168

129-
this.logger.log(`자산 조회 완료: ${asset ? `assetId=${asset.assetId}` : '자산 없음'}`);
169+
this.logger.log(
170+
`자산 조회 완료: ${asset ? `assetId=${asset.assetId}` : '자산 없음'}`,
171+
);
130172
return asset;
131173
} catch (error) {
132174
this.logger.error(`자산 조회 실패: ${error.message}`, error.stack);
133-
throw new InternalServerErrorException('자산 조회 중 오류가 발생했습니다.');
175+
throw new InternalServerErrorException(
176+
'자산 조회 중 오류가 발생했습니다.',
177+
);
134178
}
135179
}
136-
}
180+
}

0 commit comments

Comments
 (0)