Skip to content

Commit

Permalink
docs(be): add jsdoc to admin contest, group, storage / client announc…
Browse files Browse the repository at this point in the history
…ement, workbook modules (#2186)

* docs(be): add jsdoc to admin contest module

* docs(be): add jsdoc to admin group module

* docs(be): add jsdoc to admin storage module
  • Loading branch information
Jaehyeon1020 authored Nov 26, 2024
1 parent c11a3e9 commit 514241c
Show file tree
Hide file tree
Showing 3 changed files with 60 additions and 2 deletions.
20 changes: 18 additions & 2 deletions apps/backend/apps/admin/src/contest/contest.resolver.ts
Original file line number Diff line number Diff line change
Expand Up @@ -83,12 +83,22 @@ export class ContestResolver {
return await this.contestService.deleteContest(groupId, contestId)
}

/**
* Contest의 소속 Group을 Open Space(groupId === 1)로 이동시키기 위한 요청(Publicizing Requests)들을 불러옵니다.
* @returns Publicizing Request 배열
*/
@Query(() => [PublicizingRequest])
@UseRolesGuard()
async getPublicizingRequests() {
return await this.contestService.getPublicizingRequests()
}

/**
* Contest의 소속 Group을 Open Space(groupId === 1)로 이동시키기 위한 요청(Publicizing Request)를 생성합니다.
* @param groupId Contest가 속한 Group의 ID. 이미 Open Space(groupId === 1)이 아니어야 합니다.
* @param contestId Contest의 ID
* @returns 생성된 Publicizing Request
*/
@Mutation(() => PublicizingRequest)
async createPublicizingRequest(
@Args('groupId', { type: () => Int }, GroupIDPipe) groupId: number,
Expand All @@ -100,6 +110,12 @@ export class ContestResolver {
)
}

/**
* Contest의 소속 Group을 Open Space(groupId === 1)로 이동시키기 위한 요청(Publicizing Request)을 처리합니다.
* @param contestId Publicizing Request를 생성한 contest의 Id
* @param isAccepted 요청 수락 여부
* @returns
*/
@Mutation(() => PublicizingResponse)
@UseRolesGuard()
async handlePublicizingRequest(
Expand Down Expand Up @@ -144,7 +160,7 @@ export class ContestResolver {
* 특정 User의 Contest 제출 내용 요약 정보를 가져옵니다.
*
* Contest Overall 페이지에서 특정 유저를 선택했을 때 사용
* https://github.com/skkuding/codedang/pull/1894
* @see https://github.com/skkuding/codedang/pull/1894
*/
@Query(() => ContestSubmissionSummaryForUser)
async getContestSubmissionSummaryByUserId(
Expand Down Expand Up @@ -188,7 +204,7 @@ export class ContestResolver {
* Contest에 참여한 User와, 점수 요약을 함께 불러옵니다.
*
* Contest Overall 페이지의 Participants 탭의 정보
* https://github.com/skkuding/codedang/pull/2029
* @see https://github.com/skkuding/codedang/pull/2029
*/
@Query(() => [UserContestScoreSummaryWithUserInfo])
async getContestScoreSummaries(
Expand Down
10 changes: 10 additions & 0 deletions apps/backend/apps/admin/src/group/group.resolver.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,13 +53,23 @@ export class GroupResolver {
return await this.groupService.deleteGroup(id, req.user)
}

/**
* Group 초대코드를 발급합니다.
* @param id 초대코드를 발급하는 Group의 ID
* @returns 발급된 초대코드
*/
@Mutation(() => String)
async issueInvitation(
@Args('groupId', { type: () => Int }, GroupIDPipe) id: number
) {
return await this.groupService.issueInvitation(id)
}

/**
* 발급했던 Group 초대코드를 제거합니다.
* @param id 초대코드를 제거하는 Group의 ID
* @returns 제거된 초대코드
*/
@Mutation(() => String)
async revokeInvitation(
@Args('groupId', { type: () => Int }, GroupIDPipe) id: number
Expand Down
32 changes: 32 additions & 0 deletions apps/backend/apps/admin/src/storage/storage.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,14 @@ export class StorageService {
@Inject('S3_CLIENT_MEDIA') private readonly mediaClient: S3Client
) {}

/**
* @deprecated testcase를 더 이상 S3에 저장하지 않습니다.
*
* Object(testcase)를 업로드합니다.
* @param filename 파일 이름
* @param content 파일 내용
* @param type 업로드할 파일의 MIME type
*/
async uploadObject(filename: string, content: string, type: ContentType) {
await this.client.send(
new PutObjectCommand({
Expand All @@ -28,6 +36,13 @@ export class StorageService {
)
}

/**
* 이미지를 S3 Bucket에 업로드합니다.
* @param filename 이미지 파일 이름
* @param fileSize 이미지 파일 크기 (Byte)
* @param content 이미지 파일 내용 (ReadStream type)
* @param type 업로드할 이미지 파일의 MIME type
*/
async uploadImage(
filename: string,
fileSize: number,
Expand All @@ -47,6 +62,13 @@ export class StorageService {

// TODO: uploadFile

/**
* @deprecated testcase를 더 이상 S3에 저장하지 않습니다.
*
* Object(testcase)를 불러옵니다.
* @param filename 파일 이름
* @returns S3에 저장된 Object
*/
async readObject(filename: string) {
const res = await this.client.send(
new GetObjectCommand({
Expand All @@ -57,6 +79,12 @@ export class StorageService {
return res.Body?.transformToString() ?? ''
}

/**
* @deprecated testcase를 더 이상 S3에 저장하지 않습니다.
*
* S3에 저장된 Object(testcase)를 삭제합니다.
* @param filename 파일 이름
*/
async deleteObject(filename: string) {
await this.client.send(
new DeleteObjectCommand({
Expand All @@ -66,6 +94,10 @@ export class StorageService {
)
}

/**
* S3에 저장된 이미지를 삭제합니다.
* @param filename 이미지 파일 이름
*/
async deleteImage(filename: string) {
await this.mediaClient.send(
new DeleteObjectCommand({
Expand Down

0 comments on commit 514241c

Please sign in to comment.