From d82441420c4c1c732974d47612d3d248af3273d0 Mon Sep 17 00:00:00 2001
From: tpgus2603 <kakaneymar2424@gmail.com>
Date: Thu, 14 Nov 2024 02:45:36 +0900
Subject: [PATCH] =?UTF-8?q?feat=20=EC=97=94=ED=8B=B0=ED=8B=B0=EB=AA=A8?=
 =?UTF-8?q?=EB=8D=B8=20=EC=A0=95=EC=9D=98=20=EB=B0=8F=20DB=EC=97=B0?=
 =?UTF-8?q?=EA=B2=B0=20=ED=85=8C=EC=8A=A4=ED=8A=B8=EC=99=84=EB=A3=8C=20(#3?=
 =?UTF-8?q?)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .env                            |   6 ++
 .gitignore                      |   4 +-
 app.js                          |  33 +++++++++--
 config/config.json              |  23 --------
 config/mongoose.js              |  18 ++++++
 config/sequelize.js             |  15 +++++
 models/Friend.js                |  23 ++++++++
 models/Friends.js               |  47 ---------------
 models/chatParticipant.js       |   0
 models/chatRoom.js              |   0
 models/index.js                 |  56 +++++-------------
 models/meeting.js               | 101 ++++++++++++--------------------
 models/meetingParticipant.js    |  54 ++++++-----------
 models/message.js               |   0
 models/schedule.js              |  72 ++++++++---------------
 models/user.js                  |  60 +++++++------------
 package.json                    |   3 +-
 schemas/ChatRoomParticipants.js |  20 +++----
 schemas/ChatRooms.js            |  21 +++----
 schemas/Messages.js             |  20 +++----
 schemas/index.js                |  32 ----------
 sync.js                         |  26 ++++++++
 22 files changed, 264 insertions(+), 370 deletions(-)
 create mode 100644 .env
 create mode 100644 config/mongoose.js
 create mode 100644 config/sequelize.js
 create mode 100644 models/Friend.js
 delete mode 100644 models/Friends.js
 delete mode 100644 models/chatParticipant.js
 delete mode 100644 models/chatRoom.js
 delete mode 100644 models/message.js
 delete mode 100644 schemas/index.js
 create mode 100644 sync.js

diff --git a/.env b/.env
new file mode 100644
index 0000000..812c2f6
--- /dev/null
+++ b/.env
@@ -0,0 +1,6 @@
+DB_HOST=localhost
+DB_USER=root
+DB_PASSWORD=0000
+DB_NAME=meeting
+MONGO_URI=mongodb://localhost:27017/your_mongo_db
+PORT=3306
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 40b878d..f51c03d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,3 @@
-node_modules/
\ No newline at end of file
+node_modules/
+.env/
+config.json/
diff --git a/app.js b/app.js
index 30e4db3..801de09 100644
--- a/app.js
+++ b/app.js
@@ -1,11 +1,32 @@
+// app.js
+
+require('dotenv').config(); // 환경 변수 로드
+
 const express = require('express');
 const app = express();
-const PORT = process.env.PORT || 3000;
+const sequelize = require('./config/sequelize');
+//const mongoose = require('./config/mongoose');
+//const userRoutes = require('./routes/userRoutes');
+//const passport = require('./passport');
 
-app.get('/', (req, res) => {
-  res.send('Hello, World!');
-});
+// 미들웨어 설정
+app.use(express.json());
+//app.use(passport.initialize());
 
