mirror of
https://github.com/danny-avila/LibreChat.git
synced 2026-01-28 21:26:13 +01:00
WIP: pre-granular-permissions commit
feat: Add category and support contact fields to Agent schema and UI components
Revert "feat: Add category and support contact fields to Agent schema and UI components"
This reverts commit c43a52b4c9.
Fix: Update import for renderHook in useAgentCategories.spec.tsx
fix: Update icon rendering in AgentCategoryDisplay tests to use empty spans
refactor: Improve category synchronization logic and clean up AgentConfig component
refactor: Remove unused UI flow translations from translation.json
feat: agent marketplace features
🔐 feat: Granular Role-based Permissions + Entra ID Group Discovery (#7804)
55 lines
1.6 KiB
TypeScript
55 lines
1.6 KiB
TypeScript
import logger from '~/config/winston';
|
|
|
|
/**
|
|
* Checks if the connected MongoDB deployment supports transactions
|
|
* This requires a MongoDB replica set configuration
|
|
*
|
|
* @returns True if transactions are supported, false otherwise
|
|
*/
|
|
export const supportsTransactions = async (
|
|
mongoose: typeof import('mongoose'),
|
|
): Promise<boolean> => {
|
|
try {
|
|
const session = await mongoose.startSession();
|
|
try {
|
|
session.startTransaction();
|
|
|
|
await mongoose.connection.db?.collection('__transaction_test__').findOne({}, { session });
|
|
|
|
await session.abortTransaction();
|
|
logger.debug('MongoDB transactions are supported');
|
|
return true;
|
|
} catch (transactionError: unknown) {
|
|
logger.debug(
|
|
'MongoDB transactions not supported (transaction error):',
|
|
(transactionError as Error)?.message || 'Unknown error',
|
|
);
|
|
return false;
|
|
} finally {
|
|
await session.endSession();
|
|
}
|
|
} catch (error) {
|
|
logger.debug(
|
|
'MongoDB transactions not supported (session error):',
|
|
(error as Error)?.message || 'Unknown error',
|
|
);
|
|
return false;
|
|
}
|
|
};
|
|
|
|
/**
|
|
* Gets whether the current MongoDB deployment supports transactions
|
|
* Caches the result for performance
|
|
*
|
|
* @returns True if transactions are supported, false otherwise
|
|
*/
|
|
export const getTransactionSupport = async (
|
|
mongoose: typeof import('mongoose'),
|
|
transactionSupportCache: boolean | null,
|
|
): Promise<boolean> => {
|
|
let transactionsSupported = false;
|
|
if (transactionSupportCache === null) {
|
|
transactionsSupported = await supportsTransactions(mongoose);
|
|
}
|
|
return transactionsSupported;
|
|
};
|