Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
450f121
merge 1차
westjiuuu Aug 5, 2024
b602e56
장소 삭제
westjiuuu Aug 5, 2024
889cdd1
충돌 수정
westjiuuu Aug 5, 2024
05a361a
[FEAT] import 수정
westjiuuu Aug 5, 2024
0b915ce
[FEAT] 여행 계획방 만들기
westjiuuu Aug 9, 2024
bcba182
[FEAT] 웹소켓 사용
westjiuuu Aug 13, 2024
f439398
배포준비
westjiuuu Aug 13, 2024
1b2c900
이름 수정
westjiuuu Aug 13, 2024
0215d20
Rename location.js to Location.js
westjiuuu Aug 13, 2024
102c789
[FIX] import 수정
westjiuuu Aug 13, 2024
55ca21c
Merge branch 'merge/1' of https://github.com/letsggo/backend into mer…
westjiuuu Aug 13, 2024
acdf0ea
git pull merge/1
eynow1159 Aug 14, 2024
b1ef22a
[FEAT] 서버 응답 설정
westjiuuu Aug 17, 2024
24cd8e7
크롬 설정
westjiuuu Aug 17, 2024
2a3a4d0
[FIX] 후보지 등록 수정
westjiuuu Aug 18, 2024
c3947f2
[FIX] 후보지 조회
westjiuuu Aug 18, 2024
14b83d2
[FIX] cheerio 모듈 수정
westjiuuu Aug 18, 2024
1938660
[FIX] 후보군 리스트 상세조회
westjiuuu Aug 18, 2024
f9cbeaa
길찾기 api 수정
eynow1159 Aug 19, 2024
39d4f2a
[FIX] 홈화면 조회 수정
westjiuuu Aug 20, 2024
5171caa
[FIX] 파일 삭제
westjiuuu Aug 20, 2024
04977c8
[FEAT] 투표하기
westjiuuu Aug 20, 2024
13355d4
[FEAT] 동선 등록
westjiuuu Aug 21, 2024
5ee32e2
수정된 merge/1 pull하기위한 커밋
eynow1159 Aug 21, 2024
67beddf
route 테이블 생성 수정
eynow1159 Aug 21, 2024
9c5c241
models/Route.js
eynow1159 Aug 21, 2024
94ae7a7
models/Route.js 수정
eynow1159 Aug 21, 2024
f65eedb
models/Route.js route_title 추가
eynow1159 Aug 21, 2024
bd8058f
최종
eynow1159 Aug 21, 2024
c6ddd35
라우트 모델 수정
eynow1159 Aug 21, 2024
c03d2f4
테스트 중~!
eynow1159 Aug 22, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 0 additions & 23 deletions config/config.json

This file was deleted.

23 changes: 22 additions & 1 deletion database.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,27 @@ dotenv.config();
const sequelize = new Sequelize(process.env.DB_NAME, process.env.DB_USER, process.env.DB_PASSWORD, {
host: process.env.DB_HOST,
dialect: process.env.DB_DIALECT,
logging: false
});

export default sequelize;
const createDatabase = async () => {
try {
// 기본 연결
const tempSequelize = new Sequelize({
host: process.env.DB_HOST,
dialect: process.env.DB_DIALECT,
username: process.env.DB_USER,
password: process.env.DB_PASSWORD,
logging: false
});

// 데이터베이스 생성
await tempSequelize.query(`CREATE DATABASE IF NOT EXISTS \`${process.env.DB_NAME}\`;`);
console.log(`데이터베이스 ${process.env.DB_NAME}가 생성되었습니다.`);
} catch (error) {
console.error('데이터베이스 생성 오류:', error);
}
};

export default sequelize;
export { createDatabase };
126 changes: 88 additions & 38 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,27 +5,38 @@ import { dirname } from 'path';
import dotenv from 'dotenv';
import passport from 'passport';
import morgan from 'morgan';
import cors from 'cors';
import sequelize from './database.js';
import { createServer } from 'http';
import { Server } from 'socket.io';

import authRoutes from './src/routes/auth.js';
import CandidateRoutes from './src/routes/CreateCan.js';
import googleAuthRoutes from './src/routes/googleAuth.js';
import locationRoutes from './src/routes/locationRoutes.js';
import tpRoutes from './src/routes/tpRouteer.js';
import TravelPlanRoutes from './src/routes/travelPlans.js';
import VoteRoutes from './src/routes/vote.js';