+// 라우팅
+//app.use('/users', userRoutes);
+
+// Sequelize 데이터베이스 연결 및 동기화
+sequelize.sync()
+  .then(() => {
+    console.log('Sequelize synchronized.');
+  })
+  .catch(err => {
+    console.error('Sequelize synchronization error:', err);
+  });
+
+// 서버 시작
+const PORT = process.env.PORT || 3000;
 app.listen(PORT, () => {
-  console.log(`Server is running on http://localhost:${PORT}`);
-});
\ No newline at end of file
+  console.log(`Server running on port ${PORT}`);
+});
diff --git a/config/config.json b/config/config.json
index 0f858c6..e69de29 100644
--- a/config/config.json
+++ b/config/config.json
@@ -1,23 +0,0 @@
-{
-  "development": {
-    "username": "root",
-    "password": null,
-    "database": "database_development",
-    "host": "127.0.0.1",
-    "dialect": "mysql"
-  },
-  "test": {
-    "username": "root",
-    "password": null,
-    "database": "database_test",
-    "host": "127.0.0.1",
-    "dialect": "mysql"
-  },
-  "production": {
-    "username": "root",
-    "password": null,
-    "database": "database_production",
-    "host": "127.0.0.1",
-    "dialect": "mysql"
-  }
-}
diff --git a/config/mongoose.js b/config/mongoose.js
new file mode 100644
index 0000000..3379779
--- /dev/null
+++ b/config/mongoose.js
@@ -0,0 +1,18 @@
+// config/mongoose.js
+
+const mongoose = require('mongoose');
+
+mongoose.connect(process.env.MONGO_URI, {
+  useNewUrlParser: true,
+  useUnifiedTopology: true,
+});
+
+mongoose.connection.on('connected', () => {
+  console.log('Mongoose connected.');
+});
+
+mongoose.connection.on('error', (err) => {
+  console.error('Mongoose connection error:', err);
+});
+
+module.exports = mongoose;
diff --git a/config/sequelize.js b/config/sequelize.js
new file mode 100644
index 0000000..c814262
--- /dev/null
+++ b/config/sequelize.js
@@ -0,0 +1,15 @@
+// config/sequelize.js
+
+const { Sequelize } = require('sequelize');
+
+const sequelize = new Sequelize(process.env.DB_NAME, process.env.DB_USER, process.env.DB_PASSWORD, {
+  host: process.env.DB_HOST,
+  dialect: 'mysql', // 사용하려는 DBMS에 맞게 변경
+  logging: false,
+  define: {
+    //timestamps: true, // createdAt, updatedAt 자동 생성
+    underscored: true, // created_at 형식의 필드명 사용
+  },
+});
+
+module.exports = sequelize;
\ No newline at end of file
diff --git a/models/Friend.js b/models/Friend.js
new file mode 100644
index 0000000..fc72c69
--- /dev/null
+++ b/models/Friend.js
@@ -0,0 +1,23 @@
+// models/Friend.js
+
+const { DataTypes } = require('sequelize');
+const sequelize = require('../config/sequelize');
+const User = require('./User');
+
+const Friend = sequelize.define('Friend', {
+  type: {
+    type: DataTypes.ENUM('NORMAL', 'SPECIAL'),
+    allowNull: false,
+  },
+}, {
+  tableName: 'Friends',
+  timestamps: false,
+});
+
+Friend.belongsTo(User, { foreignKey: 'user_id', as: 'user' });
+Friend.belongsTo(User, { foreignKey: 'friend_id', as: 'friend' });
+
+User.hasMany(Friend, { foreignKey: 'user_id', as: 'friends' });
+User.hasMany(Friend, { foreignKey: 'friend_id', as: 'friendOf' });
+
+module.exports = Friend;
diff --git a/models/Friends.js b/models/Friends.js
deleted file mode 100644
index 77b56cf..0000000
--- a/models/Friends.js
+++ /dev/null
@@ -1,47 +0,0 @@
-// models/Friend.js
-module.exports = (sequelize, DataTypes) => {
-  const Friend = sequelize.define('Friend', {
-    id: {
-      type: DataTypes.BIGINT,
-      primaryKey: true,
-      autoIncrement: true,
-    },
-    user_id: {
-      type: DataTypes.BIGINT,
-      allowNull: false,
-      references: {
-        model: 'Users',
-        key: 'id',
-      },
-      onDelete: 'CASCADE',
-    },
-    friend_id: {
-      type: DataTypes.BIGINT,
-      allowNull: false,
-      references: {
-        model: 'Users',
-        key: 'id',
-      },
-      onDelete: 'CASCADE',
-    },
-    type: {
-      type: DataTypes.ENUM('NORMAL', 'SPECIAL'),
-      allowNull: false,
-    },
-    created_at: {
-      type: DataTypes.DATE,
-      defaultValue: DataTypes.NOW,
-    },
-  }, {
-    tableName: 'Friends',
-    timestamps: false,
-    indexes: [
-      {
-        unique: true,
-        fields: ['user_id', 'friend_id'],
-      },
-    ],
-  });
-
-  return Friend;
-};
diff --git a/models/chatParticipant.js b/models/chatParticipant.js
deleted file mode 100644
index e69de29..0000000
diff --git a/models/chatRoom.js b/models/chatRoom.js
deleted file mode 100644
index e69de29..0000000
diff --git a/models/index.js b/models/index.js
index a7921ee..9206ae9 100644
--- a/models/index.js
+++ b/models/index.js
@@ -1,42 +1,18 @@
-// models/User.js
-module.exports = (sequelize, DataTypes) => {
-  const User = sequelize.define('User', {
-    id: {
-      type: DataTypes.BIGINT,
-      primaryKey: true,
-      autoIncrement: true,
-    },
-    name: {
-      type: DataTypes.STRING,
-      allowNull: false,
-    },
-    email: {
-      type: DataTypes.STRING,
-      allowNull: false,
-      unique: true,
-      validate: {
-        isEmail: true, // 이메일 형식 검증
-      },
-    },
-    invite_code: {
-      type: DataTypes.UUID,
-      defaultValue: DataTypes.UUIDV4, // 자동으로 UUID 생성
-      allowNull: false,
-      unique: true,
-    },
-    created_at: {
-      type: DataTypes.DATE,
-      defaultValue: DataTypes.NOW,
-    },
-    // updated_at 추가 (필요 시)
-    updated_at: {
-      type: DataTypes.DATE,
-      defaultValue: DataTypes.NOW,
-    },
-  }, {
-    tableName: 'Users',
-    timestamps: false, // created_at과 updated_at을 수동으로 관리
-  });
+// models/index.js
 
-  return User;
+const sequelize = require('../config/sequelize');
+
+const User = require('./User');
+const Schedule = require('./Schedule');
+const Meeting = require('./Meeting');
+const MeetingParticipant = require('./MeetingParticipant');
+const Friend = require('./Friend');
+
+module.exports = {
+  sequelize,
+  User,
+  Schedule,
+  Meeting,
+  MeetingParticipant,
+  Friend,
 };
diff --git a/models/meeting.js b/models/meeting.js
index 537335b..7944e35 100644
--- a/models/meeting.js
+++ b/models/meeting.js
@@ -1,64 +1,41 @@
 // models/Meeting.js
-module.exports = (sequelize, DataTypes) => {
-  const Meeting = sequelize.define('Meeting', {
-    id: {
-      type: DataTypes.BIGINT,
-      primaryKey: true,
-      autoIncrement: true,
-    },
-    title: {
-      type: DataTypes.STRING,
-      allowNull: false,
-    },
-    description: {
-      type: DataTypes.TEXT,
-      allowNull: true,
-    },
-    start_time: {
-      type: DataTypes.DATE,
-      allowNull: false,
-    },
-    end_time: {
-      type: DataTypes.DATE,
-      allowNull: false,
-      validate: {
-        isAfterStart(value) {
-          if (value <= this.start_time) {
-            throw new Error('end_time은 start_time 이후여야 합니다.');
-          }
-        },
-      },
-    },
-    location: {
-      type: DataTypes.STRING,
-      allowNull: true,
-    },
-    deadline: {
-      type: DataTypes.DATE,
-      allowNull: true,
-    },
-    type: {
-      type: DataTypes.ENUM('OPEN', 'CLOSE'),
-      allowNull: false,
-    },
-    created_by: {
-      type: DataTypes.BIGINT,
-      allowNull: false,
-      references: {
-        model: 'Users',
-        key: 'id',
-      },
-      onDelete: 'CASCADE',
-    },
-  }, {
-    tableName: 'Meetings',
-    timestamps: false,
-    indexes: [
-      {
-        fields: ['created_by'],
-      },
-    ],
-  });
 
-  return Meeting;
-};
+const { DataTypes } = require('sequelize');
+const sequelize = require('../config/sequelize');
+const User = require('./User');
+
+const Meeting = sequelize.define('Meeting', {
+  title: {
+    type: DataTypes.STRING,
+    allowNull: false,
+  },
+  description: {
+    type: DataTypes.TEXT,
+  },
+  start_time: {
+    type: DataTypes.DATE,
+    allowNull: false,
+  },
+  end_time: {
+    type: DataTypes.DATE,
+    allowNull: false,
+  },
+  location: {
+    type: DataTypes.STRING,
+  },
+  deadline: {
+    type: DataTypes.DATE,
+  },
+  type: {
+    type: DataTypes.ENUM('OPEN', 'CLOSE'),
+    allowNull: false,
+  },
+}, {
+  tableName: 'Meetings',
+  timestamps: false,
+});
+
+Meeting.belongsTo(User, { foreignKey: 'created_by', as: 'creator' });
+User.hasMany(Meeting, { foreignKey: 'created_by', as: 'meetings' });
+
+module.exports = Meeting;
diff --git a/models/meetingParticipant.js b/models/meetingParticipant.js
index a989460..fd456fa 100644
--- a/models/meetingParticipant.js
+++ b/models/meetingParticipant.js
@@ -1,39 +1,19 @@
 // models/MeetingParticipant.js
-module.exports = (sequelize, DataTypes) => {
-  const MeetingParticipant = sequelize.define('MeetingParticipant', {
-    id: {
-      type: DataTypes.BIGINT,
-      primaryKey: true,
-      autoIncrement: true,
-    },
-    meeting_id: {
-      type: DataTypes.BIGINT,
-      allowNull: false,
-      references: {
-        model: 'Meetings',
-        key: 'id',
-      },
-      onDelete: 'CASCADE',
-    },
-    user_id: {
-      type: DataTypes.BIGINT,
-      allowNull: false,
-      references: {
-        model: 'Users',
-        key: 'id',
-      },
-      onDelete: 'CASCADE',
-    },
-  }, {
-    tableName: 'MeetingParticipants',
-    timestamps: false,
-    indexes: [
-      {
-        unique: true,
-        fields: ['meeting_id', 'user_id'],
-      },
-    ],
-  });
 
-  return MeetingParticipant;
-};
+const { DataTypes } = require('sequelize');
+const sequelize = require('../config/sequelize');
+const Meeting = require('./Meeting');
+const User = require('./User');
+
+const MeetingParticipant = sequelize.define('MeetingParticipant', {}, {
+  tableName: 'MeetingParticipants',
+  timestamps: true,
+});
+
+MeetingParticipant.belongsTo(Meeting, { foreignKey: 'meeting_id', as: 'meeting' });
+Meeting.hasMany(MeetingParticipant, { foreignKey: 'meeting_id', as: 'participants' });
+
+MeetingParticipant.belongsTo(User, { foreignKey: 'user_id', as: 'user' });
+User.hasMany(MeetingParticipant, { foreignKey: 'user_id', as: 'meetingParticipations' });
+
+module.exports = MeetingParticipant;
diff --git a/models/message.js b/models/message.js
deleted file mode 100644
index e69de29..0000000
diff --git a/models/schedule.js b/models/schedule.js
index e32af03..215e272 100644
--- a/models/schedule.js
+++ b/models/schedule.js
@@ -1,48 +1,28 @@
 // models/Schedule.js
-module.exports = (sequelize, DataTypes) => {
-  const Schedule = sequelize.define('Schedule', {
-    id: {
-      type: DataTypes.BIGINT,
-      primaryKey: true,
-      autoIncrement: true,
-    },
-    user_id: {
-      type: DataTypes.BIGINT,
-      allowNull: false,
-      references: {
-        model: 'Users',
-        key: 'id',
-      },
-      onDelete: 'CASCADE',
-    },
-    title: {
-      type: DataTypes.STRING,
-      allowNull: false,
-    },
-    start_time: {
-      type: DataTypes.DATE,
-      allowNull: false,
-    },
-    end_time: {
-      type: DataTypes.DATE,
-      allowNull: false,
-      validate: {
-        isAfterStart(value) {
-          if (value <= this.start_time) {
-            throw new Error('end_time은 start_time 이후여야 합니다.');
-          }
-        },
-      },
-    },
-  }, {
-    tableName: 'Schedules',
-    timestamps: false,
-    indexes: [
-      {
-        fields: ['user_id'],
-      },
-    ],
-  });
 
-  return Schedule;
-};
+const { DataTypes } = require('sequelize');
+const sequelize = require('../config/sequelize');
+const User = require('./User');
+
+const Schedule = sequelize.define('Schedule', {
+  title: {
+    type: DataTypes.STRING,
+    allowNull: false,
+  },
+  start_time: {
+    type: DataTypes.DATE,
+    allowNull: false,
+  },
+  end_time: {
+    type: DataTypes.DATE,
+    allowNull: false,
+  },
+}, {
+  tableName: 'Schedules',
+  timestamps: true,
+});
+
+Schedule.belongsTo(User, { foreignKey: 'user_id', as: 'user' });
+User.hasMany(Schedule, { foreignKey: 'user_id', as: 'schedules' });
+
+module.exports = Schedule;
diff --git a/models/user.js b/models/user.js
index a7921ee..fbf92c1 100644
--- a/models/user.js
+++ b/models/user.js
@@ -1,42 +1,24 @@
 // models/User.js
-module.exports = (sequelize, DataTypes) => {
-  const User = sequelize.define('User', {
-    id: {
-      type: DataTypes.BIGINT,
-      primaryKey: true,
-      autoIncrement: true,
-    },
-    name: {
-      type: DataTypes.STRING,
-      allowNull: false,
-    },
-    email: {
-      type: DataTypes.STRING,
-      allowNull: false,
-      unique: true,
-      validate: {
-        isEmail: true, // 이메일 형식 검증
-      },
-    },
-    invite_code: {
-      type: DataTypes.UUID,
-      defaultValue: DataTypes.UUIDV4, // 자동으로 UUID 생성
-      allowNull: false,
-      unique: true,
-    },
-    created_at: {
-      type: DataTypes.DATE,
-      defaultValue: DataTypes.NOW,
-    },
-    // updated_at 추가 (필요 시)
-    updated_at: {
-      type: DataTypes.DATE,
-      defaultValue: DataTypes.NOW,
+
+const { DataTypes } = require('sequelize');
+const sequelize = require('../config/sequelize'); // sequelize 인스턴스 경로에 맞게 수정하세요.
+
+const User = sequelize.define('User', {
+  name: {
+    type: DataTypes.STRING, // VARCHAR
+    allowNull: false,
+  },
+  email: {
+    type: DataTypes.STRING, // VARCHAR
+    allowNull: false,
+    unique: true,
+    validate: {
+      isEmail: true,
     },
-  }, {
-    tableName: 'Users',
-    timestamps: false, // created_at과 updated_at을 수동으로 관리
-  });
+  },
+}, {
+  tableName: 'Users',
+  timestamps: true, // createdAt과 updatedAt 자동 관리
+});
 
-  return User;
-};
+module.exports = User;
diff --git a/package.json b/package.json
index e756213..fad438c 100644
--- a/package.json
+++ b/package.json
@@ -1,8 +1,9 @@
 {
   "name": "webback",
   "version": "1.0.0",
-  "main": "index.js",
+  "main": "app.js",
   "scripts": {
+    "start": "nodemon app",
     "test": "echo \"Error: no test specified\" && exit 1"
   },
   "repository": {
diff --git a/schemas/ChatRoomParticipants.js b/schemas/ChatRoomParticipants.js
index ad6f74d..09279d1 100644
--- a/schemas/ChatRoomParticipants.js
+++ b/schemas/ChatRoomParticipants.js
@@ -1,25 +1,23 @@
-const ChatRoomParticipantSchema = new Schema({
+// schemas/ChatRoomParticipant.js
+
+const mongoose = require('mongoose');
+
+const ChatRoomParticipantSchema = new mongoose.Schema({
   chat_room_id: {
-    type: mongoose.Schema.Types.BigInt,
+    type: mongoose.Schema.Types.ObjectId,
     ref: 'ChatRoom',
     required: true,
   },
   user_id: {
-    type: mongoose.Schema.Types.BigInt,
-    ref: 'User',
+    type: Number, // SQL의 Users 테이블 ID 참조
     required: true,
   },
-  joined_at: {
-    type: Date,
-    default: Date.now,
-  },
   left_at: {
     type: Date,
     default: null,
   },
+}, {
+  timestamps: { createdAt: 'joined_at', updatedAt: false },
 });
 
-// 복합 인덱스 생성하여 중복 참여 방지
-ChatRoomParticipantSchema.index({ chat_room_id: 1, user_id: 1 }, { unique: true });
-
 module.exports = mongoose.model('ChatRoomParticipant', ChatRoomParticipantSchema);
diff --git a/schemas/ChatRooms.js b/schemas/ChatRooms.js
index 86e3648..f4a963e 100644
--- a/schemas/ChatRooms.js
+++ b/schemas/ChatRooms.js
@@ -1,14 +1,14 @@
+// schemas/ChatRoom.js
+
 const mongoose = require('mongoose');
-const { Schema } = mongoose;
 
-const ChatRoomSchema = new Schema({
+const ChatRoomSchema = new mongoose.Schema({
   name: {
     type: String,
     required: true,
   },
   meeting_id: {
-    type: mongoose.Schema.Types.BigInt, // 관계형 DB의 Meetings.id와 연동
-    ref: 'Meeting',
+    type: Number, // SQL의 Meetings 테이블 ID 참조
     default: null,
   },
   type: {
@@ -17,18 +17,11 @@ const ChatRoomSchema = new Schema({
     required: true,
   },
   created_by: {
-    type: mongoose.Schema.Types.BigInt, // 관계형 DB의 Users.id와 연동
-    ref: 'User',
+    type: Number, // SQL의 Users 테이블 ID 참조
     required: true,
   },
-  created_at: {
-    type: Date,
-    default: Date.now,
-  },
-  updated_at: {
-    type: Date,
-    default: Date.now,
-  },
+}, {
+  timestamps: true, // createdAt, updatedAt 자동 관리
 });
 
 module.exports = mongoose.model('ChatRoom', ChatRoomSchema);
diff --git a/schemas/Messages.js b/schemas/Messages.js
index 6662897..7c59dcf 100644
--- a/schemas/Messages.js
+++ b/schemas/Messages.js
@@ -1,25 +1,23 @@
-const MessageSchema = new Schema({
+// schemas/Message.js
+
+const mongoose = require('mongoose');
+
+const MessageSchema = new mongoose.Schema({
   chat_room_id: {
-    type: mongoose.Schema.Types.BigInt,
+    type: mongoose.Schema.Types.ObjectId,
     ref: 'ChatRoom',
     required: true,
   },
   sender_id: {
-    type: mongoose.Schema.Types.BigInt,
-    ref: 'User',
+    type: Number, // SQL의 Users 테이블 ID 참조
     required: true,
   },
   message: {
     type: String,
     required: true,
   },
-  sent_at: {
-    type: Date,
-    default: Date.now,
-  },
+}, {
+  timestamps: { createdAt: 'sent_at', updatedAt: false },
 });
 
-// 인덱스 추가하여 조회 성능 향상
-MessageSchema.index({ chat_room_id: 1, sent_at: -1 });
-
 module.exports = mongoose.model('Message', MessageSchema);
diff --git a/schemas/index.js b/schemas/index.js
deleted file mode 100644
index 27a1c42..0000000
--- a/schemas/index.js
+++ /dev/null
@@ -1,32 +0,0 @@
-const mongoose = require('mongoose');
-
-// MongoDB 연결
-mongoose.connect('mongodb://localhost:27017/chatDB', {
-  useNewUrlParser: true,
-  useUnifiedTopology: true,
-})
-.then(() => console.log('MongoDB 연결 성공'))
-.catch(err => console.error('MongoDB 연결 실패:', err));
-
-// 위에서 정의한 ChatRoom, ChatRoomParticipant, Message 모델을 사용
-const ChatRoom = require('./models/ChatRoom');
-const ChatRoomParticipant = require('./models/ChatRoomParticipant');
-const Message = require('./models/Message');
-
-// 예시: 채팅방 생성
-async function createChatRoom(data) {
-  try {
-    const chatRoom = new ChatRoom(data);
-    await chatRoom.save();
-    console.log('채팅방 생성 완료:', chatRoom);
-  } catch (error) {
-    console.error('채팅방 생성 실패:', error);
-  }
-}
-
-// 예시 함수 호출
-createChatRoom({
-  name: '일반 채팅방',
-  type: 'OPEN',
-  created_by: 1, // 관계형 DB의 Users.id와 일치
-});
diff --git a/sync.js b/sync.js
new file mode 100644
index 0000000..6072117
--- /dev/null
+++ b/sync.js
@@ -0,0 +1,26 @@
+// sync.js
+
+require('dotenv').config(); // 환경 변수 로드
+
+const sequelize = require('./config/sequelize');
+const model=require('./models'); // 모델들을 가져옴 (사이드 이펙트로 모델들이 등록됨)
+
+async function syncDatabase() {
+  try {
+    // 데이터베이스 연결 테스트
+    await sequelize.authenticate();
+    console.log('데이터베이스 연결 성공.');
+
+    // 모든 모델 동기화
+    await sequelize.sync({ force: true });
+    console.log('모든 모델이 성공적으로 동기화되었습니다.');
+
+    // 연결 종료
+    await sequelize.close();
+    console.log('데이터베이스 연결이 종료되었습니다.');
+  } catch (error) {
+    console.error('데이터베이스 연결 실패:', error);
+  }
+}
+
+syncDatabase();
-- 
GitLab