use global context

This commit is contained in:
2026-06-04 16:58:01 +03:30
parent 70711de81c
commit 0d619f313d
17 changed files with 46 additions and 10 deletions
+1 -2
View File
@@ -28,8 +28,7 @@ export class OptionalAuthGuard implements CanActivate {
// If no token is provided, allow the request without authentication
if (!slug) {
console.log('No slug provided');
this.logger.warn('No slug provided');
this.logger.warn('No slug provided');
return false;
}
if (!token) {
+2
View File
@@ -1,5 +1,6 @@
import { Injectable, Logger } from '@nestjs/common';
import { Cron } from '@nestjs/schedule';
import { CreateRequestContext } from '@mikro-orm/core';
import { EntityManager } from '@mikro-orm/postgresql';
import { Inventory } from '../../inventory/entities/inventory.entity';
@@ -14,6 +15,7 @@ export class FoodStockCrone {
name: 'resetAvailableStock',
timeZone: 'UTC',
})
@CreateRequestContext()
async handleCron() {
try {
this.logger.debug('Starting daily inventory reset (availableStock = totalStock)');
@@ -99,10 +99,8 @@ export class IconsController {
@UseGuards(SuperAdminAuthGuard)
@ApiOperation({ summary: 'Get all icon groups' })
async findAllGroups() {
console.log('find icona');
const a = await this.groupService.findAllGroups();
console.log(a);
return a;
const a = await this.groupService.findAllGroups();
return a;
}
@Get('super-admin/icons/groups/:id')
@@ -1,5 +1,6 @@
import { Injectable, Logger } from '@nestjs/common';
import { Cron } from '@nestjs/schedule';
import { CreateRequestContext } from '@mikro-orm/core';
import { EntityManager } from '@mikro-orm/postgresql';
import { Notification } from '../entities/notification.entity';
@@ -14,6 +15,7 @@ export class NotificationCrone {
name: 'deleteOldNotifications',
timeZone: 'UTC',
})
@CreateRequestContext()
async handleCron() {
try {
this.logger.debug('Starting daily notification cleanup (removing notifications older than 24 hours)');
@@ -1,5 +1,6 @@
import { Injectable, Logger } from '@nestjs/common';
import { OnEvent } from '@nestjs/event-emitter';
import { EnsureRequestContext } from '@mikro-orm/core';
import { SmsSentEvent } from '../events/sms.events';
import { RestRepository } from '../../restaurants/repositories/rest.repository';
import { EntityManager } from '@mikro-orm/postgresql';
@@ -16,6 +17,7 @@ export class SmsListeners {
}
@OnEvent(SmsSentEvent.name)
@EnsureRequestContext()
async handleSmsSent(event: SmsSentEvent) {
try {
this.logger.log(
@@ -1,6 +1,7 @@
import { Processor, WorkerHost, OnWorkerEvent } from '@nestjs/bullmq';
import { Logger } from '@nestjs/common';
import { Job } from 'bullmq';
import { CreateRequestContext } from '@mikro-orm/core';
import { InjectRepository } from '@mikro-orm/nestjs';
import { EntityManager } from '@mikro-orm/postgresql';
import { Notification } from '../entities/notification.entity';
@@ -20,6 +21,7 @@ export class InAppProcessor extends WorkerHost {
super();
}
@CreateRequestContext()
async process(job: Job<InAppNotificationQueueJob>): Promise<void> {
const { recipient, subject, body, notificationId } = job.data;
@@ -1,6 +1,7 @@
import { Processor, WorkerHost, OnWorkerEvent } from '@nestjs/bullmq';
import { Logger } from '@nestjs/common';
import { Job } from 'bullmq';
import { CreateRequestContext } from '@mikro-orm/core';
import { InjectRepository } from '@mikro-orm/nestjs';
import { EntityRepository, EntityManager } from '@mikro-orm/postgresql';
import { Notification } from '../entities/notification.entity';
@@ -21,6 +22,7 @@ export class PushProcessor extends WorkerHost {
super();
}
@CreateRequestContext()
async process(job: Job<PushNotificationQueueJob>) {
const { title, content, action, pushToken, pushTokens } = job.data;
@@ -1,6 +1,8 @@
import { Processor, WorkerHost, OnWorkerEvent } from '@nestjs/bullmq';
import { Logger } from '@nestjs/common';
import { Job } from 'bullmq';
import { CreateRequestContext } from '@mikro-orm/core';
import { MikroORM } from '@mikro-orm/postgresql';
import { UserRepository } from 'src/modules/users/repositories/user.repository';
import { SmsNotificationQueueJob } from '../interfaces/jobs-queue.interface';
import { AdminRepository } from 'src/modules/admin/repositories/admin.repository';
@@ -18,10 +20,12 @@ export class SmsProcessor extends WorkerHost {
private readonly userRepository: UserRepository,
private readonly smsService: SmsService,
private readonly eventEmitter: EventEmitter2,
private readonly orm: MikroORM,
) {
super();
}
@CreateRequestContext()
async process(job: Job<SmsNotificationQueueJob>) {
const { recipient, templateId, parameters, restaurantId } = job.data;
+3
View File
@@ -1,5 +1,6 @@
import { Injectable, Logger } from '@nestjs/common';
import { Cron } from '@nestjs/schedule';
import { CreateRequestContext } from '@mikro-orm/core';
import { EntityManager } from '@mikro-orm/postgresql';
import { EventEmitter2 } from '@nestjs/event-emitter';
import { Payment } from '../../payments/entities/payment.entity';
@@ -24,6 +25,7 @@ export class OrdersCrone {
name: 'failOldOnlinePayments',
timeZone: 'UTC',
})
@CreateRequestContext()
async cancelOldOnlinePendingOrders() {
try {
const cutoff = new Date(Date.now() - 15 * 60 * 1000);
@@ -96,6 +98,7 @@ export class OrdersCrone {
name: 'completeOldDeliveredOrders',
timeZone: 'UTC',
})
@CreateRequestContext()
async completeOldDeliveredOrders() {
try {
const cutoff = new Date(Date.now() - 3 * 60 * 60 * 1000); // 3 hours ago
@@ -1,5 +1,7 @@
import { Injectable, Logger } from '@nestjs/common';
import { OnEvent } from '@nestjs/event-emitter';
import { EnsureRequestContext } from '@mikro-orm/core';
import { MikroORM } from '@mikro-orm/postgresql';
import { AdminRepository } from 'src/modules/admin/repositories/admin.repository';
import { OrderCreatedEvent, OrderStatusChangedEvent } from '../events/order.events';
import { Permission } from 'src/common/enums/permission.enum';
@@ -24,6 +26,7 @@ export class OrderListeners {
private readonly notificationService: NotificationService,
private readonly configService: ConfigService,
private readonly userService: UserService,
private readonly orm: MikroORM,
) {
this.orderCreatedSmsTemplateId = this.configService.get<string>('SMS_PATTERN_ORDER_CREATED') ?? '123';
this.orderStatusChangedSmsTemplateId = this.configService.get<string>('SMS_PATTERN_ORDER_STATUS_CHANGE') ?? '123';
@@ -45,6 +48,7 @@ export class OrderListeners {
}
@OnEvent(OrderCreatedEvent.name)
@EnsureRequestContext()
async handleOrderCreated(event: OrderCreatedEvent) {
try {
this.logger.log(
@@ -99,6 +103,7 @@ export class OrderListeners {
}
@OnEvent(OrderStatusChangedEvent.name)
@EnsureRequestContext()
async handleOrderStatusChanged(event: OrderStatusChangedEvent) {
try {
this.logger.log(
+2
View File
@@ -1,5 +1,6 @@
import { Injectable, Logger } from '@nestjs/common';
import { Cron } from '@nestjs/schedule';
import { CreateRequestContext } from '@mikro-orm/core';
import { EntityManager } from '@mikro-orm/postgresql';
import { Pager } from '../entities/pager.entity';
@@ -14,6 +15,7 @@ export class PagerCrone {
name: 'deleteOldPagers',
timeZone: 'UTC',
})
@CreateRequestContext()
async handleCron() {
try {
this.logger.debug('Starting daily pager cleanup (removing pagers older than 24 hours)');
@@ -1,5 +1,7 @@
import { Injectable, Logger } from '@nestjs/common';
import { OnEvent } from '@nestjs/event-emitter';
import { EnsureRequestContext } from '@mikro-orm/core';
import { MikroORM } from '@mikro-orm/postgresql';
import { AdminRepository } from 'src/modules/admin/repositories/admin.repository';
import { PagerCreatedEvent } from '../events/pager.events';
import { Permission } from 'src/common/enums/permission.enum';
@@ -15,11 +17,13 @@ export class PagerListeners {
private readonly adminService: AdminRepository,
private readonly notificationService: NotificationService,
private readonly configService: ConfigService,
private readonly orm: MikroORM,
) {
this.smsPatternPagerCreated = this.configService.get<string>('SMS_PATTERN_PAGER_CREATED') ?? '123';
}
@OnEvent(PagerCreatedEvent.name)
@EnsureRequestContext()
async handlePagerCreated(event: PagerCreatedEvent) {
try {
this.logger.log(`Pager created event received: ${event.restaurantId}`);
@@ -1,5 +1,7 @@
import { Injectable, Logger } from '@nestjs/common';
import { OnEvent } from '@nestjs/event-emitter';
import { EnsureRequestContext } from '@mikro-orm/core';
import { MikroORM } from '@mikro-orm/postgresql';
import { AdminRepository } from 'src/modules/admin/repositories/admin.repository';
import { onlinePaymentSucceedEvent, paymentSucceedEvent } from '../events/payment.events';
import { Permission } from 'src/common/enums/permission.enum';
@@ -18,6 +20,7 @@ export class PaymentListeners {
private readonly notificationService: NotificationService,
private readonly configService: ConfigService,
private readonly orderService: OrdersService,
private readonly orm: MikroORM,
) {
this.orderCreatedSmsTemplateId = this.configService.get<string>('SMS_PATTERN_ORDER_CREATED') ?? '123';
this.paymentSucceedSmsTemplateId = this.configService.get<string>('SMS_PATTERN_ONLINE_PAYMENT_SUCCEED') ?? '123';
@@ -33,6 +36,7 @@ export class PaymentListeners {
}
@OnEvent(paymentSucceedEvent.name)
@EnsureRequestContext()
async handlePaymentSucceed(event: paymentSucceedEvent) {
try {
this.logger.log(
@@ -80,6 +84,7 @@ export class PaymentListeners {
}
@OnEvent(onlinePaymentSucceedEvent.name)
@EnsureRequestContext()
async handleOnlinePaymentSucceed(event: onlinePaymentSucceedEvent) {
try {
@@ -1,5 +1,6 @@
import { Injectable, Logger } from '@nestjs/common';
import { Cron } from '@nestjs/schedule';
import { CreateRequestContext } from '@mikro-orm/core';
import { EntityManager } from '@mikro-orm/postgresql';
import { Restaurant } from '../entities/restaurant.entity';
@@ -14,6 +15,7 @@ export class RestaurantCrone {
name: 'deactivateExpiredSubscriptions',
timeZone: 'UTC',
})
@CreateRequestContext()
async handleCron() {
try {
this.logger.debug('Starting daily subscription expiration check');
@@ -139,10 +139,8 @@ export class RestaurantsService {
}
async findOneBySubscriptionId(subscriptionId: string): Promise<Restaurant> {
console.log('subscriptionId', subscriptionId)
const restaurant = await this.restRepository.findOne({ subscriptionId });
console.log('restaurant', restaurant)
if (!restaurant) {
const restaurant = await this.restRepository.findOne({ subscriptionId });
if (!restaurant) {
throw new NotFoundException(RestMessage.NOT_FOUND);
}
return restaurant;
@@ -1,5 +1,7 @@
import { Injectable, Logger } from '@nestjs/common';
import { OnEvent } from '@nestjs/event-emitter';
import { EnsureRequestContext } from '@mikro-orm/core';
import { MikroORM } from '@mikro-orm/postgresql';
import { ReviewCreatedEvent } from '../events/review.events';
import { AdminRepository } from 'src/modules/admin/repositories/admin.repository';
import { Permission } from 'src/common/enums/permission.enum';
@@ -16,11 +18,13 @@ export class ReviewListeners {
private readonly adminService: AdminRepository,
private readonly notificationService: NotificationService,
private readonly configService: ConfigService,
private readonly orm: MikroORM,
) {
this.reviewCreatedSmsTemplateId = this.configService.get<string>('SMS_PATTERN_REVIEW_CREATED') ?? '123';
}
@OnEvent(ReviewCreatedEvent.name)
@EnsureRequestContext()
async handleReviewCreated(event: ReviewCreatedEvent) {
try {
this.logger.log(
@@ -1,5 +1,6 @@
import { Injectable, Logger } from '@nestjs/common';
import { Cron } from '@nestjs/schedule';
import { CreateRequestContext } from '@mikro-orm/core';
import { EntityManager } from '@mikro-orm/postgresql';
import { FoodRepository } from '../../foods/repositories/food.repository';
import { ReviewRepository } from '../repositories/review.repository';
@@ -23,6 +24,7 @@ export class FoodRatingCronService {
name: 'calculateFoodRatings',
timeZone: 'UTC',
})
@CreateRequestContext()
async handleCron() {
this.logger.log('Starting daily food rating calculation cron job...');