cleaning + fixig issue with env vars

This commit is contained in:
Kfir Dayan 2023-07-09 12:30:32 +03:00
parent 429ddebf02
commit 31c60d2d97
6 changed files with 54 additions and 10 deletions

View file

@ -11,6 +11,7 @@
"dependencies": { "dependencies": {
"amqplib": "^0.10.3", "amqplib": "^0.10.3",
"dotenv": "^16.3.1", "dotenv": "^16.3.1",
"moment-timezone": "^0.5.43",
"mongodb": "^5.7.0" "mongodb": "^5.7.0"
}, },
"devDependencies": { "devDependencies": {
@ -133,6 +134,25 @@
"integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==",
"optional": true "optional": true
}, },
"node_modules/moment": {
"version": "2.29.4",
"resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz",
"integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==",
"engines": {
"node": "*"
}
},
"node_modules/moment-timezone": {
"version": "0.5.43",
"resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.43.tgz",
"integrity": "sha512-72j3aNyuIsDxdF1i7CEgV2FfxM1r6aaqJyLB2vwb33mXYyoyLly+F1zbWqhA3/bVIoJ4szlUoMbUnVdid32NUQ==",
"dependencies": {
"moment": "^2.29.4"
},
"engines": {
"node": "*"
}
},
"node_modules/mongodb": { "node_modules/mongodb": {
"version": "5.7.0", "version": "5.7.0",
"resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.7.0.tgz", "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.7.0.tgz",

View file

@ -12,6 +12,7 @@
"dependencies": { "dependencies": {
"amqplib": "^0.10.3", "amqplib": "^0.10.3",
"dotenv": "^16.3.1", "dotenv": "^16.3.1",
"moment-timezone": "^0.5.43",
"mongodb": "^5.7.0" "mongodb": "^5.7.0"
}, },
"devDependencies": { "devDependencies": {

View file

@ -1,12 +1,15 @@
import { ITodo } from "./interfaces/ITodo"; import { ITodo } from "./interfaces/ITodo";
import { RabbitMQ } from "./rabbitmq/RabbitMQ"; import { RabbitMQ } from "./rabbitmq/RabbitMQ";
import { MongoDbModel } from "./mongodb/MongoDb"; import { MongoDbModel } from "./mongodb/MongoDb";
import { DateService } from "./services/DateService";
export class NotificationService { export class NotificationService {
rabbitmq: RabbitMQ; rabbitmq: RabbitMQ;
mongoModel: MongoDbModel; mongoModel: MongoDbModel;
currentDate: any;
constructor() { constructor() {
this.currentDate = DateService.getInstance();
this.rabbitmq = new RabbitMQ(); this.rabbitmq = new RabbitMQ();
this.mongoModel = new MongoDbModel(); this.mongoModel = new MongoDbModel();
this.startListener(); this.startListener();
@ -20,14 +23,18 @@ export class NotificationService {
} }
async newMessageValidator(message: ITodo) { async newMessageValidator(message: ITodo) {
try {
const todo = await this.mongoModel.getTodoById(message._id.toString()); const todo = await this.mongoModel.getTodoById(message._id.toString());
if (todo) { if (todo) {
const due_date = new Date(todo.due_date); const due_date = new Date(todo.due_date);
if (todo.status === "pending" && due_date > new Date()) { if (todo.status === "pending" && due_date > this.currentDate.getDate()) {
await this.mongoModel.updateTodoStatus(todo); await this.mongoModel.updateTodoStatus(todo);
await this.sendNotification(todo); // Send notification to user await this.sendNotification(todo); // Send notification to user
} }
} }
} catch {
console.error("todo Not found");
}
} }
private IsUserConnected() { private IsUserConnected() {

View file

@ -24,7 +24,6 @@ export class MongoDbModel {
{ _id: new ObjectId(todo._id) }, { _id: new ObjectId(todo._id) },
{ $set: { status: "completed" } } { $set: { status: "completed" } }
); );
console.log(`Updated status of Todo ${todo._id} to completed`);
} catch (error) { } catch (error) {
console.error("Error updating Todo status:", error); console.error("Error updating Todo status:", error);
} finally { } finally {

View file

@ -57,7 +57,6 @@ export class RabbitMQ {
Buffer.from(message), Buffer.from(message),
options options
); );
console.log("Message sent to the queue");
} catch (error) { } catch (error) {
console.error("Error sending message to RabbitMQ:", error); console.error("Error sending message to RabbitMQ:", error);
throw error; throw error;
@ -68,8 +67,6 @@ export class RabbitMQ {
this.channel.assertQueue(this.queueName); this.channel.assertQueue(this.queueName);
this.channel.consume(this.queueName, (message: ConsumeMessage | null) => { this.channel.consume(this.queueName, (message: ConsumeMessage | null) => {
if (message) { if (message) {
console.log("Message received from the queue");
console.log("Message content: ", message.content.toString());
const todo: ITodo = JSON.parse(message.content.toString()).payload; const todo: ITodo = JSON.parse(message.content.toString()).payload;
this.channel.ack(message); this.channel.ack(message);
callback(todo); callback(todo);

View file

@ -0,0 +1,20 @@
import moment from "moment-timezone";
export class DateService {
private static instance: DateService;
private constructor() {}
public static getInstance(): DateService {
if (!DateService.instance) {
DateService.instance = new DateService();
}
return DateService.instance;
}
public getCurrentDate(): Date {
const israelTime = moment().tz("Asia/Jerusalem");
const currentDate = israelTime.toDate();
return currentDate;
}
}