Skip to content

Commit

Permalink
Fix: build 시 데이터베이스 에러 문제 해결 #165
Browse files Browse the repository at this point in the history
  • Loading branch information
mzeong committed Feb 18, 2024
1 parent 215371b commit 60a5c0e
Show file tree
Hide file tree
Showing 3 changed files with 79 additions and 39 deletions.
34 changes: 17 additions & 17 deletions src/app.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ dotenv.config();
import express, { Request, Response, NextFunction } from "express";
import cors from "cors";

// import db from "./models/index";
import db from "./models/index";
import { response } from "./config/response";
import { BaseError } from "./config/error";
import { status } from "./config/response.status";
Expand All @@ -23,14 +23,14 @@ import { healthRoute } from "./routes/health.route";
const app = express();

app.set("port", process.env.PORT || 3000);
// db.sequelize
// .sync({ force: false })
// .then(() => {
// console.log("데이터베이스 연결 성공");
// })
// .catch((err) => {
// console.error(err);
// });
db.sequelize
.sync({ force: false })
.then(() => {
console.log("데이터베이스 연결 성공");
})
.catch((err) => {
console.error(err);
});
app.use(cors());
app.use(express.static("public"));
app.use(express.json());
Expand All @@ -48,18 +48,18 @@ app.use("/reviews", reviewsRouter);
app.use("/health", healthRoute);

app.use((req: Request, res: Response, next: NextFunction) => {
const err = new BaseError(status.NOT_FOUND);
next(err);
const err = new BaseError(status.NOT_FOUND);
next(err);
});

app.use((err, req: Request, res: Response, next: NextFunction) => {
res.locals.message = err.message;
res.locals.err = process.env.NODE_ENV !== "production" ? err : {};
console.log(err);
const error = err instanceof BaseError ? err : new BaseError(status.INTERNAL_SERVER_ERROR);
res.status(error.data.status).send(response(error.data));
res.locals.message = err.message;
res.locals.err = process.env.NODE_ENV !== "production" ? err : {};
console.log(err);
const error = err instanceof BaseError ? err : new BaseError(status.INTERNAL_SERVER_ERROR);
res.status(error.data.status).send(response(error.data));
});

app.listen(app.get("port"), () => {
console.log(`Example app listening on port ${app.get("port")}`);
console.log(`Example app listening on port ${app.get("port")}`);
});
10 changes: 5 additions & 5 deletions src/config/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ dotenv.config();

export const config = {
development: {
username: process.env.DB_USERNAME || "root",
username: process.env.DB_USER_NAME || "root",
password: process.env.DB_PASSWORD,
database: process.env.DB_NAME || "database_development",
host: process.env.DB_HOST || "127.0.0.1",
Expand All @@ -17,10 +17,10 @@ export const config = {
dialect: "mysql",
},
production: {
username: "root",
password: null,
database: "database_production",
host: "127.0.0.1",
username: process.env.DB_USER_NAME || "root",
password: process.env.DB_PASSWORD,
database: process.env.DB_NAME || "database_production",
host: process.env.DB_HOST || "127.0.0.1",
dialect: "mysql",
},
};
74 changes: 57 additions & 17 deletions src/models/index.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,19 @@
import { Sequelize, Dialect } from "sequelize";
import fs from "fs";
import path from "path";
import { config as Config } from "../config/config";
const Bookmark = require("./bookmark.model");
const Comment = require("./comment.model");
const GameApply = require("./game-apply.model");
const Game = require("./game.model");
const GuestUser = require("./guest-user.model");
const Guest = require("./guest.model");
const Image = require("./image.model");
const Member = require("./member.model");
const Post = require("./post.model");
const Profile = require("./profile.model");
const TeamReview = require("./team-review.model");
const Team = require("./team.model");
const UserReview = require("./user-review.model");
const User = require("./user.model");

const env = process.env.NODE_ENV || "development";
const config = Config[env];
Expand All @@ -14,21 +26,49 @@ const sequelize = new Sequelize(config.database, config.username, config.passwor

db.sequelize = sequelize;

const basename = path.basename(__filename);
fs.readdirSync(__dirname)
.filter((file) => {
return file.indexOf(".") !== 0 && file !== basename && file.slice(-3) === ".ts";
})
.forEach((file) => {
const model = require(path.join(__dirname, file));
db[model.name] = model;
model.initiate(sequelize);
});
db.Bookmark = Bookmark;
db.Comment = Comment;
db.GameApply = GameApply;
db.Game = Game;
db.GuestUser = GuestUser;
db.Guest = Guest;
db.Image = Image;
db.Member = Member;
db.Post = Post;
db.Profile = Profile;
db.TeamReview = TeamReview;
db.Team = Team;
db.UserReview = UserReview;
db.User = User;

Object.keys(db).forEach((modelName) => {
if (db[modelName].associate) {
db[modelName].associate(db);
}
});
Bookmark.initiate(sequelize);
Comment.initiate(sequelize);
GameApply.initiate(sequelize);
Game.initiate(sequelize);
GuestUser.initiate(sequelize);
Guest.initiate(sequelize);
Image.initiate(sequelize);
Member.initiate(sequelize);
Post.initiate(sequelize);
Profile.initiate(sequelize);
TeamReview.initiate(sequelize);
Team.initiate(sequelize);
UserReview.initiate(sequelize);
User.initiate(sequelize);

Bookmark.associate(db);
Comment.associate(db);
GameApply.associate(db);
Game.associate(db);
GuestUser.associate(db);
Guest.associate(db);
Image.associate(db);
Member.associate(db);
Post.associate(db);
Profile.associate(db);
TeamReview.associate(db);
Team.associate(db);
UserReview.associate(db);
User.associate(db);

export default db;

0 comments on commit 60a5c0e

Please sign in to comment.