From 37f027cb1c587c757365a9f61798c20fda1b27b5 Mon Sep 17 00:00:00 2001 From: Kfir Dayan Date: Sun, 9 Jul 2023 12:38:16 +0300 Subject: [PATCH] done for now --- README.md | 20 ++++++++++++++------ notification-service/src/main.ts | 2 +- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 6736ade..9788331 100644 --- a/README.md +++ b/README.md @@ -2,11 +2,12 @@ This README.md file provides instructions for setting up and running various components of the project, including MongoDB, SQS, NotificationService, and TodoService. Please follow the steps below to get started. -## MongoDB/Docker +## MongoDB/Docker && RabbitMQ/Docker 1. Install MongoDB if you haven't already. 2. Navigate to the `/infra/docker/docker-compose` directory. -3. Run the following command to start MongoDB using Docker Compose: +3. Make sure to add .env by copying .env.example and filling in the values. +4. Run the following command to start MongoDB using Docker Compose: ```shell docker-compose up -d @@ -15,9 +16,7 @@ This README.md file provides instructions for setting up and running various com ## NotificationService Before running the NotificationService, ensure that you have Node.js, TypeScript (tsc), and npm installed. - Navigate to the /notification-service directory. - Run the following command to install the dependencies: ```npm @@ -33,9 +32,7 @@ npm run dev ## TodoService Before running the TodoService, ensure that you have Node.js, TypeScript (tsc) and npm installed. - Navigate to the /todo-service directory. - Run the following command to install the dependencies: ```npm @@ -51,3 +48,14 @@ npm run dev ## Requests Examples are located in request.http - can be run in VSCode with the REST Client extension. + +## notification-service business logic + +1. When a new todo is created, the notification-service will receive a message from the todo-service with delay time due_date - current_time. +2. The notification-service will then send a message to rabbitmq with the delay time. +3. When the delay time is up, the notification-service will receive a message from rabbitmq and send a notification to the user by the following logic: + a. If the todo is no "pending" status and due_date is smaller then current time, send a notification to the user. + b. If the todo is already completed, do nothing. + + + diff --git a/notification-service/src/main.ts b/notification-service/src/main.ts index 369ac6a..0237fae 100644 --- a/notification-service/src/main.ts +++ b/notification-service/src/main.ts @@ -24,7 +24,7 @@ export class NotificationService { async newMessageValidator(message: ITodo) { try { - const todo = await this.mongoModel.getTodoById(message._id.toString()); + const todo: ITodo | void = await this.mongoModel.getTodoById(message._id.toString()); if (todo) { const due_date = new Date(todo.due_date); if (todo.status === "pending" && due_date > this.currentDate.getDate()) {