Repository navigation
Expand file tree
/
Copy pathindex.js
More file actions
88 lines (77 loc) · 2.49 KB
/
Copy pathindex.js
File metadata and controls
88 lines (77 loc) · 2.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
import express from "express";
import cors from "cors";
import session from "express-session";
import dotenv from "dotenv";
import db from "./config/Database.js";
import SequelizeStore from "connect-session-sequelize";
import Admin from "./models/AdminModel.js";
import BahanBakuModel from "./models/BahanBakuModel.js";
import KemasanModel from "./models/KemasanModel.js";
import OverheadModel from "./models/OverheadModel.js";
import ProdukBahanBakuModel from "./models/ProdukBahanBakuModel.js";
import ProdukModel from "./models/ProdukModel.js";
//route
import AuthRoute from "./routes/AuthRoute.js";
import AdminRoute from "./routes/AdminRoute.js";
import BahanBakuRoute from "./routes/BahanBakuRoute.js";
import ProdukRoute from "./routes/ProdukRoute.js";
import uploadRoute from "./routes/uploadRoute.js"; // Import route baru
//Test Connection Cpanel
dotenv.config();
const app = express();
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
const sessionStore = SequelizeStore(session.Store);
const store = new sessionStore({
db: db,
expiration: 120 * 60 * 1000,
checkExpirationInterval: 120 * 60 * 1000,
});
// Immediately Invoked Function Expression (IIFE) to handle database operations
(async function () {
try {
await db.authenticate(); // Check connection to the database
console.log("Database connected...");
await db.sync({ alter: true });
console.log("All models were synchronized successfully.");
// Sync models
await ProdukModel.sync({ alter: true });
await Admin.sync({ alter: true });
await BahanBakuModel.sync({ alter: true });
await ProdukBahanBakuModel.sync({ alter: true });
await OverheadModel.sync({ alter: true });
await KemasanModel.sync({ alter: true });
console.log("Database synced...");
} catch (error) {
console.error("Unable to connect to the database or sync tables:", error);
}
})();
app.use(
session({
secret: process.env.SESS_SECRET,
resave: false,
saveUninitialized: false,
store: store,
cookie: {
maxAge: 120 * 60 * 1000,
secure: "auto",
},
})
);
app.use(
cors({
credentials: true,
origin: "http://localhost:3000",
})
);
// Define your routes after middleware
app.use(AuthRoute);
app.use(AdminRoute);
app.use(BahanBakuRoute);
app.use(ProdukRoute);
app.use("/uploads", express.static("uploads")); // Untuk melayani file gambar yang diunggah
app.use(uploadRoute);
store.sync();
app.listen(process.env.APP_PORT, () => {
console.log("Server up and running...");
});