Skip to content

Commit

Permalink
[BE] 여정 삭제 api 구현 및 github action 일부 (#91)
Browse files Browse the repository at this point in the history
* github action 초기 설정

* 여정 종료 임시 api 생성, 좌표 길이 반환/ 이후 스웨거 설정
및 테스트 코드 추가 예정. DTO는 일단 id값을 받아와서 해당 id 값에 해당하는 여정을 탐색해서 해당 여정의 좌표 길이를 반환하는 방식으로 코딩함, 그리고 여정 controller 에서 api를 start, end로 분리

* 스웨거 작성

---------

Co-authored-by: twoo1999 <[email protected]>
  • Loading branch information
vvans and twoo1999 authored Nov 23, 2023
1 parent e243d7b commit 2eb394b
Show file tree
Hide file tree
Showing 7 changed files with 609 additions and 1 deletion.
46 changes: 46 additions & 0 deletions .github/workflows/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# name: musicspot github actions

# on:
# pull_request:
# branches: ["BE/release"]
# types: ["closed"]
# jobs:
# deploy:
# runs-on: ubuntu-latest

# steps:
# - name: Checkout repository
# uses: actions/checkout@v2

# - name: Set up Node.js
# uses: actions/setup-node@v2
# with:
# node-version: "20"

# - name: Install dependencies
# run: |
# cd BE
# cd musicspot
# npm install

# - name: Build Docker image
# run: docker build -t musicspot:latest ./BE/musicspot

# - name: Login to Docker Hub
# run: docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }}

# - name: Push Docker image to Docker Hub
# run: docker push musicspot

# - name: SSH into Ubuntu server and pull the latest image
# uses: appleboy/ssh-action@master
# with:
# host: ${{ secrets.SERVER_IP }}
# username: ${{ secrets.SERVER_USERNAME }}
# password: ${{ secrets.PASSWORD }}
# script: |
# docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }}
# docker pull musicspot
# docker stop musicspot || true
# docker rm musicspot || true
# docker run -e SSH_HOST=${{ secrets.SSH_HOST }} -e SSH_PORT=${{ secrets.SSH_PORT }} -e SSH_USER=${{ secrets.SSH_USER }} -e SSH_PASSWORD=${{ secrets.SSH_PASSWORD }} -e DB_USERNAME=${{ secrets.DB_USERNAME }} -e DB_PASSWORD=${{ secrets.DB_PASSWORD }} -e DB_NAME=${{ secrets.DB_NAME }} -e DB_HOST=${{ secrets.DB_HOST }} -e SECRET_KEY=${{ secrets.SECRET_KEY }} -v /images:/images -v /images/profile:/images/profile -v /images/story:/images/story -d -p 3000:3000 --name heatpick-container geomgichoi/heatpick
1 change: 1 addition & 0 deletions BE/musicspot/.env
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
MONGODB_URI=mongodb://localhost:27017/musicspot
15 changes: 15 additions & 0 deletions BE/musicspot/src/journey/dto/journeyEnd.dto.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import {
ArrayMaxSize,
ArrayMinSize,
IsArray,
IsNumber,
IsString,
} from 'class-validator';

export class EndJourneyDTO {
@IsString()
readonly _id: string;

// @IsString()
// readonly timestamp: string;
}
15 changes: 14 additions & 1 deletion BE/musicspot/src/journey/journey.controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { JourneyService } from './journey.service';
import { StartJourneyDTO } from './dto/journeyStart.dto';
import { ApiCreatedResponse, ApiOperation, ApiTags } from '@nestjs/swagger';
import { Journey } from './journey.schema';
import { EndJourneyDTO } from './dto/journeyEnd.dto';
@Controller('journey')
@ApiTags('journey 관련 API')
export class JourneyController {
Expand All @@ -17,8 +18,20 @@ export class JourneyController {
description: '생성된 여정 데이터를 반환',
type: Journey,
})
@Post()
@Post('start')
async create(@Body() startJourneyDTO: StartJourneyDTO) {
return await this.journeyService.create(startJourneyDTO);
}
@ApiOperation({
summary: '여정 종료를 눌렀을 시 실행되는 API',
description: 'request로 id값이 필요합니다',
})
@ApiCreatedResponse({
description: '현재는 좌표 데이터의 길이를 반환, 추후 참 거짓으로 변경 예정',
type: Journey,
})
@Post('end')
async end(@Body() endJourneyDTO: EndJourneyDTO) {
return await this.journeyService.end(endJourneyDTO);
}
}
8 changes: 8 additions & 0 deletions BE/musicspot/src/journey/journey.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import { StartJourneyDTO } from './dto/journeyStart.dto';
import { Journey } from './journey.schema';
import { UserService } from '../user/user.service';
import { User } from 'src/user/user.schema';
import { EndJourneyDTO } from './dto/journeyEnd.dto';

@Injectable()
export class JourneyService {
Expand All @@ -26,4 +27,11 @@ export class JourneyService {
this.userService.appendJourneyIdToUser(startJourneyDTO.email, journeyId);
return returnData;
}

async end(endJourneyDTO: EndJourneyDTO) {
const journeyId = endJourneyDTO._id;
const journey = await this.journeyModel.findById(journeyId).exec();
//check 참 조건인지 확인
return journey.coordinates.length;
}
}
Loading

0 comments on commit 2eb394b

Please sign in to comment.