Merge pull request #495 from getmaxun/connect-session
feat: migrate session storage to postgres
This commit is contained in:
@@ -28,6 +28,7 @@
|
|||||||
"body-parser": "^1.20.3",
|
"body-parser": "^1.20.3",
|
||||||
"buffer": "^6.0.3",
|
"buffer": "^6.0.3",
|
||||||
"bullmq": "^5.12.15",
|
"bullmq": "^5.12.15",
|
||||||
|
"connect-pg-simple": "^10.0.0",
|
||||||
"connect-redis": "^8.0.1",
|
"connect-redis": "^8.0.1",
|
||||||
"cookie-parser": "^1.4.6",
|
"cookie-parser": "^1.4.6",
|
||||||
"cors": "^2.8.5",
|
"cors": "^2.8.5",
|
||||||
@@ -103,6 +104,7 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@types/connect-pg-simple": "^7.0.3",
|
||||||
"@types/cookie-parser": "^1.4.7",
|
"@types/cookie-parser": "^1.4.7",
|
||||||
"@types/express": "^4.17.13",
|
"@types/express": "^4.17.13",
|
||||||
"@types/js-cookie": "^3.0.6",
|
"@types/js-cookie": "^3.0.6",
|
||||||
|
|||||||
@@ -18,6 +18,8 @@ import { fork } from 'child_process';
|
|||||||
import { capture } from "./utils/analytics";
|
import { capture } from "./utils/analytics";
|
||||||
import swaggerUi from 'swagger-ui-express';
|
import swaggerUi from 'swagger-ui-express';
|
||||||
import swaggerSpec from './swagger/config';
|
import swaggerSpec from './swagger/config';
|
||||||
|
import connectPgSimple from 'connect-pg-simple';
|
||||||
|
import pg from 'pg';
|
||||||
|
|
||||||
import session from 'express-session';
|
import session from 'express-session';
|
||||||
|
|
||||||
@@ -30,13 +32,31 @@ app.use(cors({
|
|||||||
}));
|
}));
|
||||||
app.use(express.json());
|
app.use(express.json());
|
||||||
|
|
||||||
|
const { Pool } = pg;
|
||||||
|
const pool = new Pool({
|
||||||
|
user: process.env.DB_USER,
|
||||||
|
host: process.env.DB_HOST,
|
||||||
|
database: process.env.DB_NAME,
|
||||||
|
password: process.env.DB_PASSWORD,
|
||||||
|
port: process.env.DB_PORT ? parseInt(process.env.DB_PORT, 10) : undefined,
|
||||||
|
});
|
||||||
|
|
||||||
|
const PgSession = connectPgSimple(session);
|
||||||
|
|
||||||
app.use(
|
app.use(
|
||||||
session({
|
session({
|
||||||
|
store: new PgSession({
|
||||||
|
pool: pool,
|
||||||
|
tableName: 'session',
|
||||||
|
createTableIfMissing: true,
|
||||||
|
}),
|
||||||
secret: 'mx-session',
|
secret: 'mx-session',
|
||||||
resave: false, // Do not resave the session if it hasn't changed
|
resave: false, // Do not resave the session if it hasn't changed
|
||||||
saveUninitialized: true, // Save new sessions
|
saveUninitialized: true, // Save new sessions
|
||||||
cookie: { secure: false }, // Set to true if using HTTPS
|
cookie: {
|
||||||
|
secure: false, // Set to true if using HTTPS
|
||||||
|
maxAge: 24 * 60 * 60 * 1000, // 1-day session expiration
|
||||||
|
},
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -160,6 +180,14 @@ process.on('SIGINT', async () => {
|
|||||||
console.error('Error updating runs:', error);
|
console.error('Error updating runs:', error);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
console.log('Closing PostgreSQL connection pool...');
|
||||||
|
await pool.end();
|
||||||
|
console.log('PostgreSQL connection pool closed');
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error closing PostgreSQL connection pool:', error);
|
||||||
|
}
|
||||||
|
|
||||||
if (!isProduction) {
|
if (!isProduction) {
|
||||||
if (workerProcess) workerProcess.kill();
|
if (workerProcess) workerProcess.kill();
|
||||||
if (recordingWorkerProcess) recordingWorkerProcess.kill();
|
if (recordingWorkerProcess) recordingWorkerProcess.kill();
|
||||||
|
|||||||
Reference in New Issue
Block a user