Skip to content

Commit ca22f76

Browse files
authored
Merge pull request #3039 from Northeastern-Electric-Racing/Multitenancy-to-Develop
Forward MultitenancyChanges
2 parents ea4f0ea + 84f6625 commit ca22f76

31 files changed

+2609
-2132
lines changed
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
2+
name: Production Build
3+
4+
on:
5+
push:
6+
branches:
7+
- main
8+
- multitenancy
9+
10+
jobs:
11+
run-tests:
12+
runs-on: ubuntu-latest
13+
timeout-minutes: 15
14+
steps:
15+
- name: Checkout repository
16+
uses: actions/checkout@v3
17+
- name: Set up Node.js
18+
uses: actions/setup-node@v3
19+
with:
20+
node-version: 18.17.1
21+
cache: 'yarn'
22+
- name: Yarn Install
23+
run: yarn install
24+
- name: Run Tests
25+
run: yarn containerize

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM node:18.17.1
1+
FROM node:20
22
WORKDIR /base
33

44
COPY package.json tsconfig.build.json ./

src/backend/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# TO BE RUN FROM DOCKER COMPOSE. DO NOT RUN MANUALLY AS CONTEXT IS NOT SET CORRECTLY
2-
FROM node:18
2+
FROM node:20
33

44
WORKDIR /base
55

src/backend/index.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import organizationRouter from './src/routes/organizations.routes';
1919
import recruitmentRouter from './src/routes/recruitment.routes';
2020

2121
const app = express();
22+
2223
const port = process.env.PORT || 3001;
2324
const isProd = process.env.NODE_ENV === 'production';
2425

@@ -68,7 +69,7 @@ app.use('/cars', carsRouter);
6869
app.use('/organizations', organizationRouter);
6970
app.use('/recruitment', recruitmentRouter);
7071
app.use('/', (_req, res) => {
71-
res.json('Welcome to FinishLine');
72+
res.status(200).json('Welcome to FinishLine');
7273
});
7374

7475
// custom error handler middleware

src/backend/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
"@types/concat-stream": "^2.0.0",
1515
"@types/cookie-parser": "^1.4.3",
1616
"@types/cors": "^2.8.12",
17-
"@types/express": "^4.17.6",
17+
"@types/express": "^5.0.0",
1818
"@types/multer": "^1.4.7",
1919
"@types/nodemailer": "^6.4.0",
2020
"body-parser": "^1.19.0",
@@ -23,7 +23,7 @@
2323
"cors": "^2.8.5",
2424
"decimal.js": "^10.4.3",
2525
"dotenv": "^16.0.1",
26-
"express": "^4.17.1",
26+
"express": "^5.0.0",
2727
"express-jwt": "^7.7.5",
2828
"express-validator": "^6.14.2",
2929
"google-auth-library": "^8.1.1",

src/backend/src/controllers/cars.controllers.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ export default class CarsController {
66
try {
77
const cars = await CarsService.getAllCars(req.organization);
88

9-
return res.status(200).json(cars);
9+
res.status(200).json(cars);
1010
} catch (error: unknown) {
11-
return next(error);
11+
next(error);
1212
}
1313
}
1414

@@ -17,9 +17,9 @@ export default class CarsController {
1717
const { name } = req.body;
1818
const car = await CarsService.createCar(req.organization, req.currentUser, name);
1919

20-
return res.status(201).json(car);
20+
res.status(201).json(car);
2121
} catch (error: unknown) {
22-
return next(error);
22+
next(error);
2323
}
2424
}
2525
}

src/backend/src/controllers/change-requests.controllers.ts

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,18 @@ export default class ChangeRequestsController {
77
const { crId } = req.params;
88

99
const cr = await ChangeRequestsService.getChangeRequestByID(crId, req.organization);
10-
return res.status(200).json(cr);
10+
res.status(200).json(cr);
1111
} catch (error: unknown) {
12-
return next(error);
12+
next(error);
1313
}
1414
}
1515

1616
static async getAllChangeRequests(req: Request, res: Response, next: NextFunction) {
1717
try {
1818
const changeRequests = await ChangeRequestsService.getAllChangeRequests(req.organization);
19-
return res.status(200).json(changeRequests);
19+
res.status(200).json(changeRequests);
2020
} catch (error: unknown) {
21-
return next(error);
21+
next(error);
2222
}
2323
}
2424

