ruch
Version:
Revolutionary React TypeScript CLI with hexagonal architecture & AI-powered development assistance. Create maintainable, scalable applications with domain-driven design and integrated AI tooling.
92 lines (83 loc) • 1.74 kB
text/typescript
/**
* Product domain entities
*/
export interface Product {
id: string;
name: string;
description: string;
price: number;
currency: 'USD' | 'EUR' | 'GBP';
sku: string;
category: ProductCategory;
brand: string;
images: ProductImage[];
inventory: ProductInventory;
specifications: ProductSpecification[];
isActive: boolean;
isFeatured: boolean;
createdAt: string;
updatedAt: string;
}
export interface ProductCategory {
id: string;
name: string;
slug: string;
description?: string;
parentId?: string;
}
export interface ProductImage {
id: string;
url: string;
alt: string;
isPrimary: boolean;
order: number;
}
export interface ProductInventory {
quantity: number;
reserved: number;
available: number;
lowStockThreshold: number;
isInStock: boolean;
}
export interface ProductSpecification {
name: string;
value: string;
unit?: string;
}
export interface ProductCreationData {
name: string;
description: string;
price: number;
currency: 'USD' | 'EUR' | 'GBP';
sku: string;
categoryId: string;
brand: string;
specifications?: ProductSpecification[];
inventory: {
quantity: number;
lowStockThreshold: number;
};
}
export interface ProductUpdateData {
name?: string;
description?: string;
price?: number;
categoryId?: string;
brand?: string;
specifications?: ProductSpecification[];
isActive?: boolean;
isFeatured?: boolean;
}
export interface ProductFilter {
categoryId?: string;
brand?: string;
minPrice?: number;
maxPrice?: number;
inStock?: boolean;
isFeatured?: boolean;
search?: string;
}
export interface ProductSort {
field: 'name' | 'price' | 'createdAt' | 'popularity';
direction: 'asc' | 'desc';
}