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 IBase for standard entity properties (_id, createdAt, updatedAt, etc.)

  • Supports multi-language content through ILanguageVersion

  • Optional 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 identification

  • languageVersions: Required array of language-specific content

  • price: Required pricing information with currency

  • tags: Optional array of string tags for categorization

  • images: Optional array of media objects for product images

  • order: 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 amount

  • currency: Required currency code from enum

  • object: 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/description

  • tags: Optional array of tag names for filtering

  • Inherits 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 name

  • object: Optional type identifier

  • Inherits 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 search

  • Inherits 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-permissions

  • Each 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 images

  • image/png - PNG images with transparency support

  • image/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?