@@ -33,9 +33,9 @@ export default class ChangeRequestsController {
3333
req.organization,
3434
psId
3535
);
36-
return res.status(200).json({ message: `Change request #${id} successfully reviewed.` });
36+
res.status(200).json({ message: `Change request #${id} successfully reviewed.` });
3737
} catch (error: unknown) {
38-
return next(error);
38+
next(error);
3939
}
4040
}
4141

@@ -55,9 +55,9 @@ export default class ChangeRequestsController {
5555
confirmDetails,
5656
req.organization
5757
);
58-
return res.status(200).json({ message: `Successfully created activation change request with id #${id}` });
58+
res.status(200).json({ message: `Successfully created activation change request with id #${id}` });
5959
} catch (error: unknown) {
60-
return next(error);
60+
next(error);
6161
}
6262
}
6363

@@ -73,9 +73,9 @@ export default class ChangeRequestsController {
7373
confirmDone,
7474
req.organization
7575
);
76-
return res.status(200).json({ message: `Successfully created stage gate request with id #${id}` });
76+
res.status(200).json({ message: `Successfully created stage gate request with id #${id}` });
7777
} catch (error: unknown) {
78-
return next(error);
78+
next(error);
7979
}
8080
}
8181

@@ -99,9 +99,9 @@ export default class ChangeRequestsController {
9999
projectProposedChanges,
100100
workPackageProposedChanges
101101
);
102-
return res.status(200).json(createdCR);
102+
res.status(200).json(createdCR);
103103
} catch (error: unknown) {
104-
return next(error);
104+
next(error);
105105
}
106106
}
107107

@@ -117,9 +117,9 @@ export default class ChangeRequestsController {
117117
scopeImpact,
118118
req.organization
119119
);
120-
return res.status(200).json({ message: `Successfully added proposed solution with id #${id}` });
120+
res.status(200).json({ message: `Successfully added proposed solution with id #${id}` });
121121
} catch (error: unknown) {
122-
return next(error);
122+
next(error);
123123
}
124124
}
125125

@@ -128,9 +128,9 @@ export default class ChangeRequestsController {
128128
const { crId } = req.params;
129129

130130
await ChangeRequestsService.deleteChangeRequest(req.currentUser, crId, req.organization);
131-
return res.status(200).json({ message: `Successfully deleted change request #${crId}` });
131+
res.status(200).json({ message: `Successfully deleted change request #${crId}` });
132132
} catch (error: unknown) {
133-
return next(error);
133+
next(error);
134134
}
135135
}
136136

@@ -140,9 +140,9 @@ export default class ChangeRequestsController {
140140
const { crId } = req.params;
141141

142142
await ChangeRequestsService.requestCRReview(req.currentUser, userIds, crId, req.organization);
143-
return res.status(200).json({ message: `Successfully requested reviewer(s) to change request #${crId}` });
143+
res.status(200).json({ message: `Successfully requested reviewer(s) to change request #${crId}` });
144144
} catch (error: unknown) {
145-
return next(error);
145+
next(error);
146146
}
147147
}
148148
}

src/backend/src/controllers/description-bullets.controllers.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,18 +10,18 @@ export default class DescriptionBulletsController {
1010
descriptionId,
1111
req.organization
1212
);
13-
return res.status(200).json(updatedDB);
13+
res.status(200).json(updatedDB);
1414
} catch (error: unknown) {
15-
return next(error);
15+
next(error);
1616
}
1717
}
1818

1919
static async getAllDescriptionBulletTypes(req: Request, res: Response, next: NextFunction) {
2020
try {
2121
const descriptionBulletTypes = await DescriptionBulletsService.getAllDescriptionBulletTypes(req.organization);
22-
return res.status(200).json(descriptionBulletTypes);
22+
res.status(200).json(descriptionBulletTypes);
2323
} catch (error: unknown) {
24-
return next(error);
24+
next(error);
2525
}
2626
}
2727

@@ -37,7 +37,7 @@ export default class DescriptionBulletsController {
3737
);
3838
res.status(201).json(newDescriptionBulletType);
3939
} catch (error: unknown) {
40-
return next(error);
40+
next(error);
4141
}
4242
}
4343

@@ -52,9 +52,9 @@ export default class DescriptionBulletsController {
5252
projectRequired,
5353
req.organization
5454
);
55-
return res.status(200).json(updatedDescriptionBulletType);
55+
res.status(200).json(updatedDescriptionBulletType);
5656
} catch (error: unknown) {
57-
return next(error);
57+
next(error);
5858
}
5959
}
6060
}

