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_NAME = your_database_name
|
||||||
DB_HOST = 127.0.0.1
|
DB_HOST = 127.0.0.1
|
||||||
DB_PORT = your_database_port
|
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) => {
|
const logout = async (req, res) => {
|
||||||
try {
|
try {
|
||||||
const delSession = req.session.destroy((error) => {
|
const delSession = req.session.destroy((error) => {
|
||||||
if (error) {
|
if(Object.keys(error).length) {
|
||||||
res.status(500).send({ message: "Internal Server Error" });
|
res.status(500).send({ message: "Internal Server Error" });
|
||||||
logger.error("Error while logging out", { error });
|
logger.error("Error while logging out", { error });
|
||||||
return;
|
return;
|
||||||
|
|||||||
28
index.js
28
index.js
@ -7,7 +7,9 @@ const session = require("express-session");
|
|||||||
const cors = require("cors");
|
const cors = require("cors");
|
||||||
const cookieParser = require("cookie-parser");
|
const cookieParser = require("cookie-parser");
|
||||||
const helmet = require("helmet");
|
const helmet = require("helmet");
|
||||||
const SQLiteStore = require("connect-sqlite3")(session);
|
|
||||||
|
const { createClient } = require('redis');
|
||||||
|
const { RedisStore } = require("connect-redis");
|
||||||
|
|
||||||
const { sessionName } = require("./constants");
|
const { sessionName } = require("./constants");
|
||||||
const db = require("./models");
|
const db = require("./models");
|
||||||
@ -22,16 +24,29 @@ const app = express();
|
|||||||
// Enable this if you run behind a proxy (e.g. nginx)
|
// Enable this if you run behind a proxy (e.g. nginx)
|
||||||
app.set("trust proxy", process.env.TRUST_PROXY);
|
app.set("trust proxy", process.env.TRUST_PROXY);
|
||||||
|
|
||||||
// Configure SQLite store file
|
// Configure Redis client and connect
|
||||||
const sqliteStore = new SQLiteStore({
|
const redisClient = createClient({
|
||||||
table: "session_store",
|
socket: {
|
||||||
db: "spotify-manager.db"
|
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
|
// Configure session middleware
|
||||||
app.use(session({
|
app.use(session({
|
||||||
name: sessionName,
|
name: sessionName,
|
||||||
store: sqliteStore,
|
store: redisStore,
|
||||||
secret: process.env.SESSION_SECRET,
|
secret: process.env.SESSION_SECRET,
|
||||||
resave: false,
|
resave: false,
|
||||||
saveUninitialized: false,
|
saveUninitialized: false,
|
||||||
@ -103,6 +118,7 @@ const cleanupFunc = (signal) => {
|
|||||||
logger.debug(`${signal} signal received, shutting down now...`);
|
logger.debug(`${signal} signal received, shutting down now...`);
|
||||||
|
|
||||||
Promise.allSettled([
|
Promise.allSettled([
|
||||||
|
redisClient.disconnect,
|
||||||
db.sequelize.close(),
|
db.sequelize.close(),
|
||||||
util.promisify(server.close),
|
util.promisify(server.close),
|
||||||
]).then(() => {
|
]).then(() => {
|
||||||
|
|||||||
@ -16,10 +16,10 @@ const isAuthenticated = (req, res, next) => {
|
|||||||
};
|
};
|
||||||
next();
|
next();
|
||||||
} else {
|
} else {
|
||||||
const delSession = req.session.destroy((err) => {
|
const delSession = req.session.destroy((error) => {
|
||||||
if (err) {
|
if (Object.keys(error).length) {
|
||||||
res.status(500).send({ message: "Internal Server Error" });
|
res.status(500).send({ message: "Internal Server Error" });
|
||||||
logger.error("session.destroy", { err });
|
logger.error("session.destroy", { error });
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
res.clearCookie(sessionName);
|
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": {
|
"dependencies": {
|
||||||
"axios": "^1.7.9",
|
"axios": "^1.7.9",
|
||||||
"axios-rate-limit": "^1.4.0",
|
"axios-rate-limit": "^1.4.0",
|
||||||
"connect-sqlite3": "^0.9.15",
|
"connect-redis": "^8.0.1",
|
||||||
"cookie-parser": "^1.4.7",
|
"cookie-parser": "^1.4.7",
|
||||||
"cors": "^2.8.5",
|
"cors": "^2.8.5",
|
||||||
"dotenv-flow": "^4.1.0",
|
"dotenv-flow": "^4.1.0",
|
||||||
@ -31,6 +31,7 @@
|
|||||||
"express-validator": "^7.2.0",
|
"express-validator": "^7.2.0",
|
||||||
"helmet": "^8.0.0",
|
"helmet": "^8.0.0",
|
||||||
"pg": "^8.13.1",
|
"pg": "^8.13.1",
|
||||||
|
"redis": "^4.7.0",
|
||||||
"sequelize": "^6.37.5",
|
"sequelize": "^6.37.5",
|
||||||
"serializr": "^3.0.3",
|
"serializr": "^3.0.3",
|
||||||
"winston": "^3.17.0"
|
"winston": "^3.17.0"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user