Use Case Documentation

Overview

This document outlines the business logic and use case implementations for the Product Management module. All use cases follow Clean Architecture principles with CQRS pattern implementation, comprehensive permission validation, and event-driven architecture for system integration.

Table of Contents

Product Use Cases

CreateProductUseCase

File: common/module/product/product/usecases/create-product.usecase.ts

Creates a new product with comprehensive validation and permission checks.

Implementation

Business Logic Flow

  1. Permission Validation: Validates user has CREATE_PRODUCT permission

  2. Command Execution: Dispatches AddProductCommand through command bus

  3. Data Retrieval: Queries created product with populated relationships

  4. Event Publishing: Automatic event publishing for product creation

  5. Response: Returns complete product DTO with all related data

Key Features

  • Permission-based Access Control: Validates user permissions before execution

  • CQRS Pattern: Separates command (create) from query (read) operations

  • Event-Driven: Publishes events for system integration and auditing

  • Transaction Management: Ensures data consistency across operations

  • Comprehensive Logging: Tracks all operations for debugging and auditing

Business Rules

  • User must have CREATE_PRODUCT permission

  • Product SKU must be unique within tenant

  • At least one language version is required

  • Price information is mandatory

  • Tags must exist in the system before assignment

GetProductUseCase

File: common/module/product/product/usecases/get-product.usecase.ts

Retrieves a specific product by ID with permission validation.

Implementation

Business Logic Flow

  1. Permission Validation: Validates user has READ_PRODUCT permission

  2. Query Execution: Retrieves product with populated relationships

  3. Data Enrichment: Includes images, tag details, and metadata

  4. Response: Returns complete product information

Key Features

  • Efficient Data Loading: Optimized queries with relationship population

  • Permission Enforcement: Ensures data access security

  • Cache Integration: Utilizes caching for frequently accessed products

  • Error Handling: Proper error handling for non-existent products

GetPagedProductsUseCase

File: common/module/product/product/usecases/get-paged-products.usecase.ts

Retrieves paginated list of products with advanced filtering capabilities.

Implementation

Business Logic Flow

  1. Permission Validation: Validates user has READ_PRODUCT permission

  2. Query Construction: Builds complex query with filters and pagination

  3. Search Execution: Performs text search across multiple language versions

  4. Tag Filtering: Applies tag-based filtering with array matching

  5. Result Pagination: Returns paginated results with metadata

Advanced Features

  • Multi-language Search: Searches across all language versions

  • Tag Filtering: Supports multiple tag filtering with AND/OR logic

  • Text Search: Full-text search across titles and descriptions

  • Performance Optimization: Efficient database queries with proper indexing

  • Cache Integration: Caches frequently accessed product lists

Filtering Capabilities

  • Text Search: Phrase-based search across product content

  • Tag Filtering: Filter by one or more product tags

  • Pagination: Configurable page size and navigation

  • Sorting: Support for various sorting criteria

UpdateProductUseCase

File: common/module/product/product/usecases/update-product.usecase.ts

Updates an existing product with validation and change tracking.

Implementation

Business Logic Flow

  1. Permission Validation: Validates user has EDIT_PRODUCT permission

  2. Existence Check: Verifies product exists and is accessible

  3. Change Validation: Validates proposed changes against business rules

  4. Command Execution: Applies changes through command pattern

  5. Event Publishing: Publishes update events for system integration

  6. Response: Returns updated product with fresh data

Business Rules for Updates

  • SKU cannot be modified after creation

  • At least one language version must remain

  • Price changes are tracked for audit purposes

  • Tag assignments are validated for existence

  • Image references are validated for accessibility

DeleteProductUseCase

File: common/module/product/product/usecases/delete-product.usecase.ts

Performs soft deletion of products with dependency validation.

Implementation

