api: add main controller & also rig mail queues + welcome mail
Parents:
9491cee3 file(s) changed
- api/src/controllers/main.ts +13 -0
- api/src/controllers/users.ts +5 -0
- api/src/routes/main.ts +8 -0
api/src/controllers/main.ts
@@ -0,0 +1,13 @@
1 + import { Request, Response, NextFunction } from 'express';
2 +
3 + export const MainController = {
4 + // TODO: replace with a HTML response for the main app
5 + index: async (req: Request, res: Response, next: NextFunction) => {
6 + try {
7 + const { message } = req.params;
8 + res.json({ status: 'alive' });
9 + } catch (err) {
10 + next(err);
11 + }
12 + }
13 + };
api/src/controllers/users.ts
@@ -11,6 +11,8 @@ import {
11 11 validateRequiredFields
12 12 } from '@app/utils/validators'
13 13
14 + import { getQueue, MailJobName } from '@app/lib/queue';
15 +
14 16 export const UsersController = {
15 17 create: async (req: Request, res: Response, next: NextFunction) => {
16 18 try {
@@ -33,6 +35,9 @@ email, firstName, lastName, password
33 35 );
34 36
35 37 const jwtToken = generateToken(user.id, user.email);
38 +
39 + const mailQueue = getQueue('mail');
40 + const job = await mailQueue.add(MailJobName.WelcomeEmail, { userId: user.id });
36 41
37 42 res.status(201).json({ token: jwtToken });
38 43 } catch (err) {
api/src/routes/main.ts
@@ -0,0 +1,8 @@
1 + import { Router } from "express";
2 + import { MainController } from '@app/controllers/main'
3 +
4 + const router = Router();
5 +
6 + router.get('/', MainController.index);
7 +
8 + export default router;