eletrotupi / tcc/ api/src/create-app.tsa1fd0524d340f602c388a3afd9383d95b2b8cfa9
886 B | 36 lines Raw
1
import express from 'express';
2
import cors from 'cors';
3
import morgan from 'morgan';
4
import userRouter from '@app/routes/users';
5
import authRouter from '@app/routes/auth';
6
import { errorHandler } from '@app/middleware/errorHandler';
7
import { PrismaClient } from '@prisma/client';
8

9
export function createApp(prismaClient?: PrismaClient) {
10
  const app = express();
11

12
  // Configure CORS
13
  app.use(cors({
14
    origin: process.env.FRONTEND_URL || '*',
15
    credentials: true
16
  }));
17

18
  app.use(express.json());
19

20
  // Only use morgan in non-test environments
21
  if (process.env.NODE_ENV !== 'test') {
22
    app.use(morgan('combined'));
23
  }
24

25
  // Make prisma client available to routes if provided (for testing)
26
  if (prismaClient) {
27
    app.locals.prisma = prismaClient;
28
  }
29

30
  app.use("/users", userRouter);
31
  app.use("/auth", authRouter);
32

33
  app.use(errorHandler); // always last
34

35
  return app;
36
}