Skip to content

Commit

Permalink
Merge pull request #48 from modern-agile-team/feature/friend
Browse files Browse the repository at this point in the history
Add(NicoDora/friend) : 친구 요청 기능 추가
  • Loading branch information
NicoDora authored Oct 18, 2023
2 parents 5535f2c + 0fe25a4 commit 2e89afb
Show file tree
Hide file tree
Showing 10 changed files with 75 additions and 23 deletions.
4 changes: 2 additions & 2 deletions src/app.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import { ChatModule } from './chat/chat.module';
import { S3Module } from './common/s3/s3.module';
import { S3Service } from './common/s3/s3.service';
import { BoardsModule } from './boards/boards.module';
import { FriendModule } from './friend/friend.module';
import { FriendsModule } from './friends/friends.module';
import { NoticeModule } from './notice/notice.module';
import { EventsGateway } from './events/events.gateway';
import { EventsModule } from './events/events.module';
Expand All @@ -38,7 +38,7 @@ import { TokenRepository } from './auth/repositories/token.repository';
ChatModule,
S3Module,
BoardsModule,
FriendModule,
FriendsModule,
NoticeModule,
EventsModule,
], //
Expand Down
8 changes: 4 additions & 4 deletions src/config/swagger.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@ import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger';

export function setupSwagger(app: INestApplication): void {
const config = new DocumentBuilder()
.setTitle('Test API')
.setDescription('개발을 위한 API 문서입니다.')
.setTitle('ma6-main API')
.setDescription('모던애자일 6기 메인프로젝트 API 문서')
.setVersion('1.0')
.addCookieAuth('connect.sid')
.addBearerAuth({ type: 'http', scheme: 'bearer', bearerFormat: 'JWT', name: 'JWT', description: '여기에 토큰 입력', in: 'header' }, 'access-token')
.build();

const document = SwaggerModule.createDocument(app, config);
SwaggerModule.setup('api', app, document);
SwaggerModule.setup('swagger', app, document);
}
2 changes: 1 addition & 1 deletion src/config/typeorm.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import { Board } from 'src/boards/entities/board.entity';
import { CommentLike } from 'src/comments/entities/comment-like.entity';
import { Comment } from 'src/comments/entities/comment.entity';
import { Recomment } from 'src/comments/entities/recomment.entity';
import { Friend } from 'src/friend/entities/friend.entity';
import { Friend } from 'src/friends/entities/friends.entity';
import { BoardNotification } from 'src/notice/entities/board-notice.entity';
import { CommentNotification } from 'src/notice/entities/comment-notice.entity';
import { UserImage } from 'src/users/entities/user-image.entity';
Expand Down
4 changes: 0 additions & 4 deletions src/friend/friend.module.ts

This file was deleted.

18 changes: 18 additions & 0 deletions src/friends/controllers/friends.controller.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import { Body, Controller, Headers, Post } from "@nestjs/common";
import { FriendsService } from "../services/friends.service";
import { TokenService } from "src/auth/services/token.service";
import { User } from "src/users/entities/user.entity";

@Controller('friends')
export class FriendsController {
constructor(
private readonly friendsService: FriendsService,
private readonly tokenService: TokenService,
) {}

@Post()
async friendRequest(@Headers('access_token') accessToken: string, @Headers('friend_id') friendId:User) {
const userId = await this.tokenService.decodeToken(accessToken);
return await this.friendsService.friendRequest(userId, friendId);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,9 @@ export class Friend {
requesterId: User;

@ManyToOne(() => User)
@JoinColumn({ name: 'requrested_id' })
requestedId: User;
@JoinColumn({ name: 'respondent_id' })
respondentId: User;

@Column({ type: 'enum', enum: Status })
@Column({ type: 'enum', enum: Status, default: Status.PENDING })
status!: Status;
}
13 changes: 13 additions & 0 deletions src/friends/friends.module.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import { Module } from '@nestjs/common';
import { FriendsController } from './controllers/friends.controller';
import { FriendsService } from './services/friends.service';
import { FriendsRepository } from './repositories/friends.repository';
import { TokenService } from 'src/auth/services/token.service';
import { TokenRepository } from 'src/auth/repositories/token.repository';

@Module({
imports: [],
controllers: [FriendsController],
providers: [FriendsService, FriendsRepository, TokenService, TokenRepository],
})
export class FriendsModule {}
20 changes: 20 additions & 0 deletions src/friends/repositories/friends.repository.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import { Injectable } from "@nestjs/common";
import { EntityManager } from "typeorm";
import { Friend, Status } from "../entities/friends.entity";
import { User } from "src/users/entities/user.entity";

@Injectable()
export class FriendsRepository {
constructor(
private readonly entityManager: EntityManager,
) {}

async friendRequest(userId: User, friendId: User): Promise<Friend> {
const friend = new Friend();
friend.requesterId = userId;
friend.respondentId = friendId;
friend.status = Status.PENDING;

return await this.entityManager.save(friend);
}
}
14 changes: 14 additions & 0 deletions src/friends/services/friends.service.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import { Injectable } from "@nestjs/common";
import { FriendsRepository } from "../repositories/friends.repository";
import { User } from "src/users/entities/user.entity";

@Injectable()
export class FriendsService {
constructor(
private readonly friendsRepository: FriendsRepository,
) {}

async friendRequest(userId: User, friendId: User) {
return await this.friendsRepository.friendRequest(userId, friendId);
}
}
9 changes: 0 additions & 9 deletions src/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,6 @@ async function bootstrap() {
setupSwagger(app);
app.useLogger(logger);

const config = new DocumentBuilder()
.setTitle('ma6-main API')
.setDescription('모던애자일 6기 메인프로젝트 API 문서')
.setVersion('1.0')
.addBearerAuth({ type: 'http', scheme: 'bearer', bearerFormat: 'JWT', name: 'JWT', description: '여기에 토큰 입력', in: 'header' }, 'access-token')
.build();
const document = SwaggerModule.createDocument(app, config);
SwaggerModule.setup('swagger', app, document);

await app.listen(3000);
}
bootstrap();

0 comments on commit 2e89afb

Please sign in to comment.