Skip to content
Snippets Groups Projects
Select Git revision
  • 8f620abde2d36d8e3d1e39dfb06cb6f0af514ddf
  • main default protected
  • editUser
  • loadTests
  • fixTests
  • userhandling
  • updateEmbeddings
  • addRAGSources
  • testing
  • conversations
  • inputValidation
  • rag
  • chatting
  • userauth
14 results

app.js

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    app.js 2.11 KiB
    import express from 'express';
    import cookieParser from 'cookie-parser';
    import cors from 'cors';
    import { createRecord, dbConnection, findOneRecord } from './utils/handleDB.js';
    import { middlewareErrorHandler, middlewareUnknownRoute } from './utils/handleErrors.js';
    
    /**
     * establish DB connection
     */
    const db = dbConnection();
    
    // create superadmin on first run
    const isSuperAdminAvailable = await findOneRecord(User, { email: process.env.SUPERADMIN_EMAIL });
    if (!isSuperAdminAvailable) {
      const newSuperAdmin = await createRecord(User, {
        name: 'RAGChat Admin',
        username: 'superAdmin',
        email: process.env.SUPERADMIN_EMAIL,
        password: process.env.SUPERADMIN_PASSWORD,
        role: 4,
        verified: true
      });
      console.log(chalk.green('created superAdmin'));
    }
    
    /**
     * configure app
     */
    // create the app, which is an express instance
    const app = express();
    app.use(express.static('uploads'));
    
    // define where to run the app at
    // allow app to accept json as a body inside of requests
    app.use(express.json());
    // enable use cookie-parser
    app.use(cookieParser());
    
    // define frontUrl
    global.frontURL = process.env.FRONTEND_URL.split(',')[0];
    // turn origins into array
    const origins = process.env.FRONTEND_URL.split(',');
    // turn array items into regex
    for (let i = 0; i < origins.length; i++) {
      origins[i] = new RegExp(origins[i]);
    }
    // combine all cors options into object
    const corsOptions = {
      origin: origins,
      optionsSuccessStatus: 200, // some legacy browsers (IE11, various SmartTVs) choke on 20
      credentials: true,
    };
    // make use of cors options
    app.use(cors(corsOptions));
    
    
    /**
     * import routes
    */
    import usersRouter from './routes/users.js';
    import authRouter from './routes/auth.js';
    import aiRouter from './routes/ai.js';
    import embeddingsRouter from './routes/embeddings.js';
    import User from './models/User.js';
    import chalk from 'chalk';
    
    
    /**
     * use routes
    */
    app.use('/users', usersRouter);
    app.use('/auth', authRouter);
    app.use('/ai', aiRouter);
    app.use('/embeddings', embeddingsRouter);
    // 404
    app.all('*', middlewareUnknownRoute);
    // global error middleware
    app.use(middlewareErrorHandler);
    
    export default app;