src/backend/src/controllers/design-reviews.controllers.ts

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,19 @@ export default class DesignReviewsController {
66
static async getAllDesignReviews(req: Request, res: Response, next: NextFunction) {
77
try {
88
const designReviews = await DesignReviewsService.getAllDesignReviews(req.organization);
9-
return res.status(200).json(designReviews);
9+
res.status(200).json(designReviews);
1010
} catch (error: unknown) {
11-
return next(error);
11+
next(error);
1212
}
1313
}
1414

1515
static async deleteDesignReview(req: Request, res: Response, next: NextFunction) {
1616
try {
1717
const drId: string = req.params.designReviewId;
1818
const deletedDesignReview = await DesignReviewsService.deleteDesignReview(req.currentUser, drId, req.organization);
19-
return res.status(200).json(deletedDesignReview);
19+
res.status(200).json(deletedDesignReview);
2020
} catch (error: unknown) {
21-
return next(error);
21+
next(error);
2222
}
2323
}
2424

@@ -36,9 +36,9 @@ export default class DesignReviewsController {
3636
meetingTimes,
3737
req.organization
3838
);
39-
return res.status(200).json(createdDesignReview);
39+
res.status(200).json(createdDesignReview);
4040
} catch (error: unknown) {
41-
return next(error);
41+
next(error);
4242
}
4343
}
4444

@@ -47,9 +47,9 @@ export default class DesignReviewsController {
4747
const drId: string = req.params.designReviewId;
4848

4949
const designReview = await DesignReviewsService.getSingleDesignReview(req.currentUser, drId, req.organization);
50-
return res.status(200).json(designReview);
50+
res.status(200).json(designReview);
5151
} catch (error: unknown) {
52-
return next(error);
52+
next(error);
5353
}
5454
}
5555

@@ -90,9 +90,9 @@ export default class DesignReviewsController {
9090
meetingTimes,
9191
req.organization
9292
);
93-
return res.status(200).json({ message: 'Design Review updated successfully' });
93+
res.status(200).json({ message: 'Design Review updated successfully' });
9494
} catch (error: unknown) {
95-
return next(error);
95+
next(error);
9696
}
9797
}
9898

@@ -109,9 +109,9 @@ export default class DesignReviewsController {
109109
user,
110110
req.organization
111111
);
112-
return res.status(200).json(updatedDesignReview);
112+
res.status(200).json(updatedDesignReview);
113113
} catch (error: unknown) {
114-
return next(error);
114+
next(error);
115115
}
116116
}
117117

@@ -127,9 +127,9 @@ export default class DesignReviewsController {
127127
status,
128128
req.organization
129129
);
130-
return res.status(200).json(updatedDesignReview);
130+
res.status(200).json(updatedDesignReview);
131131
} catch (error: unknown) {
132-
return next(error);
132+
next(error);
133133
}
134134
}
135135
}

src/backend/src/controllers/organizations.controller.ts renamed to src/backend/src/controllers/organizations.controllers.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,19 @@ export default class OrganizationsController {
55
static async getCurrentOrganization(req: Request, res: Response, next: NextFunction) {
66
try {
77
const organization = await OrganizationsService.getCurrentOrganization(req.organization.organizationId);
8-
return res.status(200).json(organization);
8+
res.status(200).json(organization);
99
} catch (error: unknown) {
10-
return next(error);
10+
next(error);
1111
}
1212
}
1313

1414
static async setUsefulLinks(req: Request, res: Response, next: NextFunction) {
1515
try {
1616
const { links } = req.body;
1717
const newLinks = await OrganizationsService.setUsefulLinks(req.currentUser, req.organization.organizationId, links);
18-
return res.status(200).json(newLinks);
18+
res.status(200).json(newLinks);
1919
} catch (error: unknown) {
20-
return next(error);
20+
next(error);
2121
}
2222
}
2323

@@ -38,17 +38,17 @@ export default class OrganizationsController {
3838
req.organization
3939
);
4040

41-
return res.status(200).json(newImages);
41+
res.status(200).json(newImages);
4242
} catch (error: unknown) {
43-
return next(error);
43+
next(error);
4444
}
4545
}
4646
static async getAllUsefulLinks(req: Request, res: Response, next: NextFunction) {
4747
try {
4848
const links = await OrganizationsService.getAllUsefulLinks(req.organization.organizationId);
49-
return res.status(200).json(links);
49+
res.status(200).json(links);
5050
} catch (error: unknown) {
51-
return next(error);
51+
next(error);
5252
}
5353
}
5454

0 commit comments

Comments
 (0)