Business Logic Flow

  1. Permission Validation: Validates user has DELETE_PRODUCT permission

  2. Dependency Check: Verifies no active orders reference the product

  3. Soft Delete: Marks product as deleted while preserving data

  4. Cascade Operations: Handles related data (images, references)

  5. Event Publishing: Publishes deletion events for cleanup

  6. Audit Logging: Records deletion for compliance and tracking

Dependency Validation

  • Checks for active orders containing the product

  • Validates no pending reservations reference the product

  • Ensures data integrity across the system

  • Prevents deletion of products with financial implications

Product Tag Use Cases

CreateProductTagUseCase

File: common/module/product/tag/usecases/create-product-tag.usecase.ts

Creates new product tags for categorization and filtering.

Implementation

Business Logic Flow

  1. Permission Validation: Validates user has CREATE_PRODUCT_TAG permission

  2. Uniqueness Check: Ensures tag name is unique within tenant

  3. Command Execution: Creates tag through command pattern

  4. Response: Returns created tag with generated ID

Tag Creation Rules

  • Tag names must be unique within tenant

  • Tag names are case-insensitive

  • Special characters are validated and sanitized

  • Maximum length constraints are enforced

GetPagedProductTagsUseCase

File: common/module/product/tag/usecases/get-paged-product-tags.usecase.ts

Retrieves paginated list of product tags with search functionality.

Implementation

Features

  • Search functionality for tag names

  • Efficient pagination for large tag lists

  • Usage statistics for each tag

  • Sorting by name, creation date, or usage frequency

UpdateProductTagUseCase

File: common/module/product/tag/usecases/update-product-tag.usecase.ts

Updates existing product tags with validation.

Business Logic

  1. Permission Validation: Validates EDIT_PRODUCT_TAG permission

  2. Uniqueness Check: Ensures updated name doesn't conflict

  3. Usage Validation: Checks if tag is currently in use

  4. Update Propagation: Updates all products using the tag

  5. Cache Invalidation: Clears relevant caches

DeleteProductTagUseCase

File: common/module/product/tag/usecases/delete-product-tag.usecase.ts

Deletes product tags with usage validation.

Business Logic

  1. Permission Validation: Validates DELETE_PRODUCT_TAG permission

  2. Usage Check: Prevents deletion of tags in use

  3. Cascade Options: Offers tag removal from products or prevention

  4. Audit Logging: Records tag deletion activities

Product Image Use Cases

UpsertProductImageUseCase

File: common/module/product/product/usecases/upsert-product-image.usecase.ts

Handles product image upload and management operations.

Implementation

Business Logic Flow

  1. Permission Validation: Validates user has EDIT_PRODUCT permission

  2. File Validation: Checks file type, size, and format

  3. Image Processing: Resizes, optimizes, and generates thumbnails

  4. Upload to CDN: Stores image in CDN with proper naming

  5. Database Update: Links image to product in database

  6. Cache Invalidation: Clears product caches

  7. Response: Returns media information with CDN URLs

Image Processing Features

  • Format Validation: Supports JPEG, PNG, and WebP formats

  • Size Optimization: Automatic compression and optimization

  • Thumbnail Generation: Creates multiple size variants

  • CDN Integration: Direct upload to content delivery network

  • Metadata Extraction: Extracts image dimensions and properties

DeleteProductImageUseCase

File: common/module/product/product/usecases/delete-product-image.usecase.ts

Handles product image deletion with cleanup.

Implementation

Business Logic Flow

  1. Permission Validation: Validates user has EDIT_PRODUCT permission

  2. Image Verification: Confirms image belongs to specified product

  3. CDN Cleanup: Removes image files from CDN

  4. Database Cleanup: Removes image references from product

  5. Cache Invalidation: Clears relevant caches

  6. Audit Logging: Records image deletion activity

CQRS Implementation

Command Pattern

The product management module implements CQRS (Command Query Responsibility Segregation) for clear separation of read and write operations.

Commands

  • AddProductCommand: Creates new products

  • UpdateProductCommand: Modifies existing products

  • DeleteProductCommand: Soft deletes products

  • UpsertProductImageCommand: Manages product images

  • AddProductTagCommand: Creates product tags

