'use server'; import { runAuthenticatedAdminServerAction } from '@/auth'; import { testRedisConnection } from '@/platforms/redis'; import { testOpenAiConnection } from '@/platforms/openai'; import { testDatabaseConnection } from '@/platforms/postgres'; import { testStorageConnection } from '@/platforms/storage'; import { APP_CONFIGURATION } from '@/app/config'; const scanForError = ( shouldCheck: boolean, promise: () => Promise, ): Promise => shouldCheck ? promise() .then(() => '') .catch(error => error.message) : Promise.resolve(''); export const testConnectionsAction = async () => runAuthenticatedAdminServerAction(async () => { const { hasDatabase, hasStorageProvider, hasRedisStorage, isAiTextGenerationEnabled, } = APP_CONFIGURATION; const [ databaseError, storageError, redisError, aiError, ] = await Promise.all([ scanForError(hasDatabase, testDatabaseConnection), scanForError(hasStorageProvider, testStorageConnection), scanForError(hasRedisStorage, testRedisConnection), scanForError(isAiTextGenerationEnabled, testOpenAiConnection), ]); return { databaseError, storageError, redisError, aiError, }; });