Files
Kalista Payne fb2eaa3950 Move user deletion to worker (#15586)
* WIP(delete): remove business logic from controller

* fix(deletion): handle group leave logic on app server still

* fix(lint): unused import

* fix(import): bracket syntax

* fix(test): adapt test for worker flow

* fix(deletion): update delete/feedback form copy

* fix(text): don't break to new paragraph about Gems

* fix(deletion): remove orphaned chat messages

* Revert "fix(deletion): handle group leave logic on app server still"

This reverts commit 9db541f4c3.

* fix(tests): remove tests
These can potentially be tested in the worker's suite? They target functionality that the group leave route handles within the deletion flow

* fix(lint): no-undef

* refactor redis setup into own file and use ioredis

* use bullmq directly to schedule jobs

* add space

* add key prefix

* add semicolon

* fix(jobs): update redis package

---------

Co-authored-by: Phillip Thelen <phillip@habitica.com>
2026-05-26 17:43:49 -05:00

52 lines
1.2 KiB
JavaScript

import nconf from 'nconf';
import express from 'express';
import http from 'http';
import mongoose from 'mongoose';
import redis from 'ioredis';
import logger from './libs/logger';
// Setup translations
// Must come before attach middlewares so Mongoose validations can use translations
import './libs/i18n';
import attachMiddlewares from './middlewares/index';
// Load config files
import connectToMongoDB from './libs/mongoose';
import './libs/setupPassport';
import './libs/setupFirebase';
// Load some schemas & models
import './models/challenge';
import './models/group';
import './models/user';
import SERVER_STATUS from './libs/serverStatus';
connectToMongoDB();
const server = http.createServer();
const app = express();
process.on('SIGTERM', async () => {
console.log('SIGTERM signal received: closing HTTP server');
server.close(async () => {
await mongoose.disconnect();
if (redis.quit) {
await redis.quit();
}
process.exit(0);
});
});
app.set('port', nconf.get('PORT'));
attachMiddlewares(app, server);
server.on('request', app);
server.listen(app.get('port'), () => {
logger.info(`Express server listening on port ${app.get('port')}`);
SERVER_STATUS.EXPRESS = true;
});
export default server;