Queries

  • GetProductByIdQuery: Retrieves single product

  • GetPagedProductsQuery: Retrieves paginated product lists

  • GetProductTagByIdQuery: Retrieves single tag

  • GetPagedProductTagsQuery: Retrieves paginated tag lists

Command Handlers

Each command has a dedicated handler that implements the business logic:

Query Handlers

Query handlers focus on data retrieval and optimization:

Permission System

Permission-Based Access Control

All use cases implement comprehensive permission validation:

Permission Hierarchy

Multi-Tenant Security

  • Tenant Isolation: All operations are scoped to specific tenants

  • Data Segregation: Database queries include tenant filtering

  • Permission Scoping: Permissions are validated within tenant context

  • Audit Trails: All operations are logged with tenant and user context

Event Publishing

Domain Events

The system publishes events for integration and auditing:

Event Handlers

External modules can subscribe to product events:

Error Handling

Exception Types

The system defines specific exceptions for different error scenarios:

Error Recovery

Use cases implement proper error handling and recovery:

Business Rules

Product Management Rules

Creation Rules

  1. SKU Uniqueness: Product SKU must be unique within tenant

  2. Language Requirements: At least one language version required

  3. Price Validation: Price must be positive with valid currency

  4. Tag Validation: All referenced tags must exist

  5. Image Limits: Maximum 10 images per product

Update Rules

  1. SKU Immutability: SKU cannot be changed after creation

  2. Language Preservation: Cannot remove all language versions

  3. Active Order Protection: Cannot modify products in active orders

  4. Price History: All price changes are tracked for audit

  5. Tag Synchronization: Tag updates propagate to all using products

Deletion Rules

  1. Soft Delete Only: Products are never physically deleted

  2. Dependency Validation: Cannot delete products with active references

  3. Order Protection: Products in orders cannot be deleted

  4. Audit Preservation: All historical data is maintained

  5. Cascade Management: Related images and references are handled

Tag Management Rules

Tag Creation

  1. Name Uniqueness: Tag names must be unique within tenant

  2. Character Validation: Only alphanumeric and specific special characters

  3. Length Limits: Tag names have maximum length constraints

  4. Case Insensitivity: Tag names are treated case-insensitively

Tag Usage

  1. Referential Integrity: Cannot delete tags in use by products

  2. Bulk Operations: Support for efficient bulk tag management

  3. Usage Tracking: Track which products use which tags

  4. Search Optimization: Tags are indexed for fast filtering

Image Management Rules

Upload Constraints

  1. File Types: Only JPEG, PNG, and WebP formats supported

  2. Size Limits: Maximum 5MB per image file

  3. Dimension Limits: Reasonable minimum and maximum dimensions

  4. Count Limits: Maximum 10 images per product

  5. Quality Standards: Automatic optimization and compression

Processing Rules

  1. Format Conversion: Images may be converted for optimization

  2. Thumbnail Generation: Multiple size variants created automatically

  3. CDN Integration: Images stored in CDN for global access

  4. Metadata Extraction: Image properties extracted and stored

  5. Progressive Loading: Support for progressive image loading

Performance Optimization Rules

Caching Strategy

  1. Product Data: Frequently accessed products are cached

  2. Search Results: Common search results are cached

  3. Tag Lists: Tag collections are heavily cached

  4. Image URLs: CDN URLs are cached for fast access

  5. Cache Invalidation: Smart cache invalidation on updates

Database Optimization

  1. Indexing Strategy: Comprehensive indexing for all query patterns

  2. Query Optimization: Efficient queries with proper field selection

  3. Relationship Loading: Optimized loading of related data

  4. Pagination Efficiency: Efficient pagination for large datasets

  5. Search Performance: Text search optimization with proper indexes

This use case documentation provides a comprehensive guide to the business logic, implementation patterns, and rules governing the Product Management module, ensuring consistent and reliable operation across all product-related operations.

Last updated

Was this helpful?