fix(api,ci): remove type-only imports for DI and isolate CI ports from dev
- Remove `type` keyword from NestJS injectable class imports across all modules to fix runtime DI resolution (330+ handler/listener files) - Offset CI docker-compose ports (5433/6380/8109/9002) to avoid conflicts with running dev containers - Update .env.test, playwright.config.ts, and e2e workflow to use isolated CI ports with configurable overrides - Fix prisma/seed.ts to use deterministic IDs for Prisma 7 upsert compatibility (phoneHash replaced phone as unique index) - Add dedicated Docker bridge network for CI service containers Co-Authored-By: Claude Opus 4 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,9 +1,9 @@
|
||||
import { Inject, InternalServerErrorException } from '@nestjs/common';
|
||||
import { CommandHandler, type EventBus, type ICommandHandler } from '@nestjs/cqrs';
|
||||
import { CommandHandler, EventBus, ICommandHandler } from '@nestjs/cqrs';
|
||||
import { createId } from '@paralleldrive/cuid2';
|
||||
import { DomainException, NotFoundException, type PrismaService, type LoggerService } from '@modules/shared';
|
||||
import { DomainException, NotFoundException, PrismaService, LoggerService } from '@modules/shared';
|
||||
import { InquiryEntity } from '../../../domain/entities/inquiry.entity';
|
||||
import { INQUIRY_REPOSITORY, type IInquiryRepository } from '../../../domain/repositories/inquiry.repository';
|
||||
import { INQUIRY_REPOSITORY, IInquiryRepository } from '../../../domain/repositories/inquiry.repository';
|
||||
import { CreateInquiryCommand } from './create-inquiry.command';
|
||||
|
||||
export interface CreateInquiryResult {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { Inject, InternalServerErrorException } from '@nestjs/common';
|
||||
import { CommandHandler, type EventBus, type ICommandHandler } from '@nestjs/cqrs';
|
||||
import { DomainException, ForbiddenException, NotFoundException, type PrismaService, type LoggerService } from '@modules/shared';
|
||||
import { INQUIRY_REPOSITORY, type IInquiryRepository } from '../../../domain/repositories/inquiry.repository';
|
||||
import { CommandHandler, EventBus, ICommandHandler } from '@nestjs/cqrs';
|
||||
import { DomainException, ForbiddenException, NotFoundException, PrismaService, LoggerService } from '@modules/shared';
|
||||
import { INQUIRY_REPOSITORY, IInquiryRepository } from '../../../domain/repositories/inquiry.repository';
|
||||
import { MarkInquiryReadCommand } from './mark-inquiry-read.command';
|
||||
|
||||
@CommandHandler(MarkInquiryReadCommand)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { Inject, InternalServerErrorException } from '@nestjs/common';
|
||||
import { type IQueryHandler, QueryHandler } from '@nestjs/cqrs';
|
||||
import { DomainException, NotFoundException, type PrismaService, type LoggerService } from '@modules/shared';
|
||||
import { type InquiryReadDto } from '../../../domain/repositories/inquiry-read.dto';
|
||||
import { INQUIRY_REPOSITORY, type IInquiryRepository, type PaginatedResult } from '../../../domain/repositories/inquiry.repository';
|
||||
import { IQueryHandler, QueryHandler } from '@nestjs/cqrs';
|
||||
import { DomainException, NotFoundException, PrismaService, LoggerService } from '@modules/shared';
|
||||
import { InquiryReadDto } from '../../../domain/repositories/inquiry-read.dto';
|
||||
import { INQUIRY_REPOSITORY, IInquiryRepository, PaginatedResult } from '../../../domain/repositories/inquiry.repository';
|
||||
import { GetInquiriesByAgentQuery } from './get-inquiries-by-agent.query';
|
||||
|
||||
@QueryHandler(GetInquiriesByAgentQuery)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { Inject, InternalServerErrorException } from '@nestjs/common';
|
||||
import { type IQueryHandler, QueryHandler } from '@nestjs/cqrs';
|
||||
import { DomainException, type LoggerService } from '@modules/shared';
|
||||
import { type InquiryReadDto } from '../../../domain/repositories/inquiry-read.dto';
|
||||
import { INQUIRY_REPOSITORY, type IInquiryRepository, type PaginatedResult } from '../../../domain/repositories/inquiry.repository';
|
||||
import { IQueryHandler, QueryHandler } from '@nestjs/cqrs';
|
||||
import { DomainException, LoggerService } from '@modules/shared';
|
||||
import { InquiryReadDto } from '../../../domain/repositories/inquiry-read.dto';
|
||||
import { INQUIRY_REPOSITORY, IInquiryRepository, PaginatedResult } from '../../../domain/repositories/inquiry.repository';
|
||||
import { GetInquiriesByListingQuery } from './get-inquiries-by-listing.query';
|
||||
|
||||
@QueryHandler(GetInquiriesByListingQuery)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { type DomainEvent } from '@modules/shared';
|
||||
import { DomainEvent } from '@modules/shared';
|
||||
|
||||
export class InquiryCreatedEvent implements DomainEvent {
|
||||
readonly eventName = 'inquiry.created';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { type DomainEvent } from '@modules/shared';
|
||||
import { DomainEvent } from '@modules/shared';
|
||||
|
||||
export class InquiryReadEvent implements DomainEvent {
|
||||
readonly eventName = 'inquiry.read';
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
export {
|
||||
INQUIRY_REPOSITORY,
|
||||
type IInquiryRepository,
|
||||
IInquiryRepository,
|
||||
type PaginatedResult,
|
||||
} from './inquiry.repository';
|
||||
export { type InquiryReadDto } from './inquiry-read.dto';
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { type InquiryEntity } from '../entities/inquiry.entity';
|
||||
import { type InquiryReadDto } from './inquiry-read.dto';
|
||||
import { InquiryEntity } from '../entities/inquiry.entity';
|
||||
import { InquiryReadDto } from './inquiry-read.dto';
|
||||
|
||||
export const INQUIRY_REPOSITORY = Symbol('INQUIRY_REPOSITORY');
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ export { InquiryCreatedEvent } from './domain/events/inquiry-created.event';
|
||||
export { InquiryReadEvent } from './domain/events/inquiry-read.event';
|
||||
export {
|
||||
INQUIRY_REPOSITORY,
|
||||
type IInquiryRepository,
|
||||
IInquiryRepository,
|
||||
type PaginatedResult,
|
||||
} from './domain/repositories/inquiry.repository';
|
||||
export { type InquiryReadDto } from './domain/repositories/inquiry-read.dto';
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
import { type Inquiry as PrismaInquiry } from '@prisma/client';
|
||||
import { type PrismaService } from '@modules/shared';
|
||||
import { Inquiry as PrismaInquiry } from '@prisma/client';
|
||||
import { PrismaService } from '@modules/shared';
|
||||
import { InquiryEntity } from '../../domain/entities/inquiry.entity';
|
||||
import { type InquiryReadDto } from '../../domain/repositories/inquiry-read.dto';
|
||||
import { type IInquiryRepository, type PaginatedResult } from '../../domain/repositories/inquiry.repository';
|
||||
import { InquiryReadDto } from '../../domain/repositories/inquiry-read.dto';
|
||||
import { IInquiryRepository, PaginatedResult } from '../../domain/repositories/inquiry.repository';
|
||||
|
||||
@Injectable()
|
||||
export class PrismaInquiryRepository implements IInquiryRepository {
|
||||
|
||||
@@ -8,7 +8,7 @@ import {
|
||||
Query,
|
||||
UseGuards,
|
||||
} from '@nestjs/common';
|
||||
import { type CommandBus, type QueryBus } from '@nestjs/cqrs';
|
||||
import { CommandBus, QueryBus } from '@nestjs/cqrs';
|
||||
import {
|
||||
ApiTags,
|
||||
ApiOperation,
|
||||
@@ -16,16 +16,16 @@ import {
|
||||
ApiBearerAuth,
|
||||
ApiParam,
|
||||
} from '@nestjs/swagger';
|
||||
import { type JwtPayload, CurrentUser, Roles, JwtAuthGuard, RolesGuard } from '@modules/auth';
|
||||
import { JwtPayload, CurrentUser, Roles, JwtAuthGuard, RolesGuard } from '@modules/auth';
|
||||
import { CreateInquiryCommand } from '../../application/commands/create-inquiry/create-inquiry.command';
|
||||
import { type CreateInquiryResult } from '../../application/commands/create-inquiry/create-inquiry.handler';
|
||||
import { CreateInquiryResult } from '../../application/commands/create-inquiry/create-inquiry.handler';
|
||||
import { MarkInquiryReadCommand } from '../../application/commands/mark-inquiry-read/mark-inquiry-read.command';
|
||||
import { GetInquiriesByAgentQuery } from '../../application/queries/get-inquiries-by-agent/get-inquiries-by-agent.query';
|
||||
import { GetInquiriesByListingQuery } from '../../application/queries/get-inquiries-by-listing/get-inquiries-by-listing.query';
|
||||
import { type InquiryReadDto } from '../../domain/repositories/inquiry-read.dto';
|
||||
import { type PaginatedResult } from '../../domain/repositories/inquiry.repository';
|
||||
import { type CreateInquiryDto } from '../dto/create-inquiry.dto';
|
||||
import { type ListInquiriesDto } from '../dto/list-inquiries.dto';
|
||||
import { InquiryReadDto } from '../../domain/repositories/inquiry-read.dto';
|
||||
import { PaginatedResult } from '../../domain/repositories/inquiry.repository';
|
||||
import { CreateInquiryDto } from '../dto/create-inquiry.dto';
|
||||
import { ListInquiriesDto } from '../dto/list-inquiries.dto';
|
||||
|
||||
@ApiTags('inquiries')
|
||||
@Controller('inquiries')
|
||||
|
||||
Reference in New Issue
Block a user