feat(listings): implement Listings module with CRUD, media upload, and moderation
Full DDD/CQRS implementation for the Listings module (TEC-1423): - Domain: Property, Listing, PropertyMedia entities with status machine - Value Objects: Address, GeoPoint, Price with validation - Events: ListingCreated, ListingApproved, ListingSold - Commands: CreateListing, UpdateListingStatus, UploadMedia, ModerateListing - Queries: GetListing, SearchListings, GetPendingModeration - Infrastructure: Prisma repositories with PostGIS support, MinIO media storage - Presentation: REST controller with JWT auth, role-based moderation - 21 domain unit tests (all passing) Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
@@ -29,6 +29,19 @@ export enum ErrorCode {
|
||||
COURSE_ALREADY_PUBLISHED = 'COURSE_ALREADY_PUBLISHED',
|
||||
COURSE_ENROLLMENT_CLOSED = 'COURSE_ENROLLMENT_CLOSED',
|
||||
|
||||
// Listing
|
||||
LISTING_NOT_FOUND = 'LISTING_NOT_FOUND',
|
||||
LISTING_INVALID_STATUS_TRANSITION = 'LISTING_INVALID_STATUS_TRANSITION',
|
||||
LISTING_ALREADY_ACTIVE = 'LISTING_ALREADY_ACTIVE',
|
||||
LISTING_EXPIRED = 'LISTING_EXPIRED',
|
||||
|
||||
// Property
|
||||
PROPERTY_NOT_FOUND = 'PROPERTY_NOT_FOUND',
|
||||
|
||||
// Media
|
||||
MEDIA_UPLOAD_FAILED = 'MEDIA_UPLOAD_FAILED',
|
||||
MEDIA_LIMIT_EXCEEDED = 'MEDIA_LIMIT_EXCEEDED',
|
||||
|
||||
// Payment
|
||||
PAYMENT_FAILED = 'PAYMENT_FAILED',
|
||||
PAYMENT_ALREADY_PROCESSED = 'PAYMENT_ALREADY_PROCESSED',
|
||||
|
||||
Reference in New Issue
Block a user