mirror of
https://github.com/labring/FastGPT.git
synced 2025-07-23 21:13:50 +00:00

* Dataset collection forbid (#1885) * perf: tool call support same id * feat: collection forbid * feat: collection forbid * Inheritance Permission for apps (#1897) * feat: app schema define chore: references of authapp * feat: authApp method inheritance * feat: create and update api * feat: update * feat: inheritance Permission controller for app. * feat: abstract version of inheritPermission * feat: ancestorId for apps * chore: update app * fix: inheritPermission abstract version * feat: update folder defaultPermission * feat: app update api * chore: inheritance frontend * chore: app list api * feat: update defaultPermission in app deatil * feat: backend api finished * feat: app inheritance permission fe * fix: app update defaultpermission causes collaborator miss * fix: ts error * chore: adjust the codes * chore: i18n chore: i18n * chore: fe adjust and i18n * chore: adjust the code * feat: resume api; chore: rewrite update api and inheritPermission methods * chore: something * chore: fe code adjusting * feat: frontend adjusting * chore: fe code adjusting * chore: adjusting the code * perf: fe loading * format * Inheritance fix (#1908) * fix: SlideCard * fix: authapp did not return parent app for inheritance app * fix: fe adjusting * feat: fe adjusing * perf: inherit per ux * doc * fix: ts errors (#1916) * perf: inherit permission * fix: permission inherit * Workflow type (#1938) * perf: workflow type tmp workflow perf: workflow type feat: custom field config * perf: dynamic input * perf: node classify * perf: node classify * perf: node classify * perf: node classify * fix: workflow custom input * feat: text editor and customFeedback move to basic nodes * feat: community system plugin * fix: ts * feat: exprEval plugin * perf: workflow type * perf: plugin important * fix: default templates * perf: markdown hr css * lock * perf: fetch url * perf: new plugin version * fix: chat histories update * fix: collection paths invalid * perf: app card ui --------- Co-authored-by: Finley Ge <32237950+FinleyGe@users.noreply.github.com>
66 lines
1.6 KiB
TypeScript
66 lines
1.6 KiB
TypeScript
import { addLog } from '../system/log';
|
|
import { connectionMongo } from './index';
|
|
import type { Mongoose } from 'mongoose';
|
|
|
|
const maxConnecting = Math.max(30, Number(process.env.DB_MAX_LINK || 20));
|
|
|
|
/**
|
|
* connect MongoDB and init data
|
|
*/
|
|
export async function connectMongo({
|
|
beforeHook,
|
|
afterHook
|
|
}: {
|
|
beforeHook?: () => any;
|
|
afterHook?: () => Promise<any>;
|
|
}): Promise<Mongoose> {
|
|
if (connectionMongo.connection.readyState !== 0) {
|
|
return connectionMongo;
|
|
}
|
|
|
|
beforeHook && beforeHook();
|
|
|
|
console.log('mongo start connect');
|
|
try {
|
|
connectionMongo.set('strictQuery', true);
|
|
|
|
connectionMongo.connection.on('error', (error) => {
|
|
console.log('mongo error', error);
|
|
connectionMongo.disconnect();
|
|
});
|
|
connectionMongo.connection.on('disconnected', () => {
|
|
console.log('mongo disconnected');
|
|
});
|
|
|
|
await connectionMongo.connect(process.env.MONGODB_URI as string, {
|
|
bufferCommands: true,
|
|
maxConnecting: maxConnecting,
|
|
maxPoolSize: maxConnecting,
|
|
minPoolSize: 20,
|
|
connectTimeoutMS: 60000,
|
|
waitQueueTimeoutMS: 60000,
|
|
socketTimeoutMS: 60000,
|
|
maxIdleTimeMS: 300000,
|
|
retryWrites: true,
|
|
retryReads: true
|
|
|
|
// readPreference: 'secondaryPreferred',
|
|
// readConcern: { level: 'local' },
|
|
// writeConcern: { w: 'majority', j: true }
|
|
});
|
|
|
|
console.log('mongo connected');
|
|
} catch (error) {
|
|
connectionMongo.disconnect();
|
|
addLog.error('mongo connect error', error);
|
|
}
|
|
|
|
try {
|
|
afterHook && (await afterHook());
|
|
} catch (error) {
|
|
addLog.error('mongo connect after hook error', error);
|
|
}
|
|
|
|
return connectionMongo;
|
|
}
|