mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-18 01:10:14 +01:00
search: correctly register/export schema/models, also made IIFE
This commit is contained in:
parent
47a6cfcafd
commit
e25aa74d7b
1 changed files with 74 additions and 53 deletions
|
|
@ -1,70 +1,91 @@
|
||||||
const express = require('express');
|
const express = require('express');
|
||||||
const session = require('express-session')
|
const session = require('express-session');
|
||||||
const connectDb = require('../lib/db/connectDb');
|
const connectDb = require('../lib/db/connectDb');
|
||||||
const migrateDb = require('../lib/db/migrateDb');
|
const migrateDb = require('../lib/db/migrateDb');
|
||||||
|
const indexSync = require('../lib/db/indexSync');
|
||||||
const path = require('path');
|
const path = require('path');
|
||||||
const cors = require('cors');
|
const cors = require('cors');
|
||||||
const routes = require('./routes');
|
const routes = require('./routes');
|
||||||
const app = express();
|
const errorController = require('./controllers/errorController');
|
||||||
|
|
||||||
const port = process.env.PORT || 3080;
|
const port = process.env.PORT || 3080;
|
||||||
const host = process.env.HOST || 'localhost'
|
const host = process.env.HOST || 'localhost';
|
||||||
const userSystemEnabled = process.env.ENABLE_USER_SYSTEM || false
|
const userSystemEnabled = process.env.ENABLE_USER_SYSTEM || false;
|
||||||
const projectPath = path.join(__dirname, '..', '..', 'client');
|
const projectPath = path.join(__dirname, '..', '..', 'client');
|
||||||
connectDb().then(() => {
|
|
||||||
|
(async () => {
|
||||||
|
await connectDb();
|
||||||
console.log('Connected to MongoDB');
|
console.log('Connected to MongoDB');
|
||||||
migrateDb();
|
await migrateDb();
|
||||||
});
|
await indexSync();
|
||||||
|
|
||||||
app.use(cors());
|
const app = express();
|
||||||
app.use(express.json());
|
app.use(errorController);
|
||||||
app.use(express.static(path.join(projectPath, 'public')));
|
app.use(cors());
|
||||||
app.set('trust proxy', 1) // trust first proxy
|
app.use(express.json());
|
||||||
app.use(session({
|
app.use(express.static(path.join(projectPath, 'public')));
|
||||||
secret: 'chatgpt-clone-random-secrect',
|
app.set('trust proxy', 1); // trust first proxy
|
||||||
resave: false,
|
app.use(
|
||||||
saveUninitialized: true,
|
session({
|
||||||
}))
|
secret: 'chatgpt-clone-random-secrect',
|
||||||
|
resave: false,
|
||||||
|
saveUninitialized: true
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
/* chore: potential redirect error here, can only comment out this block;
|
/* chore: potential redirect error here, can only comment out this block;
|
||||||
comment back in if using auth routes i guess */
|
comment back in if using auth routes i guess */
|
||||||
// app.get('/', routes.authenticatedOrRedirect, function (req, res) {
|
// app.get('/', routes.authenticatedOrRedirect, function (req, res) {
|
||||||
// console.log(path.join(projectPath, 'public', 'index.html'));
|
// console.log(path.join(projectPath, 'public', 'index.html'));
|
||||||
// res.sendFile(path.join(projectPath, 'public', 'index.html'));
|
// res.sendFile(path.join(projectPath, 'public', 'index.html'));
|
||||||
// });
|
// });
|
||||||
|
|
||||||
app.get('/api/me', function (req, res) {
|
app.get('/api/me', function (req, res) {
|
||||||
if (userSystemEnabled) {
|
if (userSystemEnabled) {
|
||||||
const user = req?.session?.user
|
const user = req?.session?.user;
|
||||||
|
|
||||||
if (user)
|
if (user) res.send(JSON.stringify({ username: user?.username, display: user?.display }));
|
||||||
res.send(JSON.stringify({username: user?.username, display: user?.display}));
|
else res.send(JSON.stringify(null));
|
||||||
|
} else {
|
||||||
|
res.send(JSON.stringify({ username: 'anonymous_user', display: 'Anonymous User' }));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
app.use('/api/search', routes.authenticatedOr401, routes.search);
|
||||||
|
app.use('/api/ask', routes.authenticatedOr401, routes.ask);
|
||||||
|
app.use('/api/messages', routes.authenticatedOr401, routes.messages);
|
||||||
|
app.use('/api/convos', routes.authenticatedOr401, routes.convos);
|
||||||
|
app.use('/api/customGpts', routes.authenticatedOr401, routes.customGpts);
|
||||||
|
app.use('/api/prompts', routes.authenticatedOr401, routes.prompts);
|
||||||
|
app.use('/auth', routes.auth);
|
||||||
|
|
||||||
|
app.get('/api/models', function (req, res) {
|
||||||
|
const hasOpenAI = !!process.env.OPENAI_KEY;
|
||||||
|
const hasChatGpt = !!process.env.CHATGPT_TOKEN;
|
||||||
|
const hasBing = !!process.env.BING_TOKEN;
|
||||||
|
|
||||||
|
res.send(JSON.stringify({ hasOpenAI, hasChatGpt, hasBing }));
|
||||||
|
});
|
||||||
|
|
||||||
|
app.listen(port, host, () => {
|
||||||
|
if (host == '0.0.0.0')
|
||||||
|
console.log(
|
||||||
|
`Server listening on all interface at port ${port}. Use http://localhost:${port} to access it`
|
||||||
|
);
|
||||||
else
|
else
|
||||||
res.send(JSON.stringify(null));
|
console.log(
|
||||||
|
`Server listening at http://${host == '0.0.0.0' ? 'localhost' : host}:${port}`
|
||||||
|
);
|
||||||
|
});
|
||||||
|
})();
|
||||||
|
|
||||||
|
let messageCount = 0;
|
||||||
|
process.on('uncaughtException', (err) => {
|
||||||
|
// console.error('There was an uncaught error:', err.message);
|
||||||
|
if (err.message.includes('fetch failed')) {
|
||||||
|
if (messageCount === 0) console.error('Meilisearch error, search will be disabled');
|
||||||
|
messageCount++;
|
||||||
} else {
|
} else {
|
||||||
res.send(JSON.stringify({username: 'anonymous_user', display: 'Anonymous User'}));
|
process.exit(1);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
app.use('/api/search', routes.authenticatedOr401, routes.search);
|
|
||||||
app.use('/api/ask', routes.authenticatedOr401, routes.ask);
|
|
||||||
app.use('/api/messages', routes.authenticatedOr401, routes.messages);
|
|
||||||
app.use('/api/convos', routes.authenticatedOr401, routes.convos);
|
|
||||||
app.use('/api/customGpts', routes.authenticatedOr401, routes.customGpts);
|
|
||||||
app.use('/api/prompts', routes.authenticatedOr401, routes.prompts);
|
|
||||||
app.use('/auth', routes.auth);
|
|
||||||
|
|
||||||
|
|
||||||
app.get('/api/models', function (req, res) {
|
|
||||||
const hasOpenAI = !!process.env.OPENAI_KEY;
|
|
||||||
const hasChatGpt = !!process.env.CHATGPT_TOKEN;
|
|
||||||
const hasBing = !!process.env.BING_TOKEN;
|
|
||||||
|
|
||||||
res.send(JSON.stringify({ hasOpenAI, hasChatGpt, hasBing }));
|
|
||||||
});
|
|
||||||
|
|
||||||
app.listen(port, host, () => {
|
|
||||||
if (host=='0.0.0.0')
|
|
||||||
console.log(`Server listening on all interface at port ${port}. Use http://localhost:${port} to access it`);
|
|
||||||
else
|
|
||||||
console.log(`Server listening at http://${host=='0.0.0.0'?'localhost':host}:${port}`);
|
|
||||||
});
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue