Interface Documentation
Overview
This document provides comprehensive details on TypeScript interfaces, DTOs, enums, and contracts used throughout the Product Management module. All interfaces are derived from the actual codebase and reflect the current implementation.
Table of Contents
Core Interfaces
IProduct
File: common/module/product/product/domain/persistance/IProduct.ts
Core product entity interface extending base entity functionality.
Key Features:
Extends
IBasefor standard entity properties (_id, createdAt, updatedAt, etc.)Supports multi-language content through
ILanguageVersionOptional pricing with structured price object
Tag-based categorization system
Image management through media references
Ordering support for display purposes
IProductPrice
File: common/module/product/product/domain/values/product-price.value.ts
Value object interface for product pricing information.
Key Features:
Immutable value object for price representation
Support for international currencies
Validation for non-negative values
Type-safe currency handling
IProductRepository
File: common/module/product/product/domain/persistance/IProductRepository.ts
Repository interface defining product data access operations.
Key Features:
Extends base repository with product-specific operations
Populated queries for related data (images, etc.)
Advanced search with pagination and filtering
CRUD operations with proper typing
ITag
File: common/module/product/tag/domain/persistance/i-tag.ts
Product tag entity interface for categorization.
Key Features:
Simple tag structure with unique names
Extends base entity for standard properties
Used for product categorization and filtering
Data Transfer Objects (DTOs)
ProductDto
File: common/module/product/product/dtos/product.dto.ts
Main DTO for product data transfer with comprehensive validation.
Validation Rules:
sku: Optional string for product identificationlanguageVersions: Required array of language-specific contentprice: Required pricing information with currencytags: Optional array of string tags for categorizationimages: Optional array of media objects for product imagesorder: Optional numeric value for display ordering
Features:
Class-transformer decorators for serialization control
Class-validator decorators for input validation
Swagger/OpenAPI documentation decorators
Proper type transformation for nested objects
ProductPriceDto
File: common/module/product/product/dtos/product-price.dto.ts
DTO for product pricing information with currency support.
Validation Rules:
value: Required numeric price amountcurrency: Required currency code from enumobject: Optional type identifier
Features:
Enum validation for currency codes
Numeric validation for price values
Default currency support (USD)
Type-safe currency handling
ProductPaginationDto
File: common/module/product/product/dtos/product.pagination.dto.ts
DTO for paginated product queries with filtering capabilities.
Validation Rules:
phrase: Optional string for text search across title/descriptiontags: Optional array of tag names for filteringInherits pagination properties (page, size) from
PaginationDto
Features:
Text search functionality
Tag-based filtering with array support
Automatic string-to-array transformation for tags
Extends base pagination with product-specific filters
TagDto
File: common/module/product/tag/dtos/tag.dto.ts
DTO for product tag management operations.
Validation Rules:
name: Optional string for tag nameobject: Optional type identifierInherits base entity properties from
BaseEntityDto
Features:
Simple tag structure for categorization
String validation for tag names
Extends base entity for standard properties
TagPaginationDto
File: common/module/product/tag/dtos/tag.pagination.dto.ts
DTO for paginated tag queries with search functionality.
Validation Rules:
phrase: Optional string for tag name searchInherits pagination properties from
PaginationDto
Features:
Text search for tag names
Simple pagination support
Lightweight filtering for tag management
Domain Value Objects
ProductPrice
File: common/module/product/product/domain/values/product-price.value.ts
Domain value object implementing price logic with validation.
Key Features:
Immutable value object implementation
Factory method with validation
Price non-negativity validation
Type-safe property access
Proper error handling with Result pattern
Repository Interfaces
Product Repository Operations
The product repository extends the base repository pattern with specialized operations:
Key Operations:
Population: Automatically populate related data (images, tags)
Creation: Handle product creation with proper validation
Search: Advanced filtering with text search and tag filtering
Pagination: Efficient pagination for large product catalogs
Use Case Interfaces
Product Use Case Parameters
Each use case defines specific parameter interfaces for type safety:
CreateProductParams
File: common/module/product/product/usecases/create-product.usecase.ts
GetProductParams
File: common/module/product/product/usecases/get-product.usecase.ts
UpdateProductParams
File: common/module/product/product/usecases/update-product.usecase.ts
DeleteProductParams
File: common/module/product/product/usecases/delete-product.usecase.ts
GetPagedProductsParams
File: common/module/product/product/usecases/get-paged-products.usecase.ts
Product Tag Use Case Parameters
CreateProductTagParams
File: common/module/product/tag/usecases/create-product-tag.usecase.ts
GetPagedProductTagsParams
File: common/module/product/tag/usecases/get-paged-product-tags.usecase.ts
Product Image Use Case Parameters
UpsertProductImageParams
File: common/module/product/product/usecases/upsert-product-image.usecase.ts
DeleteProductImageParams
File: common/module/product/product/usecases/delete-product-image.usecase.ts
Enums and Constants
CurrencyCodeEnum
File: common/core/enum/currency-code.enum.ts
Comprehensive currency code enumeration for international support.
Permission Enums
File: common/module/permission/domain/enums/permission.enum.ts
Product-related permission constants for access control.
Permission Hierarchy:
CRUD_*permissions include all sub-permissionsEach operation requires specific permission validation
Permissions are checked at use case level
Multi-tenant isolation enforced automatically
Media and File Interfaces
MediaDto
File: common/module/media/dtos/media.dto.ts
DTO for media file management and metadata.
UploadMediaDto
File: common/module/media/dtos/upload.media.dto.ts
DTO for media upload operations with metadata.
File Upload Constraints
Supported File Types:
image/jpeg- JPEG imagesimage/png- PNG images with transparency supportimage/webp- Modern WebP format
Size Limits:
Maximum file size: 5MB per image
Maximum dimensions: 4000x4000 pixels
Minimum dimensions: 200x200 pixels (recommended)
Validation Constraints
Product Validation Rules
SKU Validation
Language Versions Validation
Price Validation
Tags Validation
Order Validation
Price Validation Rules
Value Validation
Currency Validation
Tag Validation Rules
Name Validation
Advanced Type Definitions
Pagination Result Types
Context Types
Result Pattern Types
Integration Interfaces
Event Interfaces
Product management integrates with the event system for notifications and auditing:
Cache Interfaces
Type Safety Features
Strict Typing
All interfaces use strict TypeScript typing
Optional vs required properties clearly defined
Enum constraints for categorical data
Generic type support for reusable patterns
Validation Integration
Class-validator decorators for runtime validation
Type-safe validation error handling
Comprehensive error messages
Custom validation rules for business logic
Serialization Control
Class-transformer decorators for data transformation
Selective property exposure/exclusion
Nested object transformation
Type conversion for complex objects
Migration and Versioning
Interface Evolution
Backward compatibility maintained through optional properties
Deprecation notices for removed features
Version-specific interface definitions
Migration guides for breaking changes
Schema Compatibility
Database schema evolution support
Field addition/removal strategies
Data migration scripts
Version-aware serialization
This interface documentation provides a complete reference for all types, validation rules, and contracts used in the Product Management module, ensuring type safety and proper integration across the system.
Last updated
Was this helpful?