mirror of
https://github.com/20kaushik02/spotify-manager.git
synced 2025-12-06 08:04:06 +00:00
back to redis (gotta cache API calls)
This commit is contained in:
parent
ba8982086b
commit
5a8611afbc
@ -6,3 +6,5 @@ DB_PASSWD = your_database_password
|
||||
DB_NAME = your_database_name
|
||||
DB_HOST = 127.0.0.1
|
||||
DB_PORT = your_database_port
|
||||
REDIS_HOST = 127.0.0.1
|
||||
REDIS_PORT = 6379
|
||||
|
||||
@ -142,7 +142,7 @@ const refresh = async (req, res) => {
|
||||
const logout = async (req, res) => {
|
||||
try {
|
||||
const delSession = req.session.destroy((error) => {
|
||||
if (error) {
|
||||
if(Object.keys(error).length) {
|
||||
res.status(500).send({ message: "Internal Server Error" });
|
||||
logger.error("Error while logging out", { error });
|
||||
return;
|
||||
|
||||
28
index.js
28
index.js
@ -7,7 +7,9 @@ const session = require("express-session");
|
||||
const cors = require("cors");
|
||||
const cookieParser = require("cookie-parser");
|
||||
const helmet = require("helmet");
|
||||
const SQLiteStore = require("connect-sqlite3")(session);
|
||||
|
||||
const { createClient } = require('redis');
|
||||
const { RedisStore } = require("connect-redis");
|
||||
|
||||
const { sessionName } = require("./constants");
|
||||
const db = require("./models");
|
||||
@ -22,16 +24,29 @@ const app = express();
|
||||
// Enable this if you run behind a proxy (e.g. nginx)
|
||||
app.set("trust proxy", process.env.TRUST_PROXY);
|
||||
|
||||
// Configure SQLite store file
|
||||
const sqliteStore = new SQLiteStore({
|
||||
table: "session_store",
|
||||
db: "spotify-manager.db"
|
||||
// Configure Redis client and connect
|
||||
const redisClient = createClient({
|
||||
socket: {
|
||||
host: process.env.REDIS_HOST,
|
||||
port: process.env.REDIS_PORT,
|
||||
}
|
||||
});
|
||||
|
||||
redisClient.connect()
|
||||
.then(() => {
|
||||
logger.info("Connected to Redis store");
|
||||
})
|
||||
.catch((error) => {
|
||||
logger.error("Redis connection error", { error });
|
||||
cleanupFunc();
|
||||
});
|
||||
|
||||
const redisStore = new RedisStore({ client: redisClient });
|
||||
|
||||
// Configure session middleware
|
||||
app.use(session({
|
||||
name: sessionName,
|
||||
store: sqliteStore,
|
||||
store: redisStore,
|
||||
secret: process.env.SESSION_SECRET,
|
||||
resave: false,
|
||||
saveUninitialized: false,
|
||||
@ -103,6 +118,7 @@ const cleanupFunc = (signal) => {
|
||||
logger.debug(`${signal} signal received, shutting down now...`);
|
||||
|
||||
Promise.allSettled([
|
||||
redisClient.disconnect,
|
||||
db.sequelize.close(),
|
||||
util.promisify(server.close),
|
||||
]).then(() => {
|
||||
|
||||
@ -16,10 +16,10 @@ const isAuthenticated = (req, res, next) => {
|
||||
};
|
||||
next();
|
||||
} else {
|
||||
const delSession = req.session.destroy((err) => {
|
||||
if (err) {
|
||||
const delSession = req.session.destroy((error) => {
|
||||
if (Object.keys(error).length) {
|
||||
res.status(500).send({ message: "Internal Server Error" });
|
||||
logger.error("session.destroy", { err });
|
||||
logger.error("session.destroy", { error });
|
||||
return;
|
||||
} else {
|
||||
res.clearCookie(sessionName);
|
||||
|
||||
1723
package-lock.json
generated
1723
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -22,7 +22,7 @@
|
||||
"dependencies": {
|
||||
"axios": "^1.7.9",
|
||||
"axios-rate-limit": "^1.4.0",
|
||||
"connect-sqlite3": "^0.9.15",
|
||||
"connect-redis": "^8.0.1",
|
||||
"cookie-parser": "^1.4.7",
|
||||
"cors": "^2.8.5",
|
||||
"dotenv-flow": "^4.1.0",
|
||||
@ -31,6 +31,7 @@
|
||||
"express-validator": "^7.2.0",
|
||||
"helmet": "^8.0.0",
|
||||
"pg": "^8.13.1",
|
||||
"redis": "^4.7.0",
|
||||
"sequelize": "^6.37.5",
|
||||
"serializr": "^3.0.3",
|
||||
"winston": "^3.17.0"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user