import Accommodation from './src/models/accommodation.js';
import Candidate from './src/models/Candidates.js';
import FavoriteList from './src/models/FavoriteList.js';
import Location from './src/models/location.js';
import myPlaceList from './src/models/myPlaceList.js';
import MyPlaceListMapping from './src/models/MyPlaceListMapping.js';
import TravelPlan from './src/models/travelPlan.js';
import TravelRoute from './src/models/travelRoute.js';
import User_TravelPlan from './src/models/user_travelPlan.js';
import User from './src/models/user.js';
import Vote from './src/models/vote.js';
import locationRoutes from './src/routes/locationRoutes.js';
import travelPlanRoutes from './src/routes/travelPlans.js';
import makeRoomRoutes from './src/routes/makeRoomRoutes.js';
import accommodationRoutes from './src/routes/accommodationRoutes.js';
import inviteRoutes from './src/routes/inviteRoutes.js';
import voteRouter from "./src/routes/vote.js";
import addRoute from "./src/routes/addRoute.js";
import travelRoute from './src/routes/travelRoute.js';

// 모델 파일들
import './src/models/user.js';
import './src/models/travelPlan.js';
import './src/models/FavoriteList.js';
import './src/models/Location.js';
import './src/models/Candidates.js';
import './src/models/myPlaceList.js';
import './src/models/MyPlaceListMapping.js';
import './src/models/accommodation.js';
import './src/models/travelRoute.js';
import './src/models/Route.js';
import './src/models/user_travelPlan.js';
import './src/models/vote.js';
import './src/models/voted.js';
import './src/models/associations.js'; // 관계 설정 파일

dotenv.config();

Expand All @@ -34,10 +45,50 @@ const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);

const app = express();
const port = 3000;
const server = createServer(app);
const io = new Server(server, {
cors: {
origin: "http://localhost:3000",
methods: ["GET", "POST"],
}
});

app.set('socketio', io);

// 전역 헤더 설정
app.use((req, res, next) => {
res.setHeader('X-Content-Type-Options', 'nosniff');
res.setHeader('Cache-Control', 'no-store'); // Cache-Control 설정
next();
});

app.use(cors());

// Serve static files
app.use(express.static(path.join(__dirname, 'public')));

// Handle socket connections
io.on('connection', (socket) => {
console.log('A user connected');

app.set('port', process.env.PORT || 3001);
// Join a room based on travel_id
socket.on('joinRoom', (travel_id) => {
socket.join(travel_id);
console.log(`User joined room: ${travel_id}`);
});

// Handle messages sent to a specific room
socket.on('message', ({ travel_id, message }) => {
io.to(travel_id).emit('message', message);
console.log(`Message sent to room ${travel_id}: ${message}`);
});

socket.on('disconnect', () => {
console.log('User disconnected');
});
});

// 데이터베이스 연결 확인
sequelize.authenticate()
.then(() => {
console.log('데이터베이스에 연결되었습니다.');
Expand All @@ -46,12 +97,13 @@ sequelize.authenticate()
console.error('데이터베이스 연결 오류:', err);
});

sequelize.sync({ alter: true })
// 모든 모델을 동기화하는 코드 (테이블 생성)
sequelize.sync({ alter: true }) // alter 옵션을 사용하여 테이블 구조 업데이트
.then(() => {
console.log('모든 모델이 동기화되었습니다.');
console.log('모든 모델이 성공적으로 동기화되었습니다.');
})
.catch(err => {
console.error('모델 동기화 오류:', err);
console.error('모델 동기화 중 오류가 발생했습니다:', err);
});

app.use(morgan('dev'));
Expand All @@ -66,11 +118,14 @@ app.use(passport.initialize());
// 라우터
app.use('/users', authRoutes);
app.use('/users', googleAuthRoutes);
app.use('/travel-plans', locationRoutes);
app.use('/', TravelPlanRoutes);
app.use('/', tpRoutes);
// app.use('/candidate', CandidateRoutes);
// app.use('/vote', VoteRoutes);
app.use('/travel-plans', locationRoutes);
app.use('/', travelPlanRoutes);
app.use('/travel-plans', makeRoomRoutes);
app.use('/travel-plans', accommodationRoutes);
app.use('/', inviteRoutes);
app.use("/travel-plans", voteRouter);
app.use("/travel-plans", CandidateRoutes);
app.use("/travel", addRoute);

// 라우터가 없는 경우에 대한 처리
app.use((req, res, next) => {
Expand All @@ -81,18 +136,13 @@ app.use((req, res, next) => {

// 에러 핸들링 미들웨어 추가
app.use((err, req, res, next) => {
res.locals.message = err.message;
res.locals.error = process.env.NODE_ENV !== 'production' ? err : {};
res.status(err.status || 500);
res.render('error');
});

app.get('/gabolkka', (deq, res)=> {
console.log("/gabolkka");
res.send('gabolkka');
res.status(err.status || 500).json({
message: err.message,
error: process.env.NODE_ENV !== 'production' ? err : {}
});
});

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
const PORT = process.env.PORT || 5000;
server.listen(PORT, () => {
console.log(`Server running at http://localhost:${PORT}`);
});
});
Loading