Assortment and category management module for the Unchained Engine
npm install @unchainedshop/core-assortments

Assortment (category) management module for the Unchained Engine. Handles product categorization with hierarchical structures, media, filters, and localized texts.
``bash`
npm install @unchainedshop/core-assortments
`typescript
import { configureAssortmentsModule } from '@unchainedshop/core-assortments';
const assortmentsModule = await configureAssortmentsModule({ db });
// Create an assortment
const assortmentId = await assortmentsModule.create({
slugs: ['electronics'],
isRoot: true,
});
// Find assortments
const assortments = await assortmentsModule.findAssortments({
includeInactive: false,
});
// Add product to assortment
await assortmentsModule.products.create({
assortmentId,
productId: 'product-123',
});
`
| Export | Description |
|--------|-------------|
| configureAssortmentsModule | Configure and return the assortments module |
| Method | Description |
|--------|-------------|
| findAssortment | Find assortment by ID or slug |findAssortments
| | Find assortments with filtering and pagination |count
| | Count assortments matching query |assortmentExists
| | Check if assortment exists |findProductIds
| | Get all product IDs in an assortment tree |
| Method | Description |
|--------|-------------|
| create | Create a new assortment |update
| | Update assortment data |delete
| | Soft delete an assortment |setBase
| | Set base assortment |invalidateCache
| | Clear assortment cache |
#### Products (assortments.products)findProducts
| Method | Description |
|--------|-------------|
| | Find products in assortment |create
| | Add product to assortment |delete
| | Remove product from assortment |reorder
| | Reorder products |
#### Links (assortments.links)findLinks
| Method | Description |
|--------|-------------|
| | Find assortment links (parent-child) |create
| | Create link between assortments |delete
| | Remove link |reorder
| | Reorder child assortments |
#### Media (assortments.media)findMedia
| Method | Description |
|--------|-------------|
| | Find assortment media |create
| | Add media to assortment |delete
| | Remove media |reorder
| | Reorder media |
#### Texts (assortments.texts)findTexts
| Method | Description |
|--------|-------------|
| | Find localized texts |updateTexts
| | Update assortment texts |
#### Filters (assortments.filters)findFilters
| Method | Description |
|--------|-------------|
| | Find filters for assortment |create
| | Add filter to assortment |delete
| | Remove filter |reorder
| | Reorder filters |
| Export | Description |
|--------|-------------|
| assortmentsSettings | Access assortment module settings |
| Export | Description |
|--------|-------------|
| Assortment | Assortment document type |AssortmentProduct
| | Assortment-product link type |AssortmentLink
| | Parent-child link type |AssortmentMedia
| | Media attachment type |AssortmentsModule
| | Module interface type |
| Event | Description |
|-------|-------------|
| ASSORTMENT_CREATE | Assortment created |ASSORTMENT_UPDATE
| | Assortment updated |ASSORTMENT_REMOVE` | Assortment deleted |
|
EUPL-1.2