From c25a5afe01e9822fc394f147611f9fb737e6fd67 Mon Sep 17 00:00:00 2001 From: morteza-mortezai Date: Sat, 13 Dec 2025 11:14:18 +0330 Subject: [PATCH] lint --- src/config/cache.config.ts | 4 +- src/config/mikro-orm.config.ts | 4 +- src/modules/admin/providers/admin.service.ts | 1 - .../auth/decorators/permissions.decorator.ts | 7 +- .../transformers/user-login.transformer.ts | 5 +- .../cart/controllers/cart.controller.ts | 126 ++++++++++++++++-- src/modules/cart/dto/apply-coupon.dto.ts | 1 - src/modules/cart/dto/set-address.dto.ts | 1 - .../cart/dto/set-delivery-method.dto.ts | 1 - src/modules/cart/dto/set-description.dto.ts | 7 +- .../cart/dto/set-payment-method.dto.ts | 1 - src/modules/cart/dto/set-table-number.dto.ts | 1 - src/modules/cart/dto/update-item.dto.ts | 1 - src/modules/cart/providers/cart.service.ts | 6 +- .../contact/controllers/contact.controller.ts | 9 +- src/modules/contact/dto/find-contacts.dto.ts | 1 - .../contact/dto/update-contact-status.dto.ts | 1 - .../repositories/contact.repository.ts | 7 +- .../coupons/controllers/coupon.controller.ts | 9 +- src/modules/coupons/coupon.module.ts | 1 - src/modules/coupons/dto/find-coupons.dto.ts | 1 - src/modules/coupons/dto/update-coupon.dto.ts | 1 - .../coupons/dto/validate-coupon.dto.ts | 1 - .../controllers/delivery.controller.ts | 9 +- .../repositories/delivery.repository.ts | 1 - .../foods/controllers/category.controller.ts | 9 +- .../foods/controllers/food.controller.ts | 9 +- .../controllers/notifications.controller.ts | 9 +- .../decorators/ws-rest-id.decorator.ts | 5 +- .../dto/create-notification.dto.ts | 1 - .../services/push-notification.service.ts | 12 +- .../orders/controllers/orders.controller.ts | 36 ++++- src/modules/orders/dto/find-orders.dto.ts | 1 - .../pager/controllers/pager.controller.ts | 9 +- .../pager/decorators/ws-admin-id.decorator.ts | 6 +- .../pager/decorators/ws-rest-id.decorator.ts | 6 +- src/modules/pager/providers/pager.service.ts | 2 +- .../controllers/payments.controller.ts | 27 +++- .../payments/dto/update-payment-method.dto.ts | 1 - .../services/payment-method.service.ts | 5 +- .../controllers/restaurants.controller.ts | 9 +- .../controllers/schedule.controller.ts | 9 +- .../restaurants/dto/create-schedule.dto.ts | 1 - .../dto/restaurant-specification.dto.ts | 13 +- .../review/controllers/review.controller.ts | 45 ++++++- src/modules/review/dto/change-status.dto.ts | 1 - src/modules/review/dto/update-review.dto.ts | 13 +- .../review/enums/review-status.enum.ts | 1 - .../providers/food-rating-cron.service.ts | 5 +- .../review/repositories/review.repository.ts | 2 +- src/modules/review/review.module.ts | 9 +- src/modules/roles/dto/create-role.dto.ts | 1 - .../roles/entities/permission.entity.ts | 2 +- .../uploader/interfaces/file.interface.ts | 6 +- .../uploader/interfaces/s3.interface.ts | 2 +- .../users/controllers/users.controller.ts | 81 +++++++++-- .../users/dto/create-user-address.dto.ts | 3 +- .../users/dto/update-user-address.dto.ts | 3 +- src/modules/utils/cache.service.ts | 5 +- src/modules/utils/phone.util.ts | 1 - src/seeders/admins.seeder.ts | 4 +- src/seeders/categories.seeder.ts | 8 +- src/seeders/coupons.seeder.ts | 3 +- src/seeders/data/admins.data.ts | 1 - src/seeders/data/categories.data.ts | 1 - src/seeders/data/coupons.data.ts | 1 - src/seeders/data/delivery-methods.data.ts | 1 - .../data/notification-preferences.data.ts | 2 +- src/seeders/data/permissions.data.ts | 1 - src/seeders/data/roles.data.ts | 5 +- src/seeders/data/schedules.data.ts | 1 - src/seeders/data/user-addresses.data.ts | 15 +-- src/seeders/delivery-methods.seeder.ts | 2 +- src/seeders/foods.seeder.ts | 4 +- src/seeders/payment-methods.seeder.ts | 3 +- src/seeders/permissions.seeder.ts | 1 - src/seeders/restaurants.seeder.ts | 1 - src/seeders/roles.seeder.ts | 9 +- src/seeders/schedules.seeder.ts | 3 +- test/app.e2e-spec.ts | 7 +- 80 files changed, 440 insertions(+), 190 deletions(-) diff --git a/src/config/cache.config.ts b/src/config/cache.config.ts index 3ccc8c2..388a3f3 100755 --- a/src/config/cache.config.ts +++ b/src/config/cache.config.ts @@ -23,7 +23,7 @@ export function cacheConfig(): CacheModuleAsyncOptions { keyvRedisStore.client.on('connect', () => { logger.log('✅ Redis connected successfully.'); }); - keyvRedisStore.client.on('error', (error) => { + keyvRedisStore.client.on('error', error => { logger.error('❌ Redis connection error:', error); }); @@ -40,4 +40,4 @@ export function cacheConfig(): CacheModuleAsyncOptions { }; }, }; -} \ No newline at end of file +} diff --git a/src/config/mikro-orm.config.ts b/src/config/mikro-orm.config.ts index 3b32bca..4d4cef9 100644 --- a/src/config/mikro-orm.config.ts +++ b/src/config/mikro-orm.config.ts @@ -29,7 +29,7 @@ const dataBaseConfig: MikroOrmModuleAsyncOptions = { const encodedPassword = encodeURIComponent(DB_PASS); const isProduction = configService.getOrThrow('NODE_ENV') === 'production'; - return ({ + return { // entities: ['dist/**/*.entity.js'], entitiesTs: ['src/**/*.entity.ts'], driver: PostgreSqlDriver, @@ -102,7 +102,7 @@ const dataBaseConfig: MikroOrmModuleAsyncOptions = { return false; }, }, - }); + }; }, }; diff --git a/src/modules/admin/providers/admin.service.ts b/src/modules/admin/providers/admin.service.ts index e88a3e5..7d9fbd3 100644 --- a/src/modules/admin/providers/admin.service.ts +++ b/src/modules/admin/providers/admin.service.ts @@ -174,5 +174,4 @@ export class AdminService { } return this.em.removeAndFlush(adminRole); } - } diff --git a/src/modules/auth/decorators/permissions.decorator.ts b/src/modules/auth/decorators/permissions.decorator.ts index a974388..a08c388 100644 --- a/src/modules/auth/decorators/permissions.decorator.ts +++ b/src/modules/auth/decorators/permissions.decorator.ts @@ -1,6 +1,5 @@ - import { SetMetadata } from '@nestjs/common'; - +import { SetMetadata } from '@nestjs/common'; + export const PERMISSIONS_KEY = 'permissions'; -export const Permissions = (...permissions: string[]) => - SetMetadata(PERMISSIONS_KEY, permissions); +export const Permissions = (...permissions: string[]) => SetMetadata(PERMISSIONS_KEY, permissions); diff --git a/src/modules/auth/transformers/user-login.transformer.ts b/src/modules/auth/transformers/user-login.transformer.ts index 9b83791..f6eaa9b 100644 --- a/src/modules/auth/transformers/user-login.transformer.ts +++ b/src/modules/auth/transformers/user-login.transformer.ts @@ -1,5 +1,5 @@ -import { User } from '../../users/entities/user.entity'; -import { Restaurant } from '../../restaurants/entities/restaurant.entity'; +import type { User } from '../../users/entities/user.entity'; +import type { Restaurant } from '../../restaurants/entities/restaurant.entity'; export interface UserLoginResponse { id: string; @@ -34,4 +34,3 @@ export class UserLoginTransformer { }; } } - diff --git a/src/modules/cart/controllers/cart.controller.ts b/src/modules/cart/controllers/cart.controller.ts index 6e70017..e30fd9d 100644 --- a/src/modules/cart/controllers/cart.controller.ts +++ b/src/modules/cart/controllers/cart.controller.ts @@ -22,14 +22,28 @@ export class CartController { @Get() @ApiOperation({ summary: 'Get cart for current user and restaurant' }) - @ApiHeader({ name: 'X-Slug', required: true, description: 'Restaurant slug identifier', example: 'zhivan' }) + @ApiHeader({ + name: 'X-Slug', + required: true, + schema: { + type: 'string', + default: 'zhivan', + }, + }) async findOne(@UserId() userId: string, @RestId() restaurantId: string) { return this.cartService.getOrCreateCart(userId, restaurantId); } @Post('items/:foodId/increment') @ApiOperation({ summary: 'Increment item quantity in cart by 1' }) - @ApiHeader({ name: 'X-Slug', required: true, description: 'Restaurant slug identifier', example: 'zhivan' }) + @ApiHeader({ + name: 'X-Slug', + required: true, + schema: { + type: 'string', + default: 'zhivan', + }, + }) @ApiParam({ name: 'foodId', description: 'Food ID to increment in cart' }) async incrementItem(@UserId() userId: string, @RestId() restaurantId: string, @Param('foodId') foodId: string) { return this.cartService.incrementItem(userId, restaurantId, foodId); @@ -37,7 +51,14 @@ export class CartController { @Post('items/:foodId/decrement') @ApiOperation({ summary: 'Decrement item quantity in cart by 1 (removes item if quantity reaches 0)' }) - @ApiHeader({ name: 'X-Slug', required: true, description: 'Restaurant slug identifier', example: 'zhivan' }) + @ApiHeader({ + name: 'X-Slug', + required: true, + schema: { + type: 'string', + default: 'zhivan', + }, + }) @ApiParam({ name: 'foodId', description: 'Food ID to decrement in cart' }) async decrementItem(@UserId() userId: string, @RestId() restaurantId: string, @Param('foodId') foodId: string) { return this.cartService.decrementItem(userId, restaurantId, foodId); @@ -45,7 +66,14 @@ export class CartController { @Post('items/bulk') @ApiOperation({ summary: 'Bulk add items to cart (increments quantity if items exist)' }) - @ApiHeader({ name: 'X-Slug', required: true, description: 'Restaurant slug identifier', example: 'zhivan' }) + @ApiHeader({ + name: 'X-Slug', + required: true, + schema: { + type: 'string', + default: 'zhivan', + }, + }) @ApiBody({ type: BulkAddItemsToCartDto }) bulkAddItems( @UserId() userId: string, @@ -57,7 +85,14 @@ export class CartController { @Patch('items/:foodId') @ApiOperation({ summary: 'Update item quantity in cart' }) - @ApiHeader({ name: 'X-Slug', required: true, description: 'Restaurant slug identifier', example: 'zhivan' }) + @ApiHeader({ + name: 'X-Slug', + required: true, + schema: { + type: 'string', + default: 'zhivan', + }, + }) @ApiParam({ name: 'foodId', description: 'Food ID in the cart' }) @ApiBody({ type: UpdateItemQuantityDto }) async updateItemQuantity( @@ -71,7 +106,14 @@ export class CartController { @Delete('items/:foodId') @ApiOperation({ summary: 'Remove item from cart' }) - @ApiHeader({ name: 'X-Slug', required: true, description: 'Restaurant slug identifier', example: 'zhivan' }) + @ApiHeader({ + name: 'X-Slug', + required: true, + schema: { + type: 'string', + default: 'zhivan', + }, + }) @ApiParam({ name: 'foodId', description: 'Food ID in the cart' }) async removeItem(@UserId() userId: string, @RestId() restaurantId: string, @Param('foodId') foodId: string) { return this.cartService.removeItem(userId, restaurantId, foodId); @@ -79,14 +121,28 @@ export class CartController { @Delete() @ApiOperation({ summary: 'Clear entire cart' }) - @ApiHeader({ name: 'X-Slug', required: true, description: 'Restaurant slug identifier', example: 'zhivan' }) + @ApiHeader({ + name: 'X-Slug', + required: true, + schema: { + type: 'string', + default: 'zhivan', + }, + }) async clearCart(@UserId() userId: string, @RestId() restaurantId: string) { return this.cartService.clearCart(userId, restaurantId); } @Post('apply-coupon') @ApiOperation({ summary: 'Apply coupon to cart' }) - @ApiHeader({ name: 'X-Slug', required: true, description: 'Restaurant slug identifier', example: 'zhivan' }) + @ApiHeader({ + name: 'X-Slug', + required: true, + schema: { + type: 'string', + default: 'zhivan', + }, + }) @ApiBody({ type: ApplyCouponDto }) async applyCoupon(@UserId() userId: string, @RestId() restaurantId: string, @Body() applyCouponDto: ApplyCouponDto) { return this.cartService.applyCoupon(userId, restaurantId, applyCouponDto); @@ -94,14 +150,28 @@ export class CartController { @Delete('coupon') @ApiOperation({ summary: 'Remove coupon from cart' }) - @ApiHeader({ name: 'X-Slug', required: true, description: 'Restaurant slug identifier', example: 'zhivan' }) + @ApiHeader({ + name: 'X-Slug', + required: true, + schema: { + type: 'string', + default: 'zhivan', + }, + }) async removeCoupon(@UserId() userId: string, @RestId() restaurantId: string) { return this.cartService.removeCoupon(userId, restaurantId); } @Patch('address') @ApiOperation({ summary: 'Set address for cart' }) - @ApiHeader({ name: 'X-Slug', required: true, description: 'Restaurant slug identifier', example: 'zhivan' }) + @ApiHeader({ + name: 'X-Slug', + required: true, + schema: { + type: 'string', + default: 'zhivan', + }, + }) @ApiBody({ type: SetAddressDto }) async setAddress(@UserId() userId: string, @RestId() restaurantId: string, @Body() setAddressDto: SetAddressDto) { return this.cartService.setAddress(userId, restaurantId, setAddressDto); @@ -109,7 +179,14 @@ export class CartController { @Patch('payment-method') @ApiOperation({ summary: 'Set payment method for cart' }) - @ApiHeader({ name: 'X-Slug', required: true, description: 'Restaurant slug identifier', example: 'zhivan' }) + @ApiHeader({ + name: 'X-Slug', + required: true, + schema: { + type: 'string', + default: 'zhivan', + }, + }) @ApiBody({ type: SetPaymentMethodDto }) async setPaymentMethod( @UserId() userId: string, @@ -121,7 +198,14 @@ export class CartController { @Patch('delivery-method') @ApiOperation({ summary: 'Set delivery method for cart' }) - @ApiHeader({ name: 'X-Slug', required: true, description: 'Restaurant slug identifier', example: 'zhivan' }) + @ApiHeader({ + name: 'X-Slug', + required: true, + schema: { + type: 'string', + default: 'zhivan', + }, + }) @ApiBody({ type: SetDeliveryMethodDto }) setDeliveryMethod( @UserId() userId: string, @@ -133,7 +217,14 @@ export class CartController { @Patch('description') @ApiOperation({ summary: 'Set description for cart' }) - @ApiHeader({ name: 'X-Slug', required: true, description: 'Restaurant slug identifier', example: 'zhivan' }) + @ApiHeader({ + name: 'X-Slug', + required: true, + schema: { + type: 'string', + default: 'zhivan', + }, + }) @ApiBody({ type: SetDescriptionDto }) setDescription( @UserId() userId: string, @@ -145,7 +236,14 @@ export class CartController { @Patch('table-number') @ApiOperation({ summary: 'Set table number for cart (required when delivery method is DineIn)' }) - @ApiHeader({ name: 'X-Slug', required: true, description: 'Restaurant slug identifier', example: 'zhivan' }) + @ApiHeader({ + name: 'X-Slug', + required: true, + schema: { + type: 'string', + default: 'zhivan', + }, + }) @ApiBody({ type: SetTableNumberDto }) setTableNumber( @UserId() userId: string, diff --git a/src/modules/cart/dto/apply-coupon.dto.ts b/src/modules/cart/dto/apply-coupon.dto.ts index 10f7f96..cb182a0 100644 --- a/src/modules/cart/dto/apply-coupon.dto.ts +++ b/src/modules/cart/dto/apply-coupon.dto.ts @@ -7,4 +7,3 @@ export class ApplyCouponDto { @IsString() code!: string; } - diff --git a/src/modules/cart/dto/set-address.dto.ts b/src/modules/cart/dto/set-address.dto.ts index d521793..4bde322 100644 --- a/src/modules/cart/dto/set-address.dto.ts +++ b/src/modules/cart/dto/set-address.dto.ts @@ -7,4 +7,3 @@ export class SetAddressDto { @IsString() addressId!: string; } - diff --git a/src/modules/cart/dto/set-delivery-method.dto.ts b/src/modules/cart/dto/set-delivery-method.dto.ts index b3cb20e..0fb2bd4 100644 --- a/src/modules/cart/dto/set-delivery-method.dto.ts +++ b/src/modules/cart/dto/set-delivery-method.dto.ts @@ -7,4 +7,3 @@ export class SetDeliveryMethodDto { @IsString() deliveryMethodId!: string; } - diff --git a/src/modules/cart/dto/set-description.dto.ts b/src/modules/cart/dto/set-description.dto.ts index c206ad2..67b16da 100644 --- a/src/modules/cart/dto/set-description.dto.ts +++ b/src/modules/cart/dto/set-description.dto.ts @@ -2,9 +2,12 @@ import { ApiProperty } from '@nestjs/swagger'; import { IsOptional, IsString } from 'class-validator'; export class SetDescriptionDto { - @ApiProperty({ description: 'Cart description or notes', required: false, example: 'Please deliver to the back door' }) + @ApiProperty({ + description: 'Cart description or notes', + required: false, + example: 'Please deliver to the back door', + }) @IsOptional() @IsString() description?: string; } - diff --git a/src/modules/cart/dto/set-payment-method.dto.ts b/src/modules/cart/dto/set-payment-method.dto.ts index 2b4d262..40df256 100644 --- a/src/modules/cart/dto/set-payment-method.dto.ts +++ b/src/modules/cart/dto/set-payment-method.dto.ts @@ -7,4 +7,3 @@ export class SetPaymentMethodDto { @IsString() paymentMethodId!: string; } - diff --git a/src/modules/cart/dto/set-table-number.dto.ts b/src/modules/cart/dto/set-table-number.dto.ts index 6dca46f..46a9c86 100644 --- a/src/modules/cart/dto/set-table-number.dto.ts +++ b/src/modules/cart/dto/set-table-number.dto.ts @@ -7,4 +7,3 @@ export class SetTableNumberDto { @IsString() tableNumber?: string; } - diff --git a/src/modules/cart/dto/update-item.dto.ts b/src/modules/cart/dto/update-item.dto.ts index 570282e..2970604 100644 --- a/src/modules/cart/dto/update-item.dto.ts +++ b/src/modules/cart/dto/update-item.dto.ts @@ -8,4 +8,3 @@ export class UpdateItemQuantityDto { @Min(1) quantity!: number; } - diff --git a/src/modules/cart/providers/cart.service.ts b/src/modules/cart/providers/cart.service.ts index cff9140..c2aee44 100644 --- a/src/modules/cart/providers/cart.service.ts +++ b/src/modules/cart/providers/cart.service.ts @@ -613,11 +613,7 @@ export class CartService { /** * Set table number for cart */ - async setTableNumber( - userId: string, - restaurantId: string, - setTableNumberDto: SetTableNumberDto, - ): Promise { + async setTableNumber(userId: string, restaurantId: string, setTableNumberDto: SetTableNumberDto): Promise { const cart = await this.findOneOrFail(userId, restaurantId); // If delivery method is set, validate that table number is required for DineIn diff --git a/src/modules/contact/controllers/contact.controller.ts b/src/modules/contact/controllers/contact.controller.ts index 38a66ca..36a5d49 100644 --- a/src/modules/contact/controllers/contact.controller.ts +++ b/src/modules/contact/controllers/contact.controller.ts @@ -25,7 +25,14 @@ export class ContactController { @Post('public/contact') @ApiOperation({ summary: 'Create a new contact (public endpoint)' }) - @ApiHeader({ name: 'X-Slug', required: true, description: 'Restaurant slug identifier', example: 'zhivan' }) + @ApiHeader({ + name: 'X-Slug', + required: true, + schema: { + type: 'string', + default: 'zhivan', + }, + }) async create(@Body() createContactDto: CreateContactDto) { return this.contactService.create(createContactDto); } diff --git a/src/modules/contact/dto/find-contacts.dto.ts b/src/modules/contact/dto/find-contacts.dto.ts index 9e737b0..d5f9249 100644 --- a/src/modules/contact/dto/find-contacts.dto.ts +++ b/src/modules/contact/dto/find-contacts.dto.ts @@ -39,4 +39,3 @@ export class FindContactsDto { @ApiPropertyOptional({ enum: ContactStatusEnum, description: 'Filter by status' }) status?: ContactStatusEnum; } - diff --git a/src/modules/contact/dto/update-contact-status.dto.ts b/src/modules/contact/dto/update-contact-status.dto.ts index 2b60009..c68ced2 100644 --- a/src/modules/contact/dto/update-contact-status.dto.ts +++ b/src/modules/contact/dto/update-contact-status.dto.ts @@ -8,4 +8,3 @@ export class UpdateContactStatusDto { @ApiProperty({ enum: ContactStatusEnum, description: 'New status for the contact' }) status!: ContactStatusEnum; } - diff --git a/src/modules/contact/repositories/contact.repository.ts b/src/modules/contact/repositories/contact.repository.ts index ba76030..10226d2 100644 --- a/src/modules/contact/repositories/contact.repository.ts +++ b/src/modules/contact/repositories/contact.repository.ts @@ -37,11 +37,7 @@ export class ContactRepository extends EntityRepository { if (search) { const pattern = `%${search}%`; - where.$or = [ - { subject: { $ilike: pattern } }, - { content: { $ilike: pattern } }, - { phone: { $ilike: pattern } }, - ]; + where.$or = [{ subject: { $ilike: pattern } }, { content: { $ilike: pattern } }, { phone: { $ilike: pattern } }]; } const [data, total] = await this.findAndCount(where, { @@ -63,4 +59,3 @@ export class ContactRepository extends EntityRepository { }; } } - diff --git a/src/modules/coupons/controllers/coupon.controller.ts b/src/modules/coupons/controllers/coupon.controller.ts index 0f29c0b..4553030 100644 --- a/src/modules/coupons/controllers/coupon.controller.ts +++ b/src/modules/coupons/controllers/coupon.controller.ts @@ -28,7 +28,14 @@ export class CouponController { @ApiBearerAuth() @Get('public/coupons/me') @ApiOperation({ summary: 'Get paginated list of restaurant coupons' }) - @ApiHeader({ name: 'X-Slug', required: true, description: 'Restaurant slug identifier', example: 'zhivan' }) + @ApiHeader({ + name: 'X-Slug', + required: true, + schema: { + type: 'string', + default: 'zhivan', + }, + }) @ApiOkResponse({ description: 'Paginated list of restaurant coupons' }) @ApiQuery({ name: 'page', required: false, type: Number }) @ApiQuery({ name: 'limit', required: false, type: Number }) diff --git a/src/modules/coupons/coupon.module.ts b/src/modules/coupons/coupon.module.ts index 7bd3ff1..6e65e47 100644 --- a/src/modules/coupons/coupon.module.ts +++ b/src/modules/coupons/coupon.module.ts @@ -15,4 +15,3 @@ import { JwtModule } from '@nestjs/jwt'; exports: [CouponRepository, CouponService], }) export class CouponModule {} - diff --git a/src/modules/coupons/dto/find-coupons.dto.ts b/src/modules/coupons/dto/find-coupons.dto.ts index 35f0be4..3aadf98 100644 --- a/src/modules/coupons/dto/find-coupons.dto.ts +++ b/src/modules/coupons/dto/find-coupons.dto.ts @@ -42,4 +42,3 @@ export class FindCouponsDto { @ApiPropertyOptional({ enum: ['asc', 'desc'], example: 'desc', description: 'Sort order' }) order?: 'asc' | 'desc'; } - diff --git a/src/modules/coupons/dto/update-coupon.dto.ts b/src/modules/coupons/dto/update-coupon.dto.ts index dab8bf0..deca52b 100644 --- a/src/modules/coupons/dto/update-coupon.dto.ts +++ b/src/modules/coupons/dto/update-coupon.dto.ts @@ -2,4 +2,3 @@ import { PartialType } from '@nestjs/swagger'; import { CreateCouponDto } from './create-coupon.dto'; export class UpdateCouponDto extends PartialType(CreateCouponDto) {} - diff --git a/src/modules/coupons/dto/validate-coupon.dto.ts b/src/modules/coupons/dto/validate-coupon.dto.ts index 54fd225..2ee78e7 100644 --- a/src/modules/coupons/dto/validate-coupon.dto.ts +++ b/src/modules/coupons/dto/validate-coupon.dto.ts @@ -19,4 +19,3 @@ export class ValidateCouponDto { @ApiPropertyOptional({ example: 'user-id', description: 'User ID for per-user usage limits' }) userId?: string; } - diff --git a/src/modules/delivery/controllers/delivery.controller.ts b/src/modules/delivery/controllers/delivery.controller.ts index 3356814..71b72b4 100644 --- a/src/modules/delivery/controllers/delivery.controller.ts +++ b/src/modules/delivery/controllers/delivery.controller.ts @@ -27,7 +27,14 @@ export class DeliveryController { @ApiBearerAuth() @Get('public/delivery-methods/restaurant') @ApiOperation({ summary: 'Get restaurant delivery methods' }) - @ApiHeader({ name: 'X-Slug', required: true, description: 'Restaurant slug identifier', example: 'zhivan' }) + @ApiHeader({ + name: 'X-Slug', + required: true, + schema: { + type: 'string', + default: 'zhivan', + }, + }) @ApiOkResponse({ description: 'List of restaurant delivery methods', type: [Delivery], diff --git a/src/modules/delivery/repositories/delivery.repository.ts b/src/modules/delivery/repositories/delivery.repository.ts index 371686a..84f205e 100644 --- a/src/modules/delivery/repositories/delivery.repository.ts +++ b/src/modules/delivery/repositories/delivery.repository.ts @@ -8,4 +8,3 @@ export class DeliveryRepository extends EntityRepository { super(em, Delivery); } } - diff --git a/src/modules/foods/controllers/category.controller.ts b/src/modules/foods/controllers/category.controller.ts index 4b6c66e..b68a3ea 100644 --- a/src/modules/foods/controllers/category.controller.ts +++ b/src/modules/foods/controllers/category.controller.ts @@ -25,7 +25,14 @@ export class CategoryController { @Get('public/categories/restaurant/:slug') @ApiOperation({ summary: 'Get all categories by restaurant slug' }) - @ApiHeader({ name: 'X-Slug', required: true, description: 'Restaurant slug identifier', example: 'zhivan' }) + @ApiHeader({ + name: 'X-Slug', + required: true, + schema: { + type: 'string', + default: 'zhivan', + }, + }) @ApiParam({ name: 'slug', required: true, description: 'Restaurant Slug' }) @ApiOkResponse({ description: 'List of all categories for the restaurant' }) findAllByRestaurant(@Param('slug') slug: string) { diff --git a/src/modules/foods/controllers/food.controller.ts b/src/modules/foods/controllers/food.controller.ts index c81bffa..2b5787c 100644 --- a/src/modules/foods/controllers/food.controller.ts +++ b/src/modules/foods/controllers/food.controller.ts @@ -25,7 +25,14 @@ export class FoodController { @Get('public/foods/restaurant/:slug') @ApiOperation({ summary: 'Get all foods by restaurant slug' }) - @ApiHeader({ name: 'X-Slug', required: true, description: 'Restaurant slug identifier', example: 'zhivan' }) + @ApiHeader({ + name: 'X-Slug', + required: true, + schema: { + type: 'string', + default: 'zhivan', + }, + }) @ApiParam({ name: 'slug', required: true, description: 'Restaurant Slug' }) @ApiOkResponse({ description: 'List of all foods for the restaurant' }) findAllByRestaurant(@Param('slug') slug: string) { diff --git a/src/modules/notifications/controllers/notifications.controller.ts b/src/modules/notifications/controllers/notifications.controller.ts index f586b07..fe12957 100644 --- a/src/modules/notifications/controllers/notifications.controller.ts +++ b/src/modules/notifications/controllers/notifications.controller.ts @@ -21,7 +21,14 @@ export class NotificationsController { @ApiBearerAuth() @Get('public/notifications') @ApiOperation({ summary: 'Get user restaurant notifications' }) - @ApiHeader({ name: 'X-Slug', required: true, description: 'Restaurant slug identifier', example: 'zhivan' }) + @ApiHeader({ + name: 'X-Slug', + required: true, + schema: { + type: 'string', + default: 'zhivan', + }, + }) @ApiQuery({ name: 'limit', required: false, type: Number }) async getUserNotifications(@UserId() userId: string, @RestId() restaurantId: string, @Query('limit') limit?: number) { return await this.notificationService.findByUserAndRestaurant( diff --git a/src/modules/notifications/decorators/ws-rest-id.decorator.ts b/src/modules/notifications/decorators/ws-rest-id.decorator.ts index 29f8bc7..8391a8e 100644 --- a/src/modules/notifications/decorators/ws-rest-id.decorator.ts +++ b/src/modules/notifications/decorators/ws-rest-id.decorator.ts @@ -1,5 +1,6 @@ -import { createParamDecorator, ExecutionContext } from '@nestjs/common'; -import { AuthenticatedSocket } from '../guards/ws-admin-auth.guard'; +import type { ExecutionContext } from '@nestjs/common'; +import { createParamDecorator } from '@nestjs/common'; +import type { AuthenticatedSocket } from '../guards/ws-admin-auth.guard'; /** * Extract restaurant ID from authenticated WebSocket client diff --git a/src/modules/notifications/dto/create-notification.dto.ts b/src/modules/notifications/dto/create-notification.dto.ts index 25b7b2d..e42d4b5 100644 --- a/src/modules/notifications/dto/create-notification.dto.ts +++ b/src/modules/notifications/dto/create-notification.dto.ts @@ -38,4 +38,3 @@ export class CreateNotificationDto { @IsOptional() data?: Record; } - diff --git a/src/modules/notifications/services/push-notification.service.ts b/src/modules/notifications/services/push-notification.service.ts index 3260078..e62c16c 100644 --- a/src/modules/notifications/services/push-notification.service.ts +++ b/src/modules/notifications/services/push-notification.service.ts @@ -28,7 +28,7 @@ export class PushNotificationService { private initializeFirebase() { try { const firebaseConfig = this.configService.get('FIREBASE_SERVICE_ACCOUNT'); - + if (!firebaseConfig) { this.logger.warn('Firebase service account not configured. Push notifications will be disabled.'); return; @@ -51,7 +51,10 @@ export class PushNotificationService { async sendToToken(payload: PushNotificationPayload): Promise { if (!this.firebaseApp || !payload.token) { - throw new HttpException('Push notification service not configured or token missing', HttpStatus.SERVICE_UNAVAILABLE); + throw new HttpException( + 'Push notification service not configured or token missing', + HttpStatus.SERVICE_UNAVAILABLE, + ); } try { @@ -115,9 +118,7 @@ export class PushNotificationService { }; const response = await admin.messaging().sendEachForMulticast(message); - this.logger.log( - `Push notifications sent: ${response.successCount} successful, ${response.failureCount} failed`, - ); + this.logger.log(`Push notifications sent: ${response.successCount} successful, ${response.failureCount} failed`); return { success: response.successCount > 0, @@ -145,4 +146,3 @@ export class PushNotificationService { return this.firebaseApp !== null; } } - diff --git a/src/modules/orders/controllers/orders.controller.ts b/src/modules/orders/controllers/orders.controller.ts index 3388a88..b15e896 100644 --- a/src/modules/orders/controllers/orders.controller.ts +++ b/src/modules/orders/controllers/orders.controller.ts @@ -16,7 +16,14 @@ export class OrdersController { @ApiBearerAuth() @Post('public/checkout') @ApiOperation({ summary: 'Checkout : create order and payment record' }) - @ApiHeader({ name: 'X-Slug', required: true, description: 'Restaurant slug identifier', example: 'zhivan' }) + @ApiHeader({ + name: 'X-Slug', + required: true, + schema: { + type: 'string', + default: 'zhivan', + }, + }) checkout(@UserId() userId: string, @RestId() restaurantId: string) { return this.ordersService.checkout(userId, restaurantId); } @@ -25,7 +32,14 @@ export class OrdersController { @ApiBearerAuth() @Get('public/orders') @ApiOperation({ summary: 'Get all orders with pagination and filters' }) - @ApiHeader({ name: 'X-Slug', required: true, description: 'Restaurant slug identifier', example: 'zhivan' }) + @ApiHeader({ + name: 'X-Slug', + required: true, + schema: { + type: 'string', + default: 'zhivan', + }, + }) findAll(@RestId() restId: string, @Query() dto: FindOrdersDto, @UserId() userId: string) { return this.ordersService.findAllForUser(restId, dto, userId); } @@ -33,7 +47,14 @@ export class OrdersController { @UseGuards(AuthGuard) @ApiBearerAuth() @ApiOperation({ summary: 'Get an order By id for User' }) - @ApiHeader({ name: 'X-Slug', required: true, description: 'Restaurant slug identifier', example: 'zhivan' }) + @ApiHeader({ + name: 'X-Slug', + required: true, + schema: { + type: 'string', + default: 'zhivan', + }, + }) @ApiParam({ name: 'orderId', description: 'Order ID' }) @Get('public/orders/:orderId') findOne(@Param('orderId') orderId: string, @RestId() restId: string) { @@ -44,7 +65,14 @@ export class OrdersController { @ApiBearerAuth() @Patch('public/orders/:id/cancel') @ApiOperation({ summary: 'Cancel an order By User' }) - @ApiHeader({ name: 'X-Slug', required: true, description: 'Restaurant slug identifier', example: 'zhivan' }) + @ApiHeader({ + name: 'X-Slug', + required: true, + schema: { + type: 'string', + default: 'zhivan', + }, + }) @ApiParam({ name: 'id', description: 'Order ID' }) cancelOrder(@Param('id') id: string, @RestId() restId: string) { return this.ordersService.cancelOrderAsUser(id, restId); diff --git a/src/modules/orders/dto/find-orders.dto.ts b/src/modules/orders/dto/find-orders.dto.ts index a2d33ce..184dfd0 100644 --- a/src/modules/orders/dto/find-orders.dto.ts +++ b/src/modules/orders/dto/find-orders.dto.ts @@ -124,4 +124,3 @@ export class FindOrdersDto { @IsIn(sortOrderOptions) order?: SortOrder = 'desc'; } - diff --git a/src/modules/pager/controllers/pager.controller.ts b/src/modules/pager/controllers/pager.controller.ts index b5e2792..775da14 100644 --- a/src/modules/pager/controllers/pager.controller.ts +++ b/src/modules/pager/controllers/pager.controller.ts @@ -57,7 +57,14 @@ export class PagerController { @UseGuards(OptionalAuthGuard) @Get('public/pager') @ApiOperation({ summary: 'Get all pager requests for the current session' }) - @ApiHeader({ name: 'X-Slug', required: true, description: 'Restaurant slug identifier', example: 'zhivan' }) + @ApiHeader({ + name: 'X-Slug', + required: true, + schema: { + type: 'string', + default: 'zhivan', + }, + }) @ApiHeader({ name: 'Authorization', required: false, description: 'Bearer token (optional authentication)' }) async findAll(@Req() request: FastifyRequest) { const cookieId = request.cookies['pagerId'] || undefined; diff --git a/src/modules/pager/decorators/ws-admin-id.decorator.ts b/src/modules/pager/decorators/ws-admin-id.decorator.ts index f744959..18ed9c3 100644 --- a/src/modules/pager/decorators/ws-admin-id.decorator.ts +++ b/src/modules/pager/decorators/ws-admin-id.decorator.ts @@ -1,5 +1,6 @@ -import { createParamDecorator, ExecutionContext } from '@nestjs/common'; -import { AuthenticatedSocket } from '../guards/ws-admin-auth.guard'; +import type { ExecutionContext } from '@nestjs/common'; +import { createParamDecorator } from '@nestjs/common'; +import type { AuthenticatedSocket } from '../guards/ws-admin-auth.guard'; /** * Extract admin ID from authenticated WebSocket client @@ -23,4 +24,3 @@ export const WsAdminId = createParamDecorator((data: unknown, ctx: ExecutionCont return adminId; }); - diff --git a/src/modules/pager/decorators/ws-rest-id.decorator.ts b/src/modules/pager/decorators/ws-rest-id.decorator.ts index a9e3e21..bf556ef 100644 --- a/src/modules/pager/decorators/ws-rest-id.decorator.ts +++ b/src/modules/pager/decorators/ws-rest-id.decorator.ts @@ -1,5 +1,6 @@ -import { createParamDecorator, ExecutionContext } from '@nestjs/common'; -import { AuthenticatedSocket } from '../guards/ws-admin-auth.guard'; +import type { ExecutionContext } from '@nestjs/common'; +import { createParamDecorator } from '@nestjs/common'; +import type { AuthenticatedSocket } from '../guards/ws-admin-auth.guard'; /** * Extract restaurant ID from authenticated WebSocket client @@ -23,4 +24,3 @@ export const WsRestId = createParamDecorator((data: unknown, ctx: ExecutionConte return restId; }); - diff --git a/src/modules/pager/providers/pager.service.ts b/src/modules/pager/providers/pager.service.ts index f77046f..75a0154 100644 --- a/src/modules/pager/providers/pager.service.ts +++ b/src/modules/pager/providers/pager.service.ts @@ -69,7 +69,7 @@ export class PagerService { // Populate relations before emitting await this.em.populate(pager, ['restaurant']); - // Emit socket event for new pager + // Emit socket event for new pager this.eventEmitter.emit(PagerCreatedEvent.name, new PagerCreatedEvent(pager.restaurant.id)); return pager; diff --git a/src/modules/payments/controllers/payments.controller.ts b/src/modules/payments/controllers/payments.controller.ts index 05466e5..61944ce 100644 --- a/src/modules/payments/controllers/payments.controller.ts +++ b/src/modules/payments/controllers/payments.controller.ts @@ -29,7 +29,14 @@ export class PaymentsController { @ApiBearerAuth() @Get('public/payments/methods/restaurant') @ApiOperation({ summary: 'Get the restaurant payment methods' }) - @ApiHeader({ name: 'X-Slug', required: true, description: 'Restaurant slug identifier', example: 'zhivan' }) + @ApiHeader({ + name: 'X-Slug', + required: true, + schema: { + type: 'string', + default: 'zhivan', + }, + }) @ApiNotFoundResponse({ description: 'Restaurant payment methods not found' }) getTheRestaurantPaymentMethods(@RestId() restId: string) { return this.paymentMethodService.findByRestaurant(restId); @@ -39,7 +46,14 @@ export class PaymentsController { @ApiBearerAuth() @Get('public/payments') @ApiOperation({ summary: 'Get all the restaurant payments for user' }) - @ApiHeader({ name: 'X-Slug', required: true, description: 'Restaurant slug identifier', example: 'zhivan' }) + @ApiHeader({ + name: 'X-Slug', + required: true, + schema: { + type: 'string', + default: 'zhivan', + }, + }) findAllByRestaurant(@UserId() userId: string, @RestId() restId: string) { return this.paymentsService.findAllByRestaurantId(restId, userId); } @@ -127,7 +141,14 @@ export class PaymentsController { @Post('public/payments/verify') @ApiOperation({ summary: 'Verify a payment' }) - @ApiHeader({ name: 'X-Slug', required: true, description: 'Restaurant slug identifier', example: 'zhivan' }) + @ApiHeader({ + name: 'X-Slug', + required: true, + schema: { + type: 'string', + default: 'zhivan', + }, + }) @ApiBody({ type: VerifyPaymentDto }) @ApiNotFoundResponse({ description: 'Payment not found' }) verifyPayment(@Body() verifyPaymentDto: VerifyPaymentDto) { diff --git a/src/modules/payments/dto/update-payment-method.dto.ts b/src/modules/payments/dto/update-payment-method.dto.ts index 19ba7d8..7151364 100644 --- a/src/modules/payments/dto/update-payment-method.dto.ts +++ b/src/modules/payments/dto/update-payment-method.dto.ts @@ -2,4 +2,3 @@ import { PartialType } from '@nestjs/mapped-types'; import { CreatePaymentMethodDto } from './create-payment-method.dto'; export class UpdatePaymentMethodDto extends PartialType(CreatePaymentMethodDto) {} - diff --git a/src/modules/payments/services/payment-method.service.ts b/src/modules/payments/services/payment-method.service.ts index 0d2c550..bfeacf2 100644 --- a/src/modules/payments/services/payment-method.service.ts +++ b/src/modules/payments/services/payment-method.service.ts @@ -42,10 +42,7 @@ export class PaymentMethodService { } async findByRestaurant(restaurantId: string): Promise { - return this.paymentMethodRepository.find( - { restaurant: { id: restaurantId } }, - { populate: ['restaurant'] }, - ); + return this.paymentMethodRepository.find({ restaurant: { id: restaurantId } }, { populate: ['restaurant'] }); } async update(id: string, updatePaymentMethodDto: UpdatePaymentMethodDto): Promise { diff --git a/src/modules/restaurants/controllers/restaurants.controller.ts b/src/modules/restaurants/controllers/restaurants.controller.ts index b2466ec..bcd3e6a 100644 --- a/src/modules/restaurants/controllers/restaurants.controller.ts +++ b/src/modules/restaurants/controllers/restaurants.controller.ts @@ -21,7 +21,14 @@ export class RestaurantsController { @Get('public/restaurants/:slug') @ApiOperation({ summary: 'Get restaurant specification by slug' }) - @ApiHeader({ name: 'X-Slug', required: true, description: 'Restaurant slug identifier', example: 'zhivan' }) + @ApiHeader({ + name: 'X-Slug', + required: true, + schema: { + type: 'string', + default: 'zhivan', + }, + }) @ApiParam({ name: 'slug', required: true, description: 'Restaurant slug' }) @ApiNotFoundResponse({ description: 'Restaurant not found' }) findBySlug(@Param('slug') slug: string) { diff --git a/src/modules/restaurants/controllers/schedule.controller.ts b/src/modules/restaurants/controllers/schedule.controller.ts index 8e09985..e35fc20 100644 --- a/src/modules/restaurants/controllers/schedule.controller.ts +++ b/src/modules/restaurants/controllers/schedule.controller.ts @@ -26,7 +26,14 @@ export class ScheduleController { @Get('public/schedules/restaurant/:slug') @ApiOperation({ summary: 'Get schedule of a restaurant by slug' }) - @ApiHeader({ name: 'X-Slug', required: true, description: 'Restaurant slug identifier', example: 'zhivan' }) + @ApiHeader({ + name: 'X-Slug', + required: true, + schema: { + type: 'string', + default: 'zhivan', + }, + }) @ApiParam({ name: 'slug', description: 'Restaurant Slug' }) @ApiOkResponse({ description: 'Today schedule of the restaurant', type: Schedule }) async getTodaySchedules(@Param('slug') slug: string): Promise { diff --git a/src/modules/restaurants/dto/create-schedule.dto.ts b/src/modules/restaurants/dto/create-schedule.dto.ts index cac8dd7..bdb4595 100644 --- a/src/modules/restaurants/dto/create-schedule.dto.ts +++ b/src/modules/restaurants/dto/create-schedule.dto.ts @@ -29,5 +29,4 @@ export class CreateScheduleDto { @IsBoolean() @Type(() => Boolean) isActive?: boolean; - } diff --git a/src/modules/restaurants/dto/restaurant-specification.dto.ts b/src/modules/restaurants/dto/restaurant-specification.dto.ts index 4c5ff3b..14c341a 100644 --- a/src/modules/restaurants/dto/restaurant-specification.dto.ts +++ b/src/modules/restaurants/dto/restaurant-specification.dto.ts @@ -26,7 +26,18 @@ export class RestaurantSpecificationDto { longitude?: number; @ApiPropertyOptional({ - example: { type: 'Polygon', coordinates: [[[51.389, 35.6892], [51.390, 35.6892], [51.390, 35.6902], [51.389, 35.6902], [51.389, 35.6892]]] }, + example: { + type: 'Polygon', + coordinates: [ + [ + [51.389, 35.6892], + [51.39, 35.6892], + [51.39, 35.6902], + [51.389, 35.6902], + [51.389, 35.6892], + ], + ], + }, description: 'Service area as GeoJSON Polygon', }) serviceArea?: { diff --git a/src/modules/review/controllers/review.controller.ts b/src/modules/review/controllers/review.controller.ts index 7c1b17b..e76b9de 100644 --- a/src/modules/review/controllers/review.controller.ts +++ b/src/modules/review/controllers/review.controller.ts @@ -30,7 +30,14 @@ export class ReviewController { @ApiBearerAuth() @Post('public/reviews') @ApiOperation({ summary: 'Create a new review and rating' }) - @ApiHeader({ name: 'X-Slug', required: true, description: 'Restaurant slug identifier', example: 'zhivan' }) + @ApiHeader({ + name: 'X-Slug', + required: true, + schema: { + type: 'string', + default: 'zhivan', + }, + }) @ApiCreatedResponse({ description: 'The review has been successfully created.' }) @ApiBody({ type: CreateReviewDto }) create(@Body() createReviewDto: CreateReviewDto, @UserId() userId: string) { @@ -39,7 +46,14 @@ export class ReviewController { @Get('public/reviews/:foodId') @ApiOperation({ summary: 'Get all reviews of food by id(public - only approved)' }) - @ApiHeader({ name: 'X-Slug', required: true, description: 'Restaurant slug identifier', example: 'zhivan' }) + @ApiHeader({ + name: 'X-Slug', + required: true, + schema: { + type: 'string', + default: 'zhivan', + }, + }) @ApiOkResponse({ description: 'List of approved reviews' }) @ApiParam({ name: 'foodId', required: true, type: String }) @ApiQuery({ name: 'page', required: false, type: Number }) @@ -53,7 +67,14 @@ export class ReviewController { @Get('public/reviews/restuarant/:restuarantSlug') @ApiOperation({ summary: 'Get all reviews of restuarant by slug(public - only approved)' }) - @ApiHeader({ name: 'X-Slug', required: true, description: 'Restaurant slug identifier', example: 'zhivan' }) + @ApiHeader({ + name: 'X-Slug', + required: true, + schema: { + type: 'string', + default: 'zhivan', + }, + }) @ApiOkResponse({ description: 'List of approved reviews' }) @ApiParam({ name: 'restuarantSlug', required: true, type: String }) @ApiQuery({ name: 'page', required: false, type: Number }) @@ -78,7 +99,14 @@ export class ReviewController { @ApiBearerAuth() @Patch('public/reviews/:reviewId') @ApiOperation({ summary: 'Update a review (own reviews only)' }) - @ApiHeader({ name: 'X-Slug', required: true, description: 'Restaurant slug identifier', example: 'zhivan' }) + @ApiHeader({ + name: 'X-Slug', + required: true, + schema: { + type: 'string', + default: 'zhivan', + }, + }) @ApiParam({ name: 'reviewId', required: true }) @ApiBody({ type: UpdateReviewDto }) @ApiOkResponse({ description: 'The updated review' }) @@ -90,7 +118,14 @@ export class ReviewController { @ApiBearerAuth() @Delete('public/reviews/:id') @ApiOperation({ summary: 'Delete a review (own reviews only)' }) - @ApiHeader({ name: 'X-Slug', required: true, description: 'Restaurant slug identifier', example: 'zhivan' }) + @ApiHeader({ + name: 'X-Slug', + required: true, + schema: { + type: 'string', + default: 'zhivan', + }, + }) @ApiParam({ name: 'id', required: true }) remove(@Param('id') id: string, @UserId() userId: string) { return this.reviewService.remove(id, userId, false); diff --git a/src/modules/review/dto/change-status.dto.ts b/src/modules/review/dto/change-status.dto.ts index f5c0198..3be9bd7 100644 --- a/src/modules/review/dto/change-status.dto.ts +++ b/src/modules/review/dto/change-status.dto.ts @@ -11,4 +11,3 @@ export class ChangeStatusDto { }) status: ReviewStatus; } - diff --git a/src/modules/review/dto/update-review.dto.ts b/src/modules/review/dto/update-review.dto.ts index b815f5b..a377045 100644 --- a/src/modules/review/dto/update-review.dto.ts +++ b/src/modules/review/dto/update-review.dto.ts @@ -21,20 +21,20 @@ export class UpdateReviewDto { @IsOptional() @IsArray() @IsEnum(PositivePoint, { each: true }) - @ApiPropertyOptional({ - description: 'Positive points about the food', + @ApiPropertyOptional({ + description: 'Positive points about the food', enum: PositivePoint, - isArray: true + isArray: true, }) positivePoints?: PositivePoint[]; @IsOptional() @IsArray() @IsEnum(NegativePoint, { each: true }) - @ApiPropertyOptional({ - description: 'Negative points about the food', + @ApiPropertyOptional({ + description: 'Negative points about the food', enum: NegativePoint, - isArray: true + isArray: true, }) negativePoints?: NegativePoint[]; @@ -43,4 +43,3 @@ export class UpdateReviewDto { @ApiPropertyOptional({ description: 'Review status (admin only)', enum: ReviewStatus }) status?: ReviewStatus; } - diff --git a/src/modules/review/enums/review-status.enum.ts b/src/modules/review/enums/review-status.enum.ts index 7349b39..b46c121 100644 --- a/src/modules/review/enums/review-status.enum.ts +++ b/src/modules/review/enums/review-status.enum.ts @@ -3,4 +3,3 @@ export enum ReviewStatus { REJECTED = 'rejected', APPROVED = 'approved', } - diff --git a/src/modules/review/providers/food-rating-cron.service.ts b/src/modules/review/providers/food-rating-cron.service.ts index feacede..63324c2 100644 --- a/src/modules/review/providers/food-rating-cron.service.ts +++ b/src/modules/review/providers/food-rating-cron.service.ts @@ -69,12 +69,9 @@ export class FoodRatingCronService { // Flush all updates at once for better performance await this.em.flush(); - this.logger.log( - `Food rating calculation completed. Updated: ${updatedCount}, Errors: ${errorCount}`, - ); + this.logger.log(`Food rating calculation completed. Updated: ${updatedCount}, Errors: ${errorCount}`); } catch (error) { this.logger.error(`Error in food rating cron job: ${error.message}`, error.stack); } } } - diff --git a/src/modules/review/repositories/review.repository.ts b/src/modules/review/repositories/review.repository.ts index 9b3abaf..5114e1e 100644 --- a/src/modules/review/repositories/review.repository.ts +++ b/src/modules/review/repositories/review.repository.ts @@ -53,7 +53,7 @@ export class ReviewRepository extends EntityRepository { limit, offset, orderBy: { [orderBy]: order.toLowerCase() as 'asc' | 'desc' }, - populate: ['food','user'], + populate: ['food', 'user'], }); const totalPages = Math.ceil(total / limit); diff --git a/src/modules/review/review.module.ts b/src/modules/review/review.module.ts index ec6d3b8..7596d6e 100644 --- a/src/modules/review/review.module.ts +++ b/src/modules/review/review.module.ts @@ -11,16 +11,9 @@ import { AuthModule } from '../auth/auth.module'; import { JwtModule } from '@nestjs/jwt'; @Module({ - imports: [ - MikroOrmModule.forFeature([Review]), - FoodModule, - UserModule, - AuthModule, - JwtModule, - ], + imports: [MikroOrmModule.forFeature([Review]), FoodModule, UserModule, AuthModule, JwtModule], controllers: [ReviewController], providers: [ReviewService, ReviewRepository, FoodRatingCronService], exports: [ReviewRepository], }) export class ReviewModule {} - diff --git a/src/modules/roles/dto/create-role.dto.ts b/src/modules/roles/dto/create-role.dto.ts index b1fe091..8048ef3 100644 --- a/src/modules/roles/dto/create-role.dto.ts +++ b/src/modules/roles/dto/create-role.dto.ts @@ -7,7 +7,6 @@ export class CreateRoleDto { @IsString() name!: string; - @ApiProperty({ description: 'List of permission IDs', isArray: true, required: false }) @IsOptional() @IsArray() diff --git a/src/modules/roles/entities/permission.entity.ts b/src/modules/roles/entities/permission.entity.ts index 7c03473..e3a62ac 100755 --- a/src/modules/roles/entities/permission.entity.ts +++ b/src/modules/roles/entities/permission.entity.ts @@ -10,7 +10,7 @@ export class Permission extends BaseEntity { @Property() title!: string; -// اضافه شد + // اضافه شد @Property({ default: 'general' }) group!: string; diff --git a/src/modules/uploader/interfaces/file.interface.ts b/src/modules/uploader/interfaces/file.interface.ts index bc8a5ff..b4825b9 100644 --- a/src/modules/uploader/interfaces/file.interface.ts +++ b/src/modules/uploader/interfaces/file.interface.ts @@ -1,4 +1,4 @@ -import { File } from "@nest-lab/fastify-multer"; +import type { File } from '@nest-lab/fastify-multer'; export interface FileUploadResult { file: File; @@ -19,7 +19,7 @@ export interface FileMetadata { language?: string; } -export type FileType = "video" | "audio" | "image" | "document" | "text" | "unknown"; +export type FileType = 'video' | 'audio' | 'image' | 'document' | 'text' | 'unknown'; export interface FileValidationOptions { maxFileSize: number; @@ -32,7 +32,7 @@ export interface FileUploadOptions { } // File processing status -export type FileProcessingStatus = "pending" | "processing" | "completed" | "failed"; +export type FileProcessingStatus = 'pending' | 'processing' | 'completed' | 'failed'; export interface FileProcessingResult { status: FileProcessingStatus; diff --git a/src/modules/uploader/interfaces/s3.interface.ts b/src/modules/uploader/interfaces/s3.interface.ts index f510a4c..2791d05 100644 --- a/src/modules/uploader/interfaces/s3.interface.ts +++ b/src/modules/uploader/interfaces/s3.interface.ts @@ -7,7 +7,7 @@ export interface S3UploadResult { export interface S3UploadOptions { contentType: string; metadata?: Record; - acl?: "private" | "public-read" | "public-read-write"; + acl?: 'private' | 'public-read' | 'public-read-write'; } export interface S3DownloadOptions { diff --git a/src/modules/users/controllers/users.controller.ts b/src/modules/users/controllers/users.controller.ts index 9803e68..ad163ba 100644 --- a/src/modules/users/controllers/users.controller.ts +++ b/src/modules/users/controllers/users.controller.ts @@ -19,7 +19,14 @@ export class UsersController { @UseGuards(AuthGuard) @ApiBearerAuth() @ApiOperation({ summary: 'Get the current authenticated user profile' }) - @ApiHeader({ name: 'X-Slug', required: true, description: 'Restaurant slug identifier', example: 'zhivan' }) + @ApiHeader({ + name: 'X-Slug', + required: true, + schema: { + type: 'string', + default: 'zhivan', + }, + }) @Get('public/user/me') async getUser(@UserId() userId: string) { const user = await this.userService.findById(userId); @@ -28,7 +35,14 @@ export class UsersController { @UseGuards(AuthGuard) @ApiBearerAuth() @ApiOperation({ summary: 'Update the authenticated user profile' }) - @ApiHeader({ name: 'X-Slug', required: true, description: 'Restaurant slug identifier', example: 'zhivan' }) + @ApiHeader({ + name: 'X-Slug', + required: true, + schema: { + type: 'string', + default: 'zhivan', + }, + }) @ApiBody({ type: UpdateUserDto }) @Patch('public/user/update') async updateUser( @@ -42,7 +56,14 @@ export class UsersController { @UseGuards(AuthGuard) @ApiBearerAuth() @ApiOperation({ summary: 'Get all addresses for the authenticated user' }) - @ApiHeader({ name: 'X-Slug', required: true, description: 'Restaurant slug identifier', example: 'zhivan' }) + @ApiHeader({ + name: 'X-Slug', + required: true, + schema: { + type: 'string', + default: 'zhivan', + }, + }) @ApiOkResponse({ description: 'List of user addresses' }) @Get('public/user/addresses') async getUserAddresses(@UserId() userId: string) { @@ -53,7 +74,14 @@ export class UsersController { @UseGuards(AuthGuard) @ApiBearerAuth() @ApiOperation({ summary: 'Create a new address for the authenticated user' }) - @ApiHeader({ name: 'X-Slug', required: true, description: 'Restaurant slug identifier', example: 'zhivan' }) + @ApiHeader({ + name: 'X-Slug', + required: true, + schema: { + type: 'string', + default: 'zhivan', + }, + }) @ApiBody({ type: CreateUserAddressDto }) @ApiOkResponse({ description: 'Created user address' }) @Post('public/user/addresses') @@ -68,7 +96,14 @@ export class UsersController { @UseGuards(AuthGuard) @ApiBearerAuth() @ApiOperation({ summary: 'Get a single address by ID for the authenticated user' }) - @ApiHeader({ name: 'X-Slug', required: true, description: 'Restaurant slug identifier', example: 'zhivan' }) + @ApiHeader({ + name: 'X-Slug', + required: true, + schema: { + type: 'string', + default: 'zhivan', + }, + }) @ApiOkResponse({ description: 'User address details' }) @Get('public/user/addresses/:addressId') async getUserAddress(@UserId() userId: string, @Param('addressId') addressId: string) { @@ -79,7 +114,14 @@ export class UsersController { @UseGuards(AuthGuard) @ApiBearerAuth() @ApiOperation({ summary: 'Update an address for the authenticated user' }) - @ApiHeader({ name: 'X-Slug', required: true, description: 'Restaurant slug identifier', example: 'zhivan' }) + @ApiHeader({ + name: 'X-Slug', + required: true, + schema: { + type: 'string', + default: 'zhivan', + }, + }) @ApiBody({ type: UpdateUserAddressDto }) @ApiOkResponse({ description: 'Updated user address' }) @Patch('public/user/addresses/:addressId') @@ -95,7 +137,14 @@ export class UsersController { @UseGuards(AuthGuard) @ApiBearerAuth() @ApiOperation({ summary: 'Delete an address for the authenticated user' }) - @ApiHeader({ name: 'X-Slug', required: true, description: 'Restaurant slug identifier', example: 'zhivan' }) + @ApiHeader({ + name: 'X-Slug', + required: true, + schema: { + type: 'string', + default: 'zhivan', + }, + }) @ApiOkResponse({ description: 'Address deleted successfully' }) @Delete('public/user/addresses/:addressId') async deleteUserAddress(@UserId() userId: string, @Param('addressId') addressId: string) { @@ -106,7 +155,14 @@ export class UsersController { @UseGuards(AuthGuard) @ApiBearerAuth() @ApiOperation({ summary: 'Set an address as default for the authenticated user' }) - @ApiHeader({ name: 'X-Slug', required: true, description: 'Restaurant slug identifier', example: 'zhivan' }) + @ApiHeader({ + name: 'X-Slug', + required: true, + schema: { + type: 'string', + default: 'zhivan', + }, + }) @ApiOkResponse({ description: 'Address set as default' }) @Patch('public/user/addresses/:addressId/default') async setDefaultAddress(@UserId() userId: string, @Param('addressId') addressId: string) { @@ -130,7 +186,14 @@ export class UsersController { @UseGuards(AuthGuard) @ApiBearerAuth() @ApiOperation({ summary: 'Convert user score (points) to wallet balance' }) - @ApiHeader({ name: 'X-Slug', required: true, description: 'Restaurant slug identifier', example: 'zhivan' }) + @ApiHeader({ + name: 'X-Slug', + required: true, + schema: { + type: 'string', + default: 'zhivan', + }, + }) @ApiBody({ type: ConvertScoreToWalletDto }) @Post('public/user/convert-score-to-wallet') async convertScoreToWallet(@UserId() userId: string, @Body() dto: ConvertScoreToWalletDto, @RestId() restId: string) { diff --git a/src/modules/users/dto/create-user-address.dto.ts b/src/modules/users/dto/create-user-address.dto.ts index 95a8893..0e6a454 100644 --- a/src/modules/users/dto/create-user-address.dto.ts +++ b/src/modules/users/dto/create-user-address.dto.ts @@ -33,7 +33,7 @@ export class CreateUserAddressDto { @Max(90) latitude!: number; - @ApiProperty({ description: 'Longitude coordinate', example: 51.3890, minimum: -180, maximum: 180 }) + @ApiProperty({ description: 'Longitude coordinate', example: 51.389, minimum: -180, maximum: 180 }) @IsNumber() @Min(-180) @Max(180) @@ -49,4 +49,3 @@ export class CreateUserAddressDto { @IsBoolean() isDefault?: boolean; } - diff --git a/src/modules/users/dto/update-user-address.dto.ts b/src/modules/users/dto/update-user-address.dto.ts index a1e98a2..e82330c 100644 --- a/src/modules/users/dto/update-user-address.dto.ts +++ b/src/modules/users/dto/update-user-address.dto.ts @@ -37,7 +37,7 @@ export class UpdateUserAddressDto { @Max(90) latitude?: number; - @ApiPropertyOptional({ description: 'Longitude coordinate', example: 51.3890, minimum: -180, maximum: 180 }) + @ApiPropertyOptional({ description: 'Longitude coordinate', example: 51.389, minimum: -180, maximum: 180 }) @IsOptional() @IsNumber() @Min(-180) @@ -54,4 +54,3 @@ export class UpdateUserAddressDto { @IsBoolean() isDefault?: boolean; } - diff --git a/src/modules/utils/cache.service.ts b/src/modules/utils/cache.service.ts index 030b7eb..fc9be4f 100755 --- a/src/modules/utils/cache.service.ts +++ b/src/modules/utils/cache.service.ts @@ -43,9 +43,6 @@ export class CacheService implements OnModuleInit { } } - - - // // src/modules/cache/cache.service.ts // import { CACHE_MANAGER, Cache } from '@nestjs/cache-manager'; // import { Inject, Injectable, Logger, OnModuleInit } from '@nestjs/common'; @@ -147,4 +144,4 @@ export class CacheService implements OnModuleInit { // return undefined; // } // } -// } \ No newline at end of file +// } diff --git a/src/modules/utils/phone.util.ts b/src/modules/utils/phone.util.ts index 6efea38..d659e29 100644 --- a/src/modules/utils/phone.util.ts +++ b/src/modules/utils/phone.util.ts @@ -28,4 +28,3 @@ export function normalizePhone(phone: string): string { return normalized; } - diff --git a/src/seeders/admins.seeder.ts b/src/seeders/admins.seeder.ts index 8b8310c..a4287ff 100644 --- a/src/seeders/admins.seeder.ts +++ b/src/seeders/admins.seeder.ts @@ -1,8 +1,8 @@ import type { EntityManager } from '@mikro-orm/core'; import { Admin } from '../modules/admin/entities/admin.entity'; import { AdminRole } from '../modules/admin/entities/adminRole.entity'; -import { Role } from '../modules/roles/entities/role.entity'; -import { Restaurant } from '../modules/restaurants/entities/restaurant.entity'; +import type { Role } from '../modules/roles/entities/role.entity'; +import type { Restaurant } from '../modules/restaurants/entities/restaurant.entity'; import { adminsData } from './data/admins.data'; import { normalizePhone } from '../modules/utils/phone.util'; diff --git a/src/seeders/categories.seeder.ts b/src/seeders/categories.seeder.ts index 456a41e..f76a8ec 100644 --- a/src/seeders/categories.seeder.ts +++ b/src/seeders/categories.seeder.ts @@ -1,13 +1,10 @@ import type { EntityManager } from '@mikro-orm/core'; import { Category } from '../modules/foods/entities/category.entity'; -import { Restaurant } from '../modules/restaurants/entities/restaurant.entity'; +import type { Restaurant } from '../modules/restaurants/entities/restaurant.entity'; import { categoriesData } from './data/categories.data'; export class CategoriesSeeder { - async run( - em: EntityManager, - restaurantsMap: Map, - ): Promise> { + async run(em: EntityManager, restaurantsMap: Map): Promise> { const categoriesMap = new Map(); for (const catData of categoriesData) { @@ -36,4 +33,3 @@ export class CategoriesSeeder { return categoriesMap; } } - diff --git a/src/seeders/coupons.seeder.ts b/src/seeders/coupons.seeder.ts index a1136ff..024d01b 100644 --- a/src/seeders/coupons.seeder.ts +++ b/src/seeders/coupons.seeder.ts @@ -1,6 +1,6 @@ import type { EntityManager } from '@mikro-orm/core'; import { Coupon } from '../modules/coupons/entities/coupon.entity'; -import { Restaurant } from '../modules/restaurants/entities/restaurant.entity'; +import type { Restaurant } from '../modules/restaurants/entities/restaurant.entity'; import { couponsData } from './data/coupons.data'; export class CouponsSeeder { @@ -40,4 +40,3 @@ export class CouponsSeeder { await em.flush(); } } - diff --git a/src/seeders/data/admins.data.ts b/src/seeders/data/admins.data.ts index 4cdca77..a748ff2 100644 --- a/src/seeders/data/admins.data.ts +++ b/src/seeders/data/admins.data.ts @@ -29,4 +29,3 @@ export const adminsData: AdminData[] = [ restaurantSlug: null, }, ]; - diff --git a/src/seeders/data/categories.data.ts b/src/seeders/data/categories.data.ts index 337edc1..a945976 100644 --- a/src/seeders/data/categories.data.ts +++ b/src/seeders/data/categories.data.ts @@ -13,4 +13,3 @@ export const categoriesData: CategoryData[] = [ { title: 'دسر', restaurantSlug: 'boote' }, { title: 'نوشیدنی', restaurantSlug: 'boote' }, ]; - diff --git a/src/seeders/data/coupons.data.ts b/src/seeders/data/coupons.data.ts index 07dfcd2..4cacc51 100644 --- a/src/seeders/data/coupons.data.ts +++ b/src/seeders/data/coupons.data.ts @@ -92,4 +92,3 @@ export const couponsData: CouponData[] = [ isActive: true, }, ]; - diff --git a/src/seeders/data/delivery-methods.data.ts b/src/seeders/data/delivery-methods.data.ts index 4e6583a..fec78f6 100644 --- a/src/seeders/data/delivery-methods.data.ts +++ b/src/seeders/data/delivery-methods.data.ts @@ -48,4 +48,3 @@ export const deliveryMethodsData: DeliveryMethodData[] = [ order: 4, }, ]; - diff --git a/src/seeders/data/notification-preferences.data.ts b/src/seeders/data/notification-preferences.data.ts index a007b10..eb63bbf 100644 --- a/src/seeders/data/notification-preferences.data.ts +++ b/src/seeders/data/notification-preferences.data.ts @@ -1,5 +1,5 @@ import { NotifChannelEnum, NotifTitleEnum } from '../../modules/notifications/interfaces/notification.interface'; - + export interface NotificationPreferenceData { title: NotifTitleEnum; channels: NotifChannelEnum[]; diff --git a/src/seeders/data/permissions.data.ts b/src/seeders/data/permissions.data.ts index 4a74a07..5bc2c3c 100644 --- a/src/seeders/data/permissions.data.ts +++ b/src/seeders/data/permissions.data.ts @@ -13,4 +13,3 @@ export const getPermissionsData = () => { group: specialPermissions.includes(name) ? 'special' : 'general', })); }; - diff --git a/src/seeders/data/roles.data.ts b/src/seeders/data/roles.data.ts index a8d07a2..63a60cf 100644 --- a/src/seeders/data/roles.data.ts +++ b/src/seeders/data/roles.data.ts @@ -16,9 +16,7 @@ export const rolesData: RoleConfig[] = [ name: 'accountant', isSystem: false, permissionFilter: (name: Permission) => - name === Permission.VIEW_REPORTS || - name === Permission.MANAGE_FINANCES || - name === Permission.MANAGE_ORDERS, + name === Permission.VIEW_REPORTS || name === Permission.MANAGE_FINANCES || name === Permission.MANAGE_ORDERS, }, { name: 'superAdmin', @@ -29,4 +27,3 @@ export const rolesData: RoleConfig[] = [ name === Permission.UPDATE_RESTAURANT, }, ]; - diff --git a/src/seeders/data/schedules.data.ts b/src/seeders/data/schedules.data.ts index dcd9350..2473c35 100644 --- a/src/seeders/data/schedules.data.ts +++ b/src/seeders/data/schedules.data.ts @@ -8,4 +8,3 @@ export const timeSlots: TimeSlot[] = [ { openTime: '12:00', closeTime: '15:00' }, // Lunch { openTime: '18:00', closeTime: '23:00' }, // Dinner ]; - diff --git a/src/seeders/data/user-addresses.data.ts b/src/seeders/data/user-addresses.data.ts index bbbe8fd..c5404da 100644 --- a/src/seeders/data/user-addresses.data.ts +++ b/src/seeders/data/user-addresses.data.ts @@ -20,7 +20,7 @@ export const userAddressesData: UserAddressData[] = [ province: 'تهران', postalCode: '1234567890', latitude: 35.6892, - longitude: 51.3890, + longitude: 51.389, phone: '09362532122', isDefault: true, }, @@ -31,8 +31,8 @@ export const userAddressesData: UserAddressData[] = [ city: 'تهران', province: 'تهران', postalCode: '1234567891', - latitude: 35.6900, - longitude: 51.3900, + latitude: 35.69, + longitude: 51.39, phone: '09185290775', isDefault: true, }, @@ -43,8 +43,8 @@ export const userAddressesData: UserAddressData[] = [ city: 'تهران', province: 'تهران', postalCode: '1234567892', - latitude: 35.6910, - longitude: 51.3910, + latitude: 35.691, + longitude: 51.391, phone: '09129283395', isDefault: true, }, @@ -55,10 +55,9 @@ export const userAddressesData: UserAddressData[] = [ city: 'تهران', province: 'تهران', postalCode: '1234567893', - latitude: 35.6920, - longitude: 51.3920, + latitude: 35.692, + longitude: 51.392, phone: '09184317567', isDefault: true, }, ]; - diff --git a/src/seeders/delivery-methods.seeder.ts b/src/seeders/delivery-methods.seeder.ts index e2a05d8..6ab16d6 100644 --- a/src/seeders/delivery-methods.seeder.ts +++ b/src/seeders/delivery-methods.seeder.ts @@ -1,6 +1,6 @@ import type { EntityManager } from '@mikro-orm/core'; import { Delivery } from '../modules/delivery/entities/delivery.entity'; -import { Restaurant } from '../modules/restaurants/entities/restaurant.entity'; +import type { Restaurant } from '../modules/restaurants/entities/restaurant.entity'; import { deliveryMethodsData } from './data/delivery-methods.data'; import { DeliveryFeeTypeEnum } from 'src/modules/delivery/interface/delivery'; diff --git a/src/seeders/foods.seeder.ts b/src/seeders/foods.seeder.ts index adb4981..23574f5 100644 --- a/src/seeders/foods.seeder.ts +++ b/src/seeders/foods.seeder.ts @@ -1,7 +1,7 @@ import type { EntityManager } from '@mikro-orm/core'; import { Food } from '../modules/foods/entities/food.entity'; -import { Restaurant } from '../modules/restaurants/entities/restaurant.entity'; -import { Category } from '../modules/foods/entities/category.entity'; +import type { Restaurant } from '../modules/restaurants/entities/restaurant.entity'; +import type { Category } from '../modules/foods/entities/category.entity'; import { foodsData } from './data/foods.data'; export class FoodsSeeder { diff --git a/src/seeders/payment-methods.seeder.ts b/src/seeders/payment-methods.seeder.ts index d83586b..6a6ed37 100644 --- a/src/seeders/payment-methods.seeder.ts +++ b/src/seeders/payment-methods.seeder.ts @@ -1,6 +1,6 @@ import type { EntityManager } from '@mikro-orm/core'; import { PaymentMethod } from '../modules/payments/entities/payment-method.entity'; -import { Restaurant } from '../modules/restaurants/entities/restaurant.entity'; +import type { Restaurant } from '../modules/restaurants/entities/restaurant.entity'; import { paymentMethodsData } from './data/payment-methods.data'; export class PaymentMethodsSeeder { @@ -53,4 +53,3 @@ export class PaymentMethodsSeeder { await em.flush(); } } - diff --git a/src/seeders/permissions.seeder.ts b/src/seeders/permissions.seeder.ts index 31ce8bc..5a8dfd3 100644 --- a/src/seeders/permissions.seeder.ts +++ b/src/seeders/permissions.seeder.ts @@ -26,4 +26,3 @@ export class PermissionsSeeder { return createdPermissions; } } - diff --git a/src/seeders/restaurants.seeder.ts b/src/seeders/restaurants.seeder.ts index 4eef90e..467e2ba 100644 --- a/src/seeders/restaurants.seeder.ts +++ b/src/seeders/restaurants.seeder.ts @@ -19,4 +19,3 @@ export class RestaurantsSeeder { return restaurantsMap; } } - diff --git a/src/seeders/roles.seeder.ts b/src/seeders/roles.seeder.ts index d6946fd..5daed18 100644 --- a/src/seeders/roles.seeder.ts +++ b/src/seeders/roles.seeder.ts @@ -1,7 +1,7 @@ import type { EntityManager } from '@mikro-orm/core'; import { Role } from '../modules/roles/entities/role.entity'; -import { Permission } from '../common/enums/permission.enum'; -import { Permission as PermissionEntity } from '../modules/roles/entities/permission.entity'; +import type { Permission } from '../common/enums/permission.enum'; +import type { Permission as PermissionEntity } from '../modules/roles/entities/permission.entity'; import { rolesData } from './data/roles.data'; export class RolesSeeder { @@ -25,9 +25,7 @@ export class RolesSeeder { generalPermissions.forEach(p => newRole.permissions.add(p)); } else { // For other roles, use the permission filter - const filteredPermissions = permissions.filter(p => - roleConfig.permissionFilter(p.name as Permission), - ); + const filteredPermissions = permissions.filter(p => roleConfig.permissionFilter(p.name as Permission)); filteredPermissions.forEach(p => newRole.permissions.add(p)); } @@ -41,4 +39,3 @@ export class RolesSeeder { return rolesMap; } } - diff --git a/src/seeders/schedules.seeder.ts b/src/seeders/schedules.seeder.ts index 8a42179..dd72389 100644 --- a/src/seeders/schedules.seeder.ts +++ b/src/seeders/schedules.seeder.ts @@ -1,6 +1,6 @@ import type { EntityManager } from '@mikro-orm/core'; import { Schedule } from '../modules/restaurants/entities/schedule.entity'; -import { Restaurant } from '../modules/restaurants/entities/restaurant.entity'; +import type { Restaurant } from '../modules/restaurants/entities/restaurant.entity'; import { timeSlots } from './data/schedules.data'; export class SchedulesSeeder { @@ -36,4 +36,3 @@ export class SchedulesSeeder { await em.flush(); } } - diff --git a/test/app.e2e-spec.ts b/test/app.e2e-spec.ts index 5c64fac..f85215e 100644 --- a/test/app.e2e-spec.ts +++ b/test/app.e2e-spec.ts @@ -1,7 +1,8 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import { INestApplication } from '@nestjs/common'; +import type { TestingModule } from '@nestjs/testing'; +import { Test } from '@nestjs/testing'; +import type { INestApplication } from '@nestjs/common'; import request from 'supertest'; -import { App } from 'supertest/types'; +import type { App } from 'supertest/types'; import { AppModule } from './../src/app.module'; describe('AppController (e2e)', () => {