@endora-commerce/mod-catalog 0.100.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +63 -0
- package/dist/admin/components/PackagingUnitsEditor.d.ts +12 -0
- package/dist/admin/components/PackagingUnitsEditor.d.ts.map +1 -0
- package/dist/admin/components/PackagingUnitsEditor.js +99 -0
- package/dist/admin/components/PackagingUnitsEditor.js.map +1 -0
- package/dist/admin/components/ProductAttributesTab.d.ts +13 -0
- package/dist/admin/components/ProductAttributesTab.d.ts.map +1 -0
- package/dist/admin/components/ProductAttributesTab.js +140 -0
- package/dist/admin/components/ProductAttributesTab.js.map +1 -0
- package/dist/admin/components/ProductInventoryTab.d.ts +14 -0
- package/dist/admin/components/ProductInventoryTab.d.ts.map +1 -0
- package/dist/admin/components/ProductInventoryTab.js +284 -0
- package/dist/admin/components/ProductInventoryTab.js.map +1 -0
- package/dist/admin/components/ProductScopeEditor.d.ts +94 -0
- package/dist/admin/components/ProductScopeEditor.d.ts.map +1 -0
- package/dist/admin/components/ProductScopeEditor.js +395 -0
- package/dist/admin/components/ProductScopeEditor.js.map +1 -0
- package/dist/admin/components/ProductsBulkEditDialog.d.ts +11 -0
- package/dist/admin/components/ProductsBulkEditDialog.d.ts.map +1 -0
- package/dist/admin/components/ProductsBulkEditDialog.js +304 -0
- package/dist/admin/components/ProductsBulkEditDialog.js.map +1 -0
- package/dist/admin/index.d.ts +45 -0
- package/dist/admin/index.d.ts.map +1 -0
- package/dist/admin/index.js +184 -0
- package/dist/admin/index.js.map +1 -0
- package/dist/admin/lib/resolve-product-selection.d.ts +21 -0
- package/dist/admin/lib/resolve-product-selection.d.ts.map +1 -0
- package/dist/admin/lib/resolve-product-selection.js +25 -0
- package/dist/admin/lib/resolve-product-selection.js.map +1 -0
- package/dist/admin/pages/AttachmentTypesPage.d.ts +18 -0
- package/dist/admin/pages/AttachmentTypesPage.d.ts.map +1 -0
- package/dist/admin/pages/AttachmentTypesPage.js +92 -0
- package/dist/admin/pages/AttachmentTypesPage.js.map +1 -0
- package/dist/admin/pages/AttributeSetsPage.d.ts +21 -0
- package/dist/admin/pages/AttributeSetsPage.d.ts.map +1 -0
- package/dist/admin/pages/AttributeSetsPage.js +158 -0
- package/dist/admin/pages/AttributeSetsPage.js.map +1 -0
- package/dist/admin/pages/AttributesManager.d.ts +9 -0
- package/dist/admin/pages/AttributesManager.d.ts.map +1 -0
- package/dist/admin/pages/AttributesManager.js +305 -0
- package/dist/admin/pages/AttributesManager.js.map +1 -0
- package/dist/admin/pages/BulkOperationDetailPage.d.ts +9 -0
- package/dist/admin/pages/BulkOperationDetailPage.d.ts.map +1 -0
- package/dist/admin/pages/BulkOperationDetailPage.js +187 -0
- package/dist/admin/pages/BulkOperationDetailPage.js.map +1 -0
- package/dist/admin/pages/BulkOperationsPage.d.ts +9 -0
- package/dist/admin/pages/BulkOperationsPage.d.ts.map +1 -0
- package/dist/admin/pages/BulkOperationsPage.js +98 -0
- package/dist/admin/pages/BulkOperationsPage.js.map +1 -0
- package/dist/admin/pages/CategoriesTree.d.ts +9 -0
- package/dist/admin/pages/CategoriesTree.d.ts.map +1 -0
- package/dist/admin/pages/CategoriesTree.js +176 -0
- package/dist/admin/pages/CategoriesTree.js.map +1 -0
- package/dist/admin/pages/ProductEditor.d.ts +13 -0
- package/dist/admin/pages/ProductEditor.d.ts.map +1 -0
- package/dist/admin/pages/ProductEditor.js +1050 -0
- package/dist/admin/pages/ProductEditor.js.map +1 -0
- package/dist/admin/pages/ProductsList.d.ts +9 -0
- package/dist/admin/pages/ProductsList.d.ts.map +1 -0
- package/dist/admin/pages/ProductsList.js +399 -0
- package/dist/admin/pages/ProductsList.js.map +1 -0
- package/dist/backend/commands/attribute-commands.d.ts +111 -0
- package/dist/backend/commands/attribute-commands.d.ts.map +1 -0
- package/dist/backend/commands/attribute-commands.js +482 -0
- package/dist/backend/commands/attribute-commands.js.map +1 -0
- package/dist/backend/demo/reset.d.ts +23 -0
- package/dist/backend/demo/reset.d.ts.map +1 -0
- package/dist/backend/demo/reset.js +41 -0
- package/dist/backend/demo/reset.js.map +1 -0
- package/dist/backend/demo/rows.d.ts +103 -0
- package/dist/backend/demo/rows.d.ts.map +1 -0
- package/dist/backend/demo/rows.js +162 -0
- package/dist/backend/demo/rows.js.map +1 -0
- package/dist/backend/demo/seed.d.ts +35 -0
- package/dist/backend/demo/seed.d.ts.map +1 -0
- package/dist/backend/demo/seed.js +177 -0
- package/dist/backend/demo/seed.js.map +1 -0
- package/dist/backend/entities/attachment-type.entity.d.ts +16 -0
- package/dist/backend/entities/attachment-type.entity.d.ts.map +1 -0
- package/dist/backend/entities/attachment-type.entity.js +57 -0
- package/dist/backend/entities/attachment-type.entity.js.map +1 -0
- package/dist/backend/entities/attribute-set-attribute.entity.d.ts +26 -0
- package/dist/backend/entities/attribute-set-attribute.entity.d.ts.map +1 -0
- package/dist/backend/entities/attribute-set-attribute.entity.js +55 -0
- package/dist/backend/entities/attribute-set-attribute.entity.js.map +1 -0
- package/dist/backend/entities/attribute-set.entity.d.ts +22 -0
- package/dist/backend/entities/attribute-set.entity.d.ts.map +1 -0
- package/dist/backend/entities/attribute-set.entity.js +67 -0
- package/dist/backend/entities/attribute-set.entity.js.map +1 -0
- package/dist/backend/entities/bulk-operation.entity.d.ts +78 -0
- package/dist/backend/entities/bulk-operation.entity.d.ts.map +1 -0
- package/dist/backend/entities/bulk-operation.entity.js +138 -0
- package/dist/backend/entities/bulk-operation.entity.js.map +1 -0
- package/dist/backend/entities/bundle-slot-option.entity.d.ts +23 -0
- package/dist/backend/entities/bundle-slot-option.entity.d.ts.map +1 -0
- package/dist/backend/entities/bundle-slot-option.entity.js +68 -0
- package/dist/backend/entities/bundle-slot-option.entity.js.map +1 -0
- package/dist/backend/entities/bundle-slot.entity.d.ts +25 -0
- package/dist/backend/entities/bundle-slot.entity.d.ts.map +1 -0
- package/dist/backend/entities/bundle-slot.entity.js +74 -0
- package/dist/backend/entities/bundle-slot.entity.js.map +1 -0
- package/dist/backend/entities/category.entity.d.ts +26 -0
- package/dist/backend/entities/category.entity.d.ts.map +1 -0
- package/dist/backend/entities/category.entity.js +119 -0
- package/dist/backend/entities/category.entity.js.map +1 -0
- package/dist/backend/entities/gallery-item-label.entity.d.ts +22 -0
- package/dist/backend/entities/gallery-item-label.entity.d.ts.map +1 -0
- package/dist/backend/entities/gallery-item-label.entity.js +50 -0
- package/dist/backend/entities/gallery-item-label.entity.js.map +1 -0
- package/dist/backend/entities/gallery-item.entity.d.ts +17 -0
- package/dist/backend/entities/gallery-item.entity.d.ts.map +1 -0
- package/dist/backend/entities/gallery-item.entity.js +58 -0
- package/dist/backend/entities/gallery-item.entity.js.map +1 -0
- package/dist/backend/entities/grouped-item.entity.d.ts +23 -0
- package/dist/backend/entities/grouped-item.entity.d.ts.map +1 -0
- package/dist/backend/entities/grouped-item.entity.js +68 -0
- package/dist/backend/entities/grouped-item.entity.js.map +1 -0
- package/dist/backend/entities/product-attachment.entity.d.ts +23 -0
- package/dist/backend/entities/product-attachment.entity.d.ts.map +1 -0
- package/dist/backend/entities/product-attachment.entity.js +77 -0
- package/dist/backend/entities/product-attachment.entity.js.map +1 -0
- package/dist/backend/entities/product-attribute.entity.d.ts +72 -0
- package/dist/backend/entities/product-attribute.entity.d.ts.map +1 -0
- package/dist/backend/entities/product-attribute.entity.js +161 -0
- package/dist/backend/entities/product-attribute.entity.js.map +1 -0
- package/dist/backend/entities/product-editor-preference.entity.d.ts +28 -0
- package/dist/backend/entities/product-editor-preference.entity.d.ts.map +1 -0
- package/dist/backend/entities/product-editor-preference.entity.js +63 -0
- package/dist/backend/entities/product-editor-preference.entity.js.map +1 -0
- package/dist/backend/entities/product-link.entity.d.ts +25 -0
- package/dist/backend/entities/product-link.entity.d.ts.map +1 -0
- package/dist/backend/entities/product-link.entity.js +70 -0
- package/dist/backend/entities/product-link.entity.js.map +1 -0
- package/dist/backend/entities/product-packaging-unit.entity.d.ts +26 -0
- package/dist/backend/entities/product-packaging-unit.entity.d.ts.map +1 -0
- package/dist/backend/entities/product-packaging-unit.entity.js +76 -0
- package/dist/backend/entities/product-packaging-unit.entity.js.map +1 -0
- package/dist/backend/entities/product-value-override.entity.d.ts +43 -0
- package/dist/backend/entities/product-value-override.entity.d.ts.map +1 -0
- package/dist/backend/entities/product-value-override.entity.js +90 -0
- package/dist/backend/entities/product-value-override.entity.js.map +1 -0
- package/dist/backend/entities/product-variant.entity.d.ts +18 -0
- package/dist/backend/entities/product-variant.entity.d.ts.map +1 -0
- package/dist/backend/entities/product-variant.entity.js +68 -0
- package/dist/backend/entities/product-variant.entity.js.map +1 -0
- package/dist/backend/entities/product.entity.d.ts +108 -0
- package/dist/backend/entities/product.entity.d.ts.map +1 -0
- package/dist/backend/entities/product.entity.js +230 -0
- package/dist/backend/entities/product.entity.js.map +1 -0
- package/dist/backend/index.d.ts +262 -0
- package/dist/backend/index.d.ts.map +1 -0
- package/dist/backend/index.js +642 -0
- package/dist/backend/index.js.map +1 -0
- package/dist/backend/plugin.d.ts +216 -0
- package/dist/backend/plugin.d.ts.map +1 -0
- package/dist/backend/plugin.js +223 -0
- package/dist/backend/plugin.js.map +1 -0
- package/dist/backend/prompt-tools.d.ts +47 -0
- package/dist/backend/prompt-tools.d.ts.map +1 -0
- package/dist/backend/prompt-tools.js +284 -0
- package/dist/backend/prompt-tools.js.map +1 -0
- package/dist/backend/routes.admin.d.ts +105 -0
- package/dist/backend/routes.admin.d.ts.map +1 -0
- package/dist/backend/routes.admin.js +1162 -0
- package/dist/backend/routes.admin.js.map +1 -0
- package/dist/backend/routes.api-key.d.ts +33 -0
- package/dist/backend/routes.api-key.d.ts.map +1 -0
- package/dist/backend/routes.api-key.js +43 -0
- package/dist/backend/routes.api-key.js.map +1 -0
- package/dist/backend/routes.external.d.ts +32 -0
- package/dist/backend/routes.external.d.ts.map +1 -0
- package/dist/backend/routes.external.js +115 -0
- package/dist/backend/routes.external.js.map +1 -0
- package/dist/backend/routes.public.d.ts +46 -0
- package/dist/backend/routes.public.d.ts.map +1 -0
- package/dist/backend/routes.public.js +318 -0
- package/dist/backend/routes.public.js.map +1 -0
- package/dist/backend/services/asset-references.d.ts +4 -0
- package/dist/backend/services/asset-references.d.ts.map +1 -0
- package/dist/backend/services/asset-references.js +104 -0
- package/dist/backend/services/asset-references.js.map +1 -0
- package/dist/backend/services/attachment.service.d.ts +45 -0
- package/dist/backend/services/attachment.service.d.ts.map +1 -0
- package/dist/backend/services/attachment.service.js +268 -0
- package/dist/backend/services/attachment.service.js.map +1 -0
- package/dist/backend/services/attribute-option-validator.d.ts +47 -0
- package/dist/backend/services/attribute-option-validator.d.ts.map +1 -0
- package/dist/backend/services/attribute-option-validator.js +69 -0
- package/dist/backend/services/attribute-option-validator.js.map +1 -0
- package/dist/backend/services/attribute-set-validations.d.ts +65 -0
- package/dist/backend/services/attribute-set-validations.d.ts.map +1 -0
- package/dist/backend/services/attribute-set-validations.js +89 -0
- package/dist/backend/services/attribute-set-validations.js.map +1 -0
- package/dist/backend/services/attribute-set.service.d.ts +50 -0
- package/dist/backend/services/attribute-set.service.d.ts.map +1 -0
- package/dist/backend/services/attribute-set.service.js +401 -0
- package/dist/backend/services/attribute-set.service.js.map +1 -0
- package/dist/backend/services/attribute-type-mapping.d.ts +66 -0
- package/dist/backend/services/attribute-type-mapping.d.ts.map +1 -0
- package/dist/backend/services/attribute-type-mapping.js +121 -0
- package/dist/backend/services/attribute-type-mapping.js.map +1 -0
- package/dist/backend/services/attribute-value-key.service.d.ts +48 -0
- package/dist/backend/services/attribute-value-key.service.d.ts.map +1 -0
- package/dist/backend/services/attribute-value-key.service.js +118 -0
- package/dist/backend/services/attribute-value-key.service.js.map +1 -0
- package/dist/backend/services/audit-references.d.ts +13 -0
- package/dist/backend/services/audit-references.d.ts.map +1 -0
- package/dist/backend/services/audit-references.js +51 -0
- package/dist/backend/services/audit-references.js.map +1 -0
- package/dist/backend/services/bulk-operation-queue.d.ts +26 -0
- package/dist/backend/services/bulk-operation-queue.d.ts.map +1 -0
- package/dist/backend/services/bulk-operation-queue.js +34 -0
- package/dist/backend/services/bulk-operation-queue.js.map +1 -0
- package/dist/backend/services/bulk-operation.service.d.ts +195 -0
- package/dist/backend/services/bulk-operation.service.d.ts.map +1 -0
- package/dist/backend/services/bulk-operation.service.js +510 -0
- package/dist/backend/services/bulk-operation.service.js.map +1 -0
- package/dist/backend/services/bundle.service.d.ts +87 -0
- package/dist/backend/services/bundle.service.d.ts.map +1 -0
- package/dist/backend/services/bundle.service.js +286 -0
- package/dist/backend/services/bundle.service.js.map +1 -0
- package/dist/backend/services/catalog-admin.service.d.ts +398 -0
- package/dist/backend/services/catalog-admin.service.d.ts.map +1 -0
- package/dist/backend/services/catalog-admin.service.js +1516 -0
- package/dist/backend/services/catalog-admin.service.js.map +1 -0
- package/dist/backend/services/catalog-attribute-read.service.d.ts +78 -0
- package/dist/backend/services/catalog-attribute-read.service.d.ts.map +1 -0
- package/dist/backend/services/catalog-attribute-read.service.js +216 -0
- package/dist/backend/services/catalog-attribute-read.service.js.map +1 -0
- package/dist/backend/services/catalog-bulk-import.service.d.ts +30 -0
- package/dist/backend/services/catalog-bulk-import.service.d.ts.map +1 -0
- package/dist/backend/services/catalog-bulk-import.service.js +136 -0
- package/dist/backend/services/catalog-bulk-import.service.js.map +1 -0
- package/dist/backend/services/catalog-bulk-update.service.d.ts +91 -0
- package/dist/backend/services/catalog-bulk-update.service.d.ts.map +1 -0
- package/dist/backend/services/catalog-bulk-update.service.js +330 -0
- package/dist/backend/services/catalog-bulk-update.service.js.map +1 -0
- package/dist/backend/services/catalog-category-read.service.d.ts +66 -0
- package/dist/backend/services/catalog-category-read.service.d.ts.map +1 -0
- package/dist/backend/services/catalog-category-read.service.js +248 -0
- package/dist/backend/services/catalog-category-read.service.js.map +1 -0
- package/dist/backend/services/catalog-org-price-decorator.d.ts +90 -0
- package/dist/backend/services/catalog-org-price-decorator.d.ts.map +1 -0
- package/dist/backend/services/catalog-org-price-decorator.js +184 -0
- package/dist/backend/services/catalog-org-price-decorator.js.map +1 -0
- package/dist/backend/services/catalog-product-filter.service.d.ts +82 -0
- package/dist/backend/services/catalog-product-filter.service.d.ts.map +1 -0
- package/dist/backend/services/catalog-product-filter.service.js +275 -0
- package/dist/backend/services/catalog-product-filter.service.js.map +1 -0
- package/dist/backend/services/catalog-product-read.service.d.ts +46 -0
- package/dist/backend/services/catalog-product-read.service.d.ts.map +1 -0
- package/dist/backend/services/catalog-product-read.service.js +197 -0
- package/dist/backend/services/catalog-product-read.service.js.map +1 -0
- package/dist/backend/services/catalog-query.service.d.ts +444 -0
- package/dist/backend/services/catalog-query.service.d.ts.map +1 -0
- package/dist/backend/services/catalog-query.service.js +1633 -0
- package/dist/backend/services/catalog-query.service.js.map +1 -0
- package/dist/backend/services/catalog-quick-search.service.d.ts +78 -0
- package/dist/backend/services/catalog-quick-search.service.d.ts.map +1 -0
- package/dist/backend/services/catalog-quick-search.service.js +159 -0
- package/dist/backend/services/catalog-quick-search.service.js.map +1 -0
- package/dist/backend/services/catalog-write-ports.d.ts +25 -0
- package/dist/backend/services/catalog-write-ports.d.ts.map +1 -0
- package/dist/backend/services/catalog-write-ports.js +63 -0
- package/dist/backend/services/catalog-write-ports.js.map +1 -0
- package/dist/backend/services/category-admin.service.d.ts +102 -0
- package/dist/backend/services/category-admin.service.d.ts.map +1 -0
- package/dist/backend/services/category-admin.service.js +271 -0
- package/dist/backend/services/category-admin.service.js.map +1 -0
- package/dist/backend/services/gallery.service.d.ts +85 -0
- package/dist/backend/services/gallery.service.d.ts.map +1 -0
- package/dist/backend/services/gallery.service.js +326 -0
- package/dist/backend/services/gallery.service.js.map +1 -0
- package/dist/backend/services/grouped.service.d.ts +39 -0
- package/dist/backend/services/grouped.service.d.ts.map +1 -0
- package/dist/backend/services/grouped.service.js +136 -0
- package/dist/backend/services/grouped.service.js.map +1 -0
- package/dist/backend/services/label-resolver.d.ts +16 -0
- package/dist/backend/services/label-resolver.d.ts.map +1 -0
- package/dist/backend/services/label-resolver.js +43 -0
- package/dist/backend/services/label-resolver.js.map +1 -0
- package/dist/backend/services/packaging-unit.service.d.ts +28 -0
- package/dist/backend/services/packaging-unit.service.d.ts.map +1 -0
- package/dist/backend/services/packaging-unit.service.js +197 -0
- package/dist/backend/services/packaging-unit.service.js.map +1 -0
- package/dist/backend/services/primary-asset-url.d.ts +4 -0
- package/dist/backend/services/primary-asset-url.d.ts.map +1 -0
- package/dist/backend/services/primary-asset-url.js +55 -0
- package/dist/backend/services/primary-asset-url.js.map +1 -0
- package/dist/backend/services/product-editor-preferences.service.d.ts +20 -0
- package/dist/backend/services/product-editor-preferences.service.d.ts.map +1 -0
- package/dist/backend/services/product-editor-preferences.service.js +44 -0
- package/dist/backend/services/product-editor-preferences.service.js.map +1 -0
- package/dist/backend/services/product-link.service.d.ts +169 -0
- package/dist/backend/services/product-link.service.d.ts.map +1 -0
- package/dist/backend/services/product-link.service.js +297 -0
- package/dist/backend/services/product-link.service.js.map +1 -0
- package/dist/backend/services/product-overrides.service.d.ts +77 -0
- package/dist/backend/services/product-overrides.service.d.ts.map +1 -0
- package/dist/backend/services/product-overrides.service.js +204 -0
- package/dist/backend/services/product-overrides.service.js.map +1 -0
- package/dist/backend/services/product-scope-context.service.d.ts +36 -0
- package/dist/backend/services/product-scope-context.service.d.ts.map +1 -0
- package/dist/backend/services/product-scope-context.service.js +106 -0
- package/dist/backend/services/product-scope-context.service.js.map +1 -0
- package/dist/backend/services/product-type-validations.d.ts +42 -0
- package/dist/backend/services/product-type-validations.d.ts.map +1 -0
- package/dist/backend/services/product-type-validations.js +55 -0
- package/dist/backend/services/product-type-validations.js.map +1 -0
- package/dist/backend/services/product-value-resolver.service.d.ts +59 -0
- package/dist/backend/services/product-value-resolver.service.d.ts.map +1 -0
- package/dist/backend/services/product-value-resolver.service.js +111 -0
- package/dist/backend/services/product-value-resolver.service.js.map +1 -0
- package/dist/backend/services/system-attribute-scopes.d.ts +18 -0
- package/dist/backend/services/system-attribute-scopes.d.ts.map +1 -0
- package/dist/backend/services/system-attribute-scopes.js +18 -0
- package/dist/backend/services/system-attribute-scopes.js.map +1 -0
- package/dist/backend/services/viewer-organization.d.ts +25 -0
- package/dist/backend/services/viewer-organization.d.ts.map +1 -0
- package/dist/backend/services/viewer-organization.js +31 -0
- package/dist/backend/services/viewer-organization.js.map +1 -0
- package/dist/manifest.d.ts +204 -0
- package/dist/manifest.d.ts.map +1 -0
- package/dist/manifest.js +686 -0
- package/dist/manifest.js.map +1 -0
- package/dist/migrations/20260429T064146_catalog_attribute_sets_init.d.ts +33 -0
- package/dist/migrations/20260429T064146_catalog_attribute_sets_init.d.ts.map +1 -0
- package/dist/migrations/20260429T064146_catalog_attribute_sets_init.js +118 -0
- package/dist/migrations/20260429T064146_catalog_attribute_sets_init.js.map +1 -0
- package/dist/migrations/20260429T070004_catalog_product_attribute_extensions.d.ts +24 -0
- package/dist/migrations/20260429T070004_catalog_product_attribute_extensions.d.ts.map +1 -0
- package/dist/migrations/20260429T070004_catalog_product_attribute_extensions.js +31 -0
- package/dist/migrations/20260429T070004_catalog_product_attribute_extensions.js.map +1 -0
- package/dist/migrations/20260429T102322_catalog_product_type_and_virtual_fields.d.ts +32 -0
- package/dist/migrations/20260429T102322_catalog_product_type_and_virtual_fields.d.ts.map +1 -0
- package/dist/migrations/20260429T102322_catalog_product_type_and_virtual_fields.js +58 -0
- package/dist/migrations/20260429T102322_catalog_product_type_and_virtual_fields.js.map +1 -0
- package/dist/migrations/20260429T111839_catalog_gallery_items_and_labels.d.ts +22 -0
- package/dist/migrations/20260429T111839_catalog_gallery_items_and_labels.d.ts.map +1 -0
- package/dist/migrations/20260429T111839_catalog_gallery_items_and_labels.js +66 -0
- package/dist/migrations/20260429T111839_catalog_gallery_items_and_labels.js.map +1 -0
- package/dist/migrations/20260429T112543_catalog_product_attachments.d.ts +18 -0
- package/dist/migrations/20260429T112543_catalog_product_attachments.d.ts.map +1 -0
- package/dist/migrations/20260429T112543_catalog_product_attachments.js +73 -0
- package/dist/migrations/20260429T112543_catalog_product_attachments.js.map +1 -0
- package/dist/migrations/20260429T123726_catalog_product_links.d.ts +21 -0
- package/dist/migrations/20260429T123726_catalog_product_links.d.ts.map +1 -0
- package/dist/migrations/20260429T123726_catalog_product_links.js +48 -0
- package/dist/migrations/20260429T123726_catalog_product_links.js.map +1 -0
- package/dist/migrations/20260429T130803_catalog_grouped_and_bundle.d.ts +23 -0
- package/dist/migrations/20260429T130803_catalog_grouped_and_bundle.d.ts.map +1 -0
- package/dist/migrations/20260429T130803_catalog_grouped_and_bundle.js +94 -0
- package/dist/migrations/20260429T130803_catalog_grouped_and_bundle.js.map +1 -0
- package/dist/migrations/20260501T185835_catalog_product_attribute_is_comparable.d.ts +24 -0
- package/dist/migrations/20260501T185835_catalog_product_attribute_is_comparable.d.ts.map +1 -0
- package/dist/migrations/20260501T185835_catalog_product_attribute_is_comparable.js +31 -0
- package/dist/migrations/20260501T185835_catalog_product_attribute_is_comparable.js.map +1 -0
- package/dist/migrations/20260505T060113_catalog_attribute_options_and_flags.d.ts +31 -0
- package/dist/migrations/20260505T060113_catalog_attribute_options_and_flags.d.ts.map +1 -0
- package/dist/migrations/20260505T060113_catalog_attribute_options_and_flags.js +133 -0
- package/dist/migrations/20260505T060113_catalog_attribute_options_and_flags.js.map +1 -0
- package/dist/migrations/20260515T082629_catalog_attribute_mass_editable.d.ts +16 -0
- package/dist/migrations/20260515T082629_catalog_attribute_mass_editable.d.ts.map +1 -0
- package/dist/migrations/20260515T082629_catalog_attribute_mass_editable.js +23 -0
- package/dist/migrations/20260515T082629_catalog_attribute_mass_editable.js.map +1 -0
- package/dist/migrations/20260526T124736_catalog_product_status_inactive.d.ts +10 -0
- package/dist/migrations/20260526T124736_catalog_product_status_inactive.d.ts.map +1 -0
- package/dist/migrations/20260526T124736_catalog_product_status_inactive.js +22 -0
- package/dist/migrations/20260526T124736_catalog_product_status_inactive.js.map +1 -0
- package/dist/migrations/20260611T140346_catalog_product_value_overrides_init.d.ts +38 -0
- package/dist/migrations/20260611T140346_catalog_product_value_overrides_init.d.ts.map +1 -0
- package/dist/migrations/20260611T140346_catalog_product_value_overrides_init.js +98 -0
- package/dist/migrations/20260611T140346_catalog_product_value_overrides_init.js.map +1 -0
- package/dist/migrations/20260611T140400_catalog_attribute_quick_searchable.d.ts +13 -0
- package/dist/migrations/20260611T140400_catalog_attribute_quick_searchable.d.ts.map +1 -0
- package/dist/migrations/20260611T140400_catalog_attribute_quick_searchable.js +17 -0
- package/dist/migrations/20260611T140400_catalog_attribute_quick_searchable.js.map +1 -0
- package/dist/migrations/20260611T140407_catalog_bulk_operations.d.ts +16 -0
- package/dist/migrations/20260611T140407_catalog_bulk_operations.d.ts.map +1 -0
- package/dist/migrations/20260611T140407_catalog_bulk_operations.js +42 -0
- package/dist/migrations/20260611T140407_catalog_bulk_operations.js.map +1 -0
- package/dist/migrations/20260611T140408_catalog_bulk_operation_logs.d.ts +14 -0
- package/dist/migrations/20260611T140408_catalog_bulk_operation_logs.d.ts.map +1 -0
- package/dist/migrations/20260611T140408_catalog_bulk_operation_logs.js +18 -0
- package/dist/migrations/20260611T140408_catalog_bulk_operation_logs.js.map +1 -0
- package/dist/migrations/20260611T140412_catalog_product_packaging_units.d.ts +11 -0
- package/dist/migrations/20260611T140412_catalog_product_packaging_units.d.ts.map +1 -0
- package/dist/migrations/20260611T140412_catalog_product_packaging_units.js +29 -0
- package/dist/migrations/20260611T140412_catalog_product_packaging_units.js.map +1 -0
- package/dist/migrations/20260718T060659_catalog_bulk_operation_revert_state.d.ts +23 -0
- package/dist/migrations/20260718T060659_catalog_bulk_operation_revert_state.d.ts.map +1 -0
- package/dist/migrations/20260718T060659_catalog_bulk_operation_revert_state.js +35 -0
- package/dist/migrations/20260718T060659_catalog_bulk_operation_revert_state.js.map +1 -0
- package/dist/migrations/20260718T200343_catalog_category_custom_field_values.d.ts +12 -0
- package/dist/migrations/20260718T200343_catalog_category_custom_field_values.d.ts.map +1 -0
- package/dist/migrations/20260718T200343_catalog_category_custom_field_values.js +16 -0
- package/dist/migrations/20260718T200343_catalog_category_custom_field_values.js.map +1 -0
- package/dist/migrations/20260723T230401_catalog_attributes_on_custom_fields.d.ts +32 -0
- package/dist/migrations/20260723T230401_catalog_attributes_on_custom_fields.d.ts.map +1 -0
- package/dist/migrations/20260723T230401_catalog_attributes_on_custom_fields.js +286 -0
- package/dist/migrations/20260723T230401_catalog_attributes_on_custom_fields.js.map +1 -0
- package/dist/migrations/20260804T152604_catalog_widen_product_sku.d.ts +36 -0
- package/dist/migrations/20260804T152604_catalog_widen_product_sku.d.ts.map +1 -0
- package/dist/migrations/20260804T152604_catalog_widen_product_sku.js +63 -0
- package/dist/migrations/20260804T152604_catalog_widen_product_sku.js.map +1 -0
- package/dist/migrations/20260804T160244_catalog_category_activation.d.ts +18 -0
- package/dist/migrations/20260804T160244_catalog_category_activation.d.ts.map +1 -0
- package/dist/migrations/20260804T160244_catalog_category_activation.js +22 -0
- package/dist/migrations/20260804T160244_catalog_category_activation.js.map +1 -0
- package/dist/migrations/20260912T094557_catalog_sales_channel_products.d.ts +27 -0
- package/dist/migrations/20260912T094557_catalog_sales_channel_products.d.ts.map +1 -0
- package/dist/migrations/20260912T094557_catalog_sales_channel_products.js +44 -0
- package/dist/migrations/20260912T094557_catalog_sales_channel_products.js.map +1 -0
- package/dist/migrations/20260912T094623_catalog_sales_channel_categories.d.ts +27 -0
- package/dist/migrations/20260912T094623_catalog_sales_channel_categories.d.ts.map +1 -0
- package/dist/migrations/20260912T094623_catalog_sales_channel_categories.js +44 -0
- package/dist/migrations/20260912T094623_catalog_sales_channel_categories.js.map +1 -0
- package/dist/migrations/20260925T125527_catalog_inventory_columns.d.ts +36 -0
- package/dist/migrations/20260925T125527_catalog_inventory_columns.d.ts.map +1 -0
- package/dist/migrations/20260925T125527_catalog_inventory_columns.js +87 -0
- package/dist/migrations/20260925T125527_catalog_inventory_columns.js.map +1 -0
- package/dist/migrations/index.d.ts +55 -0
- package/dist/migrations/index.d.ts.map +1 -0
- package/dist/migrations/index.js +80 -0
- package/dist/migrations/index.js.map +1 -0
- package/dist/ports/index.d.ts +96 -0
- package/dist/ports/index.d.ts.map +1 -0
- package/dist/ports/index.js +2 -0
- package/dist/ports/index.js.map +1 -0
- package/docs/catalog/attachments.md +69 -0
- package/docs/catalog/attribute-sets.md +63 -0
- package/docs/catalog/attributes.md +244 -0
- package/docs/catalog/composite-products.md +115 -0
- package/docs/catalog/gallery-and-labels.md +73 -0
- package/docs/catalog/packaging-units.md +67 -0
- package/docs/catalog/per-channel-per-language-overrides.md +234 -0
- package/docs/catalog/product-links.md +79 -0
- package/docs/catalog.md +207 -0
- package/i18n/en.json +649 -0
- package/i18n/pl.json +649 -0
- package/package.json +109 -0
- package/tailwind.css +14 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Migration } from '@mikro-orm/migrations';
|
|
2
|
+
/**
|
|
3
|
+
* Catalog 002 — Attribute Sets (T014).
|
|
4
|
+
*
|
|
5
|
+
* Adds the AttributeSet domain on top of foundation 001:
|
|
6
|
+
* - `attribute_sets`: named container of Product Attributes.
|
|
7
|
+
* - `attribute_set_attributes`: composite-PK bridge to
|
|
8
|
+
* `product_attributes` with a `position` column.
|
|
9
|
+
* - Idempotent seed of the system **Default** Attribute Set with a
|
|
10
|
+
* deterministic UUID so every Product can reference it without
|
|
11
|
+
* application-level lookup.
|
|
12
|
+
* - `products.attribute_set_id`: NOT NULL FK pointing at the Default
|
|
13
|
+
* set on existing rows; new rows pick the Set explicitly.
|
|
14
|
+
*
|
|
15
|
+
* See specs/002-catalog-module/data-model.md §2.1, §2.2, §1.1.
|
|
16
|
+
*
|
|
17
|
+
* Naming follows Principle VI:
|
|
18
|
+
* - Plural snake_case tables.
|
|
19
|
+
* - FK columns named `{singular}_id`.
|
|
20
|
+
* - Unique / index constraint names prefixed with table name.
|
|
21
|
+
*/
|
|
22
|
+
export declare class Migration20260429T064146CatalogAttributeSetsInit extends Migration {
|
|
23
|
+
/**
|
|
24
|
+
* Deterministic UUID for the system Default Attribute Set. Hard-coded
|
|
25
|
+
* so seeds, contract tests, and integration tests can reference it
|
|
26
|
+
* without a lookup query, and so backfilling existing Products on this
|
|
27
|
+
* migration is a single UPDATE rather than two queries.
|
|
28
|
+
*/
|
|
29
|
+
static readonly DEFAULT_ATTRIBUTE_SET_ID = "defa0017-0000-4000-8000-000000000000";
|
|
30
|
+
up(): Promise<void>;
|
|
31
|
+
down(): Promise<void>;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=20260429T064146_catalog_attribute_sets_init.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"20260429T064146_catalog_attribute_sets_init.d.ts","sourceRoot":"","sources":["../../src/migrations/20260429T064146_catalog_attribute_sets_init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,gDAAiD,SAAQ,SAAS;IAC7E;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CAAC,wBAAwB,0CACC;IAE1B,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC;IA0FnB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CASrC"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { Migration } from '@mikro-orm/migrations';
|
|
2
|
+
/**
|
|
3
|
+
* Catalog 002 — Attribute Sets (T014).
|
|
4
|
+
*
|
|
5
|
+
* Adds the AttributeSet domain on top of foundation 001:
|
|
6
|
+
* - `attribute_sets`: named container of Product Attributes.
|
|
7
|
+
* - `attribute_set_attributes`: composite-PK bridge to
|
|
8
|
+
* `product_attributes` with a `position` column.
|
|
9
|
+
* - Idempotent seed of the system **Default** Attribute Set with a
|
|
10
|
+
* deterministic UUID so every Product can reference it without
|
|
11
|
+
* application-level lookup.
|
|
12
|
+
* - `products.attribute_set_id`: NOT NULL FK pointing at the Default
|
|
13
|
+
* set on existing rows; new rows pick the Set explicitly.
|
|
14
|
+
*
|
|
15
|
+
* See specs/002-catalog-module/data-model.md §2.1, §2.2, §1.1.
|
|
16
|
+
*
|
|
17
|
+
* Naming follows Principle VI:
|
|
18
|
+
* - Plural snake_case tables.
|
|
19
|
+
* - FK columns named `{singular}_id`.
|
|
20
|
+
* - Unique / index constraint names prefixed with table name.
|
|
21
|
+
*/
|
|
22
|
+
export class Migration20260429T064146CatalogAttributeSetsInit extends Migration {
|
|
23
|
+
/**
|
|
24
|
+
* Deterministic UUID for the system Default Attribute Set. Hard-coded
|
|
25
|
+
* so seeds, contract tests, and integration tests can reference it
|
|
26
|
+
* without a lookup query, and so backfilling existing Products on this
|
|
27
|
+
* migration is a single UPDATE rather than two queries.
|
|
28
|
+
*/
|
|
29
|
+
static DEFAULT_ATTRIBUTE_SET_ID = 'defa0017-0000-4000-8000-000000000000'; // mnemonic: default + migration 017; valid UUID v4 (version=4, variant=8)
|
|
30
|
+
async up() {
|
|
31
|
+
// -- attribute_sets -------------------------------------------------------
|
|
32
|
+
this.addSql(`
|
|
33
|
+
create table "attribute_sets" (
|
|
34
|
+
"id" uuid not null,
|
|
35
|
+
"code" varchar(64) not null,
|
|
36
|
+
"name" jsonb not null,
|
|
37
|
+
"description" jsonb null,
|
|
38
|
+
"is_system" boolean not null default false,
|
|
39
|
+
"created_at" timestamptz not null,
|
|
40
|
+
"updated_at" timestamptz not null,
|
|
41
|
+
constraint "attribute_sets_pkey" primary key ("id"),
|
|
42
|
+
constraint "uniq_attribute_sets_code" unique ("code")
|
|
43
|
+
);
|
|
44
|
+
`);
|
|
45
|
+
// Idempotent seed of the system Default set.
|
|
46
|
+
this.addSql(`
|
|
47
|
+
insert into "attribute_sets"
|
|
48
|
+
("id", "code", "name", "description", "is_system", "created_at", "updated_at")
|
|
49
|
+
values
|
|
50
|
+
('${Migration20260429T064146CatalogAttributeSetsInit.DEFAULT_ATTRIBUTE_SET_ID}',
|
|
51
|
+
'default',
|
|
52
|
+
'{"en-US":"Default","pl-PL":"Domyślny"}'::jsonb,
|
|
53
|
+
'{"en-US":"System default attribute set assigned to every product unless explicitly changed.","pl-PL":"Systemowy domyślny zbiór atrybutów przypisywany do każdego produktu, dopóki administrator go nie zmieni."}'::jsonb,
|
|
54
|
+
true,
|
|
55
|
+
now(),
|
|
56
|
+
now())
|
|
57
|
+
on conflict ("code") do nothing;
|
|
58
|
+
`);
|
|
59
|
+
// -- attribute_set_attributes (M:N bridge) -------------------------------
|
|
60
|
+
this.addSql(`
|
|
61
|
+
create table "attribute_set_attributes" (
|
|
62
|
+
"attribute_set_id" uuid not null,
|
|
63
|
+
"product_attribute_id" uuid not null,
|
|
64
|
+
"position" int not null default 0,
|
|
65
|
+
constraint "attribute_set_attributes_pkey"
|
|
66
|
+
primary key ("attribute_set_id", "product_attribute_id"),
|
|
67
|
+
constraint "fk_attribute_set_attributes_set"
|
|
68
|
+
foreign key ("attribute_set_id")
|
|
69
|
+
references "attribute_sets" ("id")
|
|
70
|
+
on delete cascade,
|
|
71
|
+
constraint "fk_attribute_set_attributes_attribute"
|
|
72
|
+
foreign key ("product_attribute_id")
|
|
73
|
+
references "product_attributes" ("id")
|
|
74
|
+
on delete restrict
|
|
75
|
+
);
|
|
76
|
+
`);
|
|
77
|
+
this.addSql('create index "attribute_set_attributes_set_id_index" on "attribute_set_attributes" ("attribute_set_id");');
|
|
78
|
+
this.addSql('create index "attribute_set_attributes_attribute_id_index" on "attribute_set_attributes" ("product_attribute_id");');
|
|
79
|
+
// -- products.attribute_set_id -------------------------------------------
|
|
80
|
+
// Backfill in three steps so the constraint is enforceable on
|
|
81
|
+
// pre-existing rows:
|
|
82
|
+
// 1. Add the column nullable with a default of the Default set ID.
|
|
83
|
+
// 2. Update all rows whose value is NULL to the Default set ID
|
|
84
|
+
// (handles any legacy NULL state, even though the default makes
|
|
85
|
+
// this a no-op for greenfield).
|
|
86
|
+
// 3. Tighten to NOT NULL and add the FK + index.
|
|
87
|
+
this.addSql(`
|
|
88
|
+
alter table "products"
|
|
89
|
+
add column "attribute_set_id" uuid
|
|
90
|
+
default '${Migration20260429T064146CatalogAttributeSetsInit.DEFAULT_ATTRIBUTE_SET_ID}'::uuid;
|
|
91
|
+
`);
|
|
92
|
+
this.addSql(`
|
|
93
|
+
update "products"
|
|
94
|
+
set "attribute_set_id" = '${Migration20260429T064146CatalogAttributeSetsInit.DEFAULT_ATTRIBUTE_SET_ID}'::uuid
|
|
95
|
+
where "attribute_set_id" is null;
|
|
96
|
+
`);
|
|
97
|
+
this.addSql(`
|
|
98
|
+
alter table "products"
|
|
99
|
+
alter column "attribute_set_id" set not null;
|
|
100
|
+
`);
|
|
101
|
+
this.addSql(`
|
|
102
|
+
alter table "products"
|
|
103
|
+
add constraint "fk_products_attribute_set"
|
|
104
|
+
foreign key ("attribute_set_id")
|
|
105
|
+
references "attribute_sets" ("id")
|
|
106
|
+
on delete restrict;
|
|
107
|
+
`);
|
|
108
|
+
this.addSql('create index "products_attribute_set_id_index" on "products" ("attribute_set_id");');
|
|
109
|
+
}
|
|
110
|
+
async down() {
|
|
111
|
+
this.addSql('drop index if exists "products_attribute_set_id_index";');
|
|
112
|
+
this.addSql('alter table "products" drop constraint if exists "fk_products_attribute_set";');
|
|
113
|
+
this.addSql('alter table "products" drop column if exists "attribute_set_id";');
|
|
114
|
+
this.addSql('drop table if exists "attribute_set_attributes" cascade;');
|
|
115
|
+
this.addSql('drop table if exists "attribute_sets" cascade;');
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=20260429T064146_catalog_attribute_sets_init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"20260429T064146_catalog_attribute_sets_init.js","sourceRoot":"","sources":["../../src/migrations/20260429T064146_catalog_attribute_sets_init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,OAAO,gDAAiD,SAAQ,SAAS;IAC7E;;;;;OAKG;IACH,MAAM,CAAU,wBAAwB,GACtC,sCAAsC,CAAC,CAAC,0EAA0E;IAE3G,KAAK,CAAC,EAAE;QACf,4EAA4E;QAC5E,IAAI,CAAC,MAAM,CAAC;;;;;;;;;;;;KAYX,CAAC,CAAC;QAEH,6CAA6C;QAC7C,IAAI,CAAC,MAAM,CAAC;;;;YAIJ,gDAAgD,CAAC,wBAAwB;;;;;;;;KAQhF,CAAC,CAAC;QAEH,2EAA2E;QAC3E,IAAI,CAAC,MAAM,CAAC;;;;;;;;;;;;;;;;KAgBX,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CACT,0GAA0G,CAC3G,CAAC;QACF,IAAI,CAAC,MAAM,CACT,oHAAoH,CACrH,CAAC;QAEF,2EAA2E;QAC3E,8DAA8D;QAC9D,qBAAqB;QACrB,qEAAqE;QACrE,iEAAiE;QACjE,qEAAqE;QACrE,qCAAqC;QACrC,mDAAmD;QACnD,IAAI,CAAC,MAAM,CAAC;;;mBAGG,gDAAgD,CAAC,wBAAwB;KACvF,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC;;oCAEoB,gDAAgD,CAAC,wBAAwB;;KAExG,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC;;;KAGX,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC;;;;;;KAMX,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CACT,oFAAoF,CACrF,CAAC;IACJ,CAAC;IAEQ,KAAK,CAAC,IAAI;QACjB,IAAI,CAAC,MAAM,CAAC,yDAAyD,CAAC,CAAC;QACvE,IAAI,CAAC,MAAM,CACT,+EAA+E,CAChF,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,kEAAkE,CAAC,CAAC;QAChF,IAAI,CAAC,MAAM,CAAC,0DAA0D,CAAC,CAAC;QACxE,IAAI,CAAC,MAAM,CAAC,gDAAgD,CAAC,CAAC;IAChE,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Migration } from '@mikro-orm/migrations';
|
|
2
|
+
/**
|
|
3
|
+
* Catalog 002 — ProductAttribute extensions (T015).
|
|
4
|
+
*
|
|
5
|
+
* Backs the new attribute capabilities introduced in feature 002:
|
|
6
|
+
* - `display_as_slider` boolean: presentation hint for filterable
|
|
7
|
+
* numeric/price attributes. Honored only when `value_type IN
|
|
8
|
+
* ('number','price')`; service layer rejects `display_as_slider=true`
|
|
9
|
+
* on any other type.
|
|
10
|
+
*
|
|
11
|
+
* The `value_type` column itself stays a plain `varchar(16)` with no
|
|
12
|
+
* DB-level CHECK constraint (foundation 001 chose to enforce the enum
|
|
13
|
+
* only at the application/Zod layer). New values `'multiselect'` and
|
|
14
|
+
* `'price'` are added to the application enum in the same change set
|
|
15
|
+
* (entity + Zod schema); no DDL change needed for them — both fit
|
|
16
|
+
* within varchar(16).
|
|
17
|
+
*
|
|
18
|
+
* See specs/002-catalog-module/data-model.md §1.2, research.md R-4 / R-7.
|
|
19
|
+
*/
|
|
20
|
+
export declare class Migration20260429T070004CatalogProductAttributeExtensions extends Migration {
|
|
21
|
+
up(): Promise<void>;
|
|
22
|
+
down(): Promise<void>;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=20260429T070004_catalog_product_attribute_extensions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"20260429T070004_catalog_product_attribute_extensions.d.ts","sourceRoot":"","sources":["../../src/migrations/20260429T070004_catalog_product_attribute_extensions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,yDAA0D,SAAQ,SAAS;IACvE,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC;IAOnB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAKrC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Migration } from '@mikro-orm/migrations';
|
|
2
|
+
/**
|
|
3
|
+
* Catalog 002 — ProductAttribute extensions (T015).
|
|
4
|
+
*
|
|
5
|
+
* Backs the new attribute capabilities introduced in feature 002:
|
|
6
|
+
* - `display_as_slider` boolean: presentation hint for filterable
|
|
7
|
+
* numeric/price attributes. Honored only when `value_type IN
|
|
8
|
+
* ('number','price')`; service layer rejects `display_as_slider=true`
|
|
9
|
+
* on any other type.
|
|
10
|
+
*
|
|
11
|
+
* The `value_type` column itself stays a plain `varchar(16)` with no
|
|
12
|
+
* DB-level CHECK constraint (foundation 001 chose to enforce the enum
|
|
13
|
+
* only at the application/Zod layer). New values `'multiselect'` and
|
|
14
|
+
* `'price'` are added to the application enum in the same change set
|
|
15
|
+
* (entity + Zod schema); no DDL change needed for them — both fit
|
|
16
|
+
* within varchar(16).
|
|
17
|
+
*
|
|
18
|
+
* See specs/002-catalog-module/data-model.md §1.2, research.md R-4 / R-7.
|
|
19
|
+
*/
|
|
20
|
+
export class Migration20260429T070004CatalogProductAttributeExtensions extends Migration {
|
|
21
|
+
async up() {
|
|
22
|
+
this.addSql(`
|
|
23
|
+
alter table "product_attributes"
|
|
24
|
+
add column "display_as_slider" boolean not null default false;
|
|
25
|
+
`);
|
|
26
|
+
}
|
|
27
|
+
async down() {
|
|
28
|
+
this.addSql('alter table "product_attributes" drop column if exists "display_as_slider";');
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=20260429T070004_catalog_product_attribute_extensions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"20260429T070004_catalog_product_attribute_extensions.js","sourceRoot":"","sources":["../../src/migrations/20260429T070004_catalog_product_attribute_extensions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,OAAO,yDAA0D,SAAQ,SAAS;IAC7E,KAAK,CAAC,EAAE;QACf,IAAI,CAAC,MAAM,CAAC;;;KAGX,CAAC,CAAC;IACL,CAAC;IAEQ,KAAK,CAAC,IAAI;QACjB,IAAI,CAAC,MAAM,CACT,6EAA6E,CAC9E,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Migration } from '@mikro-orm/migrations';
|
|
2
|
+
/**
|
|
3
|
+
* Catalog 002 — Product type rename + virtual download fields (T044).
|
|
4
|
+
*
|
|
5
|
+
* Three changes (data-model.md §1.1, research.md R-1):
|
|
6
|
+
* - Rename `products.type` value 'variant' → 'configurable'. Foundation
|
|
7
|
+
* 001 stored configurable products as type='variant'; feature 002
|
|
8
|
+
* renames this everywhere for consistency with the spec wording.
|
|
9
|
+
* The DB column itself is `varchar(16)` with no CHECK constraint
|
|
10
|
+
* (foundation enforces the enum only at the application/Zod layer),
|
|
11
|
+
* so the rename is a plain UPDATE.
|
|
12
|
+
* - Add 'bundle' as a new type value. No DDL needed for the same
|
|
13
|
+
* reason — varchar(16) already accommodates it. The application
|
|
14
|
+
* enum extension lives in T046 (productTypeSchema).
|
|
15
|
+
* - Add `download_asset_id` (uuid NULL FK to assets) and `download_url`
|
|
16
|
+
* (varchar(2048) NULL) for type='virtual'. Cross-field invariant
|
|
17
|
+
* ("exactly one of") is enforced at the service layer (T047), not
|
|
18
|
+
* by a DB CHECK — PG can't express the rule cleanly without
|
|
19
|
+
* duplicating the type comparison in every CHECK constraint.
|
|
20
|
+
*
|
|
21
|
+
* Rollback (down) reverses everything: drop new columns, then UPDATE
|
|
22
|
+
* configurable rows back to 'variant'. Bundle rows would need to be
|
|
23
|
+
* downgraded too — for safety we update them to 'simple' on rollback
|
|
24
|
+
* since foundation has no native 'bundle' representation; rollback in
|
|
25
|
+
* production with bundle data already present would be a separate
|
|
26
|
+
* data-migration concern.
|
|
27
|
+
*/
|
|
28
|
+
export declare class Migration20260429T102322CatalogProductTypeAndVirtualFields extends Migration {
|
|
29
|
+
up(): Promise<void>;
|
|
30
|
+
down(): Promise<void>;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=20260429T102322_catalog_product_type_and_virtual_fields.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"20260429T102322_catalog_product_type_and_virtual_fields.d.ts","sourceRoot":"","sources":["../../src/migrations/20260429T102322_catalog_product_type_and_virtual_fields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,0DAA2D,SAAQ,SAAS;IACxE,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC;IAyBnB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAiBrC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { Migration } from '@mikro-orm/migrations';
|
|
2
|
+
/**
|
|
3
|
+
* Catalog 002 — Product type rename + virtual download fields (T044).
|
|
4
|
+
*
|
|
5
|
+
* Three changes (data-model.md §1.1, research.md R-1):
|
|
6
|
+
* - Rename `products.type` value 'variant' → 'configurable'. Foundation
|
|
7
|
+
* 001 stored configurable products as type='variant'; feature 002
|
|
8
|
+
* renames this everywhere for consistency with the spec wording.
|
|
9
|
+
* The DB column itself is `varchar(16)` with no CHECK constraint
|
|
10
|
+
* (foundation enforces the enum only at the application/Zod layer),
|
|
11
|
+
* so the rename is a plain UPDATE.
|
|
12
|
+
* - Add 'bundle' as a new type value. No DDL needed for the same
|
|
13
|
+
* reason — varchar(16) already accommodates it. The application
|
|
14
|
+
* enum extension lives in T046 (productTypeSchema).
|
|
15
|
+
* - Add `download_asset_id` (uuid NULL FK to assets) and `download_url`
|
|
16
|
+
* (varchar(2048) NULL) for type='virtual'. Cross-field invariant
|
|
17
|
+
* ("exactly one of") is enforced at the service layer (T047), not
|
|
18
|
+
* by a DB CHECK — PG can't express the rule cleanly without
|
|
19
|
+
* duplicating the type comparison in every CHECK constraint.
|
|
20
|
+
*
|
|
21
|
+
* Rollback (down) reverses everything: drop new columns, then UPDATE
|
|
22
|
+
* configurable rows back to 'variant'. Bundle rows would need to be
|
|
23
|
+
* downgraded too — for safety we update them to 'simple' on rollback
|
|
24
|
+
* since foundation has no native 'bundle' representation; rollback in
|
|
25
|
+
* production with bundle data already present would be a separate
|
|
26
|
+
* data-migration concern.
|
|
27
|
+
*/
|
|
28
|
+
export class Migration20260429T102322CatalogProductTypeAndVirtualFields extends Migration {
|
|
29
|
+
async up() {
|
|
30
|
+
// 1. Rename 'variant' → 'configurable'.
|
|
31
|
+
this.addSql(`update "products" set "type" = 'configurable' where "type" = 'variant';`);
|
|
32
|
+
// 2. Add virtual download fields. Both nullable; "exactly one of"
|
|
33
|
+
// is enforced by the service (T047).
|
|
34
|
+
this.addSql(`
|
|
35
|
+
alter table "products"
|
|
36
|
+
add column "download_asset_id" uuid null,
|
|
37
|
+
add column "download_url" varchar(2048) null;
|
|
38
|
+
`);
|
|
39
|
+
this.addSql(`
|
|
40
|
+
alter table "products"
|
|
41
|
+
add constraint "fk_products_download_asset"
|
|
42
|
+
foreign key ("download_asset_id")
|
|
43
|
+
references "assets" ("id")
|
|
44
|
+
on delete restrict;
|
|
45
|
+
`);
|
|
46
|
+
this.addSql('create index "products_download_asset_id_index" on "products" ("download_asset_id");');
|
|
47
|
+
}
|
|
48
|
+
async down() {
|
|
49
|
+
this.addSql('drop index if exists "products_download_asset_id_index";');
|
|
50
|
+
this.addSql('alter table "products" drop constraint if exists "fk_products_download_asset";');
|
|
51
|
+
this.addSql('alter table "products" drop column if exists "download_url", drop column if exists "download_asset_id";');
|
|
52
|
+
// Rollback type rename. Bundle-typed rows are downgraded to simple
|
|
53
|
+
// because foundation 001 has no 'bundle' value.
|
|
54
|
+
this.addSql(`update "products" set "type" = 'simple' where "type" = 'bundle';`);
|
|
55
|
+
this.addSql(`update "products" set "type" = 'variant' where "type" = 'configurable';`);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=20260429T102322_catalog_product_type_and_virtual_fields.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"20260429T102322_catalog_product_type_and_virtual_fields.js","sourceRoot":"","sources":["../../src/migrations/20260429T102322_catalog_product_type_and_virtual_fields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,OAAO,0DAA2D,SAAQ,SAAS;IAC9E,KAAK,CAAC,EAAE;QACf,wCAAwC;QACxC,IAAI,CAAC,MAAM,CACT,yEAAyE,CAC1E,CAAC;QAEF,kEAAkE;QAClE,wCAAwC;QACxC,IAAI,CAAC,MAAM,CAAC;;;;KAIX,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC;;;;;;KAMX,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CACT,sFAAsF,CACvF,CAAC;IACJ,CAAC;IAEQ,KAAK,CAAC,IAAI;QACjB,IAAI,CAAC,MAAM,CAAC,0DAA0D,CAAC,CAAC;QACxE,IAAI,CAAC,MAAM,CACT,gFAAgF,CACjF,CAAC;QACF,IAAI,CAAC,MAAM,CACT,yGAAyG,CAC1G,CAAC;QACF,mEAAmE;QACnE,gDAAgD;QAChD,IAAI,CAAC,MAAM,CACT,kEAAkE,CACnE,CAAC;QACF,IAAI,CAAC,MAAM,CACT,yEAAyE,CAC1E,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Migration } from '@mikro-orm/migrations';
|
|
2
|
+
/**
|
|
3
|
+
* Catalog 002 — Gallery (T062, US3, data-model.md §2.3, §2.4).
|
|
4
|
+
*
|
|
5
|
+
* Two tables:
|
|
6
|
+
* - gallery_items: per-Product list of Asset references with `position`
|
|
7
|
+
* ordering. Asset is FK → assets(id) ON DELETE RESTRICT (Asset
|
|
8
|
+
* survives gallery item deletion).
|
|
9
|
+
* - gallery_item_labels: per-Product label assignments. Per-product
|
|
10
|
+
* UNIQUE constraint on (product_id, label) enforces the spec rule
|
|
11
|
+
* that only ONE Element of each label kind can exist per Product
|
|
12
|
+
* (research.md R-2). The `product_id` column is duplicated on the
|
|
13
|
+
* bridge so PG can enforce the unique constraint without a sub-query.
|
|
14
|
+
*
|
|
15
|
+
* Naming follows Principle VI (plural snake_case tables, FK columns
|
|
16
|
+
* named `{singular}_id`).
|
|
17
|
+
*/
|
|
18
|
+
export declare class Migration20260429T111839CatalogGalleryItemsAndLabels extends Migration {
|
|
19
|
+
up(): Promise<void>;
|
|
20
|
+
down(): Promise<void>;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=20260429T111839_catalog_gallery_items_and_labels.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"20260429T111839_catalog_gallery_items_and_labels.d.ts","sourceRoot":"","sources":["../../src/migrations/20260429T111839_catalog_gallery_items_and_labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,oDAAqD,SAAQ,SAAS;IAClE,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC;IAkDnB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAIrC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { Migration } from '@mikro-orm/migrations';
|
|
2
|
+
/**
|
|
3
|
+
* Catalog 002 — Gallery (T062, US3, data-model.md §2.3, §2.4).
|
|
4
|
+
*
|
|
5
|
+
* Two tables:
|
|
6
|
+
* - gallery_items: per-Product list of Asset references with `position`
|
|
7
|
+
* ordering. Asset is FK → assets(id) ON DELETE RESTRICT (Asset
|
|
8
|
+
* survives gallery item deletion).
|
|
9
|
+
* - gallery_item_labels: per-Product label assignments. Per-product
|
|
10
|
+
* UNIQUE constraint on (product_id, label) enforces the spec rule
|
|
11
|
+
* that only ONE Element of each label kind can exist per Product
|
|
12
|
+
* (research.md R-2). The `product_id` column is duplicated on the
|
|
13
|
+
* bridge so PG can enforce the unique constraint without a sub-query.
|
|
14
|
+
*
|
|
15
|
+
* Naming follows Principle VI (plural snake_case tables, FK columns
|
|
16
|
+
* named `{singular}_id`).
|
|
17
|
+
*/
|
|
18
|
+
export class Migration20260429T111839CatalogGalleryItemsAndLabels extends Migration {
|
|
19
|
+
async up() {
|
|
20
|
+
// -- gallery_items --------------------------------------------------------
|
|
21
|
+
this.addSql(`
|
|
22
|
+
create table "gallery_items" (
|
|
23
|
+
"id" uuid not null,
|
|
24
|
+
"product_id" uuid not null,
|
|
25
|
+
"asset_id" uuid not null,
|
|
26
|
+
"position" int not null default 0,
|
|
27
|
+
"created_at" timestamptz not null,
|
|
28
|
+
"updated_at" timestamptz not null,
|
|
29
|
+
constraint "gallery_items_pkey" primary key ("id"),
|
|
30
|
+
constraint "fk_gallery_items_product"
|
|
31
|
+
foreign key ("product_id") references "products" ("id") on delete cascade,
|
|
32
|
+
constraint "fk_gallery_items_asset"
|
|
33
|
+
foreign key ("asset_id") references "assets" ("id") on delete restrict
|
|
34
|
+
);
|
|
35
|
+
`);
|
|
36
|
+
this.addSql('create index "gallery_items_product_id_index" on "gallery_items" ("product_id");');
|
|
37
|
+
this.addSql('create index "gallery_items_product_id_position_index" on "gallery_items" ("product_id", "position");');
|
|
38
|
+
// -- gallery_item_labels (bridge) ----------------------------------------
|
|
39
|
+
// Composite PK on (gallery_item_id, label) prevents a single
|
|
40
|
+
// gallery_item from receiving the same label twice.
|
|
41
|
+
// UNIQUE(product_id, label) enforces "only one of each label per
|
|
42
|
+
// Product" — the load-bearing constraint that makes the swap
|
|
43
|
+
// operation safe (research.md R-2).
|
|
44
|
+
this.addSql(`
|
|
45
|
+
create table "gallery_item_labels" (
|
|
46
|
+
"gallery_item_id" uuid not null,
|
|
47
|
+
"product_id" uuid not null,
|
|
48
|
+
"label" varchar(16) not null,
|
|
49
|
+
constraint "gallery_item_labels_pkey" primary key ("gallery_item_id", "label"),
|
|
50
|
+
constraint "uniq_gallery_item_labels_product_label" unique ("product_id", "label"),
|
|
51
|
+
constraint "fk_gallery_item_labels_item"
|
|
52
|
+
foreign key ("gallery_item_id") references "gallery_items" ("id") on delete cascade,
|
|
53
|
+
constraint "fk_gallery_item_labels_product"
|
|
54
|
+
foreign key ("product_id") references "products" ("id") on delete cascade,
|
|
55
|
+
constraint "chk_gallery_item_labels_label"
|
|
56
|
+
check ("label" in ('base_image', 'small_image', 'thumbnail'))
|
|
57
|
+
);
|
|
58
|
+
`);
|
|
59
|
+
this.addSql('create index "gallery_item_labels_product_id_index" on "gallery_item_labels" ("product_id");');
|
|
60
|
+
}
|
|
61
|
+
async down() {
|
|
62
|
+
this.addSql('drop table if exists "gallery_item_labels" cascade;');
|
|
63
|
+
this.addSql('drop table if exists "gallery_items" cascade;');
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=20260429T111839_catalog_gallery_items_and_labels.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"20260429T111839_catalog_gallery_items_and_labels.js","sourceRoot":"","sources":["../../src/migrations/20260429T111839_catalog_gallery_items_and_labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAO,oDAAqD,SAAQ,SAAS;IACxE,KAAK,CAAC,EAAE;QACf,4EAA4E;QAC5E,IAAI,CAAC,MAAM,CAAC;;;;;;;;;;;;;;KAcX,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CACT,kFAAkF,CACnF,CAAC;QACF,IAAI,CAAC,MAAM,CACT,uGAAuG,CACxG,CAAC;QAEF,2EAA2E;QAC3E,6DAA6D;QAC7D,oDAAoD;QACpD,iEAAiE;QACjE,6DAA6D;QAC7D,oCAAoC;QACpC,IAAI,CAAC,MAAM,CAAC;;;;;;;;;;;;;;KAcX,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CACT,8FAA8F,CAC/F,CAAC;IACJ,CAAC;IAEQ,KAAK,CAAC,IAAI;QACjB,IAAI,CAAC,MAAM,CAAC,qDAAqD,CAAC,CAAC;QACnE,IAAI,CAAC,MAAM,CAAC,+CAA+C,CAAC,CAAC;IAC/D,CAAC;CACF"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Migration } from '@mikro-orm/migrations';
|
|
2
|
+
/**
|
|
3
|
+
* Catalog 002 — Attachments (T070, US3, data-model.md §2.5, §2.6).
|
|
4
|
+
*
|
|
5
|
+
* Two tables:
|
|
6
|
+
* - attachment_types: global dictionary (code, multilingual name,
|
|
7
|
+
* position). Seeded with 4 standard types: certificate, tech_spec,
|
|
8
|
+
* product_card, pdf. Idempotent ON CONFLICT (code) DO NOTHING.
|
|
9
|
+
* - product_attachments: cross-product wrapper around an Asset
|
|
10
|
+
* (research.md R-9). Composite of (product_id, asset_id,
|
|
11
|
+
* attachment_type_id, name, description, position). Asset is FK
|
|
12
|
+
* RESTRICT (Asset survives attachment unlink).
|
|
13
|
+
*/
|
|
14
|
+
export declare class Migration20260429T112543CatalogProductAttachments extends Migration {
|
|
15
|
+
up(): Promise<void>;
|
|
16
|
+
down(): Promise<void>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=20260429T112543_catalog_product_attachments.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"20260429T112543_catalog_product_attachments.d.ts","sourceRoot":"","sources":["../../src/migrations/20260429T112543_catalog_product_attachments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD;;;;;;;;;;;GAWG;AACH,qBAAa,iDAAkD,SAAQ,SAAS;IAC/D,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC;IA2DnB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAIrC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { Migration } from '@mikro-orm/migrations';
|
|
2
|
+
/**
|
|
3
|
+
* Catalog 002 — Attachments (T070, US3, data-model.md §2.5, §2.6).
|
|
4
|
+
*
|
|
5
|
+
* Two tables:
|
|
6
|
+
* - attachment_types: global dictionary (code, multilingual name,
|
|
7
|
+
* position). Seeded with 4 standard types: certificate, tech_spec,
|
|
8
|
+
* product_card, pdf. Idempotent ON CONFLICT (code) DO NOTHING.
|
|
9
|
+
* - product_attachments: cross-product wrapper around an Asset
|
|
10
|
+
* (research.md R-9). Composite of (product_id, asset_id,
|
|
11
|
+
* attachment_type_id, name, description, position). Asset is FK
|
|
12
|
+
* RESTRICT (Asset survives attachment unlink).
|
|
13
|
+
*/
|
|
14
|
+
export class Migration20260429T112543CatalogProductAttachments extends Migration {
|
|
15
|
+
async up() {
|
|
16
|
+
// -- attachment_types -----------------------------------------------------
|
|
17
|
+
this.addSql(`
|
|
18
|
+
create table "attachment_types" (
|
|
19
|
+
"id" uuid not null,
|
|
20
|
+
"code" varchar(64) not null,
|
|
21
|
+
"name" jsonb not null,
|
|
22
|
+
"position" int not null default 0,
|
|
23
|
+
"created_at" timestamptz not null,
|
|
24
|
+
"updated_at" timestamptz not null,
|
|
25
|
+
constraint "attachment_types_pkey" primary key ("id"),
|
|
26
|
+
constraint "uniq_attachment_types_code" unique ("code")
|
|
27
|
+
);
|
|
28
|
+
`);
|
|
29
|
+
// Seed 4 standard types with deterministic UUIDs (v4-shaped) so seeds
|
|
30
|
+
// and tests can reference them stably.
|
|
31
|
+
this.addSql(`
|
|
32
|
+
insert into "attachment_types" ("id", "code", "name", "position", "created_at", "updated_at")
|
|
33
|
+
values
|
|
34
|
+
('a77ac001-0000-4000-8000-000000000001', 'certificate',
|
|
35
|
+
'{"en-US":"Certificate","pl-PL":"Certyfikat"}'::jsonb, 0, now(), now()),
|
|
36
|
+
('a77ac001-0000-4000-8000-000000000002', 'tech_spec',
|
|
37
|
+
'{"en-US":"Technical specification","pl-PL":"Specyfikacja techniczna"}'::jsonb, 1, now(), now()),
|
|
38
|
+
('a77ac001-0000-4000-8000-000000000003', 'product_card',
|
|
39
|
+
'{"en-US":"Product card","pl-PL":"Karta produktu"}'::jsonb, 2, now(), now()),
|
|
40
|
+
('a77ac001-0000-4000-8000-000000000004', 'pdf',
|
|
41
|
+
'{"en-US":"PDF","pl-PL":"PDF"}'::jsonb, 3, now(), now())
|
|
42
|
+
on conflict ("code") do nothing;
|
|
43
|
+
`);
|
|
44
|
+
// -- product_attachments --------------------------------------------------
|
|
45
|
+
this.addSql(`
|
|
46
|
+
create table "product_attachments" (
|
|
47
|
+
"id" uuid not null,
|
|
48
|
+
"product_id" uuid not null,
|
|
49
|
+
"asset_id" uuid not null,
|
|
50
|
+
"attachment_type_id" uuid not null,
|
|
51
|
+
"name" varchar(160) not null,
|
|
52
|
+
"description" text null,
|
|
53
|
+
"position" int not null default 0,
|
|
54
|
+
"created_at" timestamptz not null,
|
|
55
|
+
"updated_at" timestamptz not null,
|
|
56
|
+
constraint "product_attachments_pkey" primary key ("id"),
|
|
57
|
+
constraint "fk_product_attachments_product"
|
|
58
|
+
foreign key ("product_id") references "products" ("id") on delete cascade,
|
|
59
|
+
constraint "fk_product_attachments_asset"
|
|
60
|
+
foreign key ("asset_id") references "assets" ("id") on delete restrict,
|
|
61
|
+
constraint "fk_product_attachments_type"
|
|
62
|
+
foreign key ("attachment_type_id") references "attachment_types" ("id") on delete restrict
|
|
63
|
+
);
|
|
64
|
+
`);
|
|
65
|
+
this.addSql('create index "product_attachments_product_id_index" on "product_attachments" ("product_id");');
|
|
66
|
+
this.addSql('create index "product_attachments_attachment_type_id_index" on "product_attachments" ("attachment_type_id");');
|
|
67
|
+
}
|
|
68
|
+
async down() {
|
|
69
|
+
this.addSql('drop table if exists "product_attachments" cascade;');
|
|
70
|
+
this.addSql('drop table if exists "attachment_types" cascade;');
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=20260429T112543_catalog_product_attachments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"20260429T112543_catalog_product_attachments.js","sourceRoot":"","sources":["../../src/migrations/20260429T112543_catalog_product_attachments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,iDAAkD,SAAQ,SAAS;IACrE,KAAK,CAAC,EAAE;QACf,4EAA4E;QAC5E,IAAI,CAAC,MAAM,CAAC;;;;;;;;;;;KAWX,CAAC,CAAC;QACH,sEAAsE;QACtE,uCAAuC;QACvC,IAAI,CAAC,MAAM,CAAC;;;;;;;;;;;;KAYX,CAAC,CAAC;QAEH,4EAA4E;QAC5E,IAAI,CAAC,MAAM,CAAC;;;;;;;;;;;;;;;;;;;KAmBX,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CACT,8FAA8F,CAC/F,CAAC;QACF,IAAI,CAAC,MAAM,CACT,8GAA8G,CAC/G,CAAC;IACJ,CAAC;IAEQ,KAAK,CAAC,IAAI;QACjB,IAAI,CAAC,MAAM,CAAC,qDAAqD,CAAC,CAAC;QACnE,IAAI,CAAC,MAAM,CAAC,kDAAkD,CAAC,CAAC;IAClE,CAAC;CACF"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Migration } from '@mikro-orm/migrations';
|
|
2
|
+
/**
|
|
3
|
+
* Catalog 002 — Product Links (T101, US4, data-model.md §2.7).
|
|
4
|
+
*
|
|
5
|
+
* Single table `product_links` for related / up-sell / cross-sell pairings:
|
|
6
|
+
* - composite PK on `id`
|
|
7
|
+
* - UNIQUE (source_product_id, target_product_id, kind) — same pair can
|
|
8
|
+
* appear once per kind, never twice for the same kind
|
|
9
|
+
* - CHECK source_product_id <> target_product_id — DB-level guard against
|
|
10
|
+
* self-links so even raw SQL inserts are blocked (defence-in-depth on
|
|
11
|
+
* top of the service-layer SELF_LINK_NOT_ALLOWED 400 in T104)
|
|
12
|
+
* - CHECK kind IN ('related','up_sell','cross_sell')
|
|
13
|
+
* - position int default 0 — admin-curated ordering per (source, kind)
|
|
14
|
+
* - both FKs cascade on product delete (link rows have no value when
|
|
15
|
+
* either side is gone)
|
|
16
|
+
*/
|
|
17
|
+
export declare class Migration20260429T123726CatalogProductLinks extends Migration {
|
|
18
|
+
up(): Promise<void>;
|
|
19
|
+
down(): Promise<void>;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=20260429T123726_catalog_product_links.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"20260429T123726_catalog_product_links.d.ts","sourceRoot":"","sources":["../../src/migrations/20260429T123726_catalog_product_links.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD;;;;;;;;;;;;;;GAcG;AACH,qBAAa,2CAA4C,SAAQ,SAAS;IACzD,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC;IA+BnB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAGrC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { Migration } from '@mikro-orm/migrations';
|
|
2
|
+
/**
|
|
3
|
+
* Catalog 002 — Product Links (T101, US4, data-model.md §2.7).
|
|
4
|
+
*
|
|
5
|
+
* Single table `product_links` for related / up-sell / cross-sell pairings:
|
|
6
|
+
* - composite PK on `id`
|
|
7
|
+
* - UNIQUE (source_product_id, target_product_id, kind) — same pair can
|
|
8
|
+
* appear once per kind, never twice for the same kind
|
|
9
|
+
* - CHECK source_product_id <> target_product_id — DB-level guard against
|
|
10
|
+
* self-links so even raw SQL inserts are blocked (defence-in-depth on
|
|
11
|
+
* top of the service-layer SELF_LINK_NOT_ALLOWED 400 in T104)
|
|
12
|
+
* - CHECK kind IN ('related','up_sell','cross_sell')
|
|
13
|
+
* - position int default 0 — admin-curated ordering per (source, kind)
|
|
14
|
+
* - both FKs cascade on product delete (link rows have no value when
|
|
15
|
+
* either side is gone)
|
|
16
|
+
*/
|
|
17
|
+
export class Migration20260429T123726CatalogProductLinks extends Migration {
|
|
18
|
+
async up() {
|
|
19
|
+
this.addSql(`
|
|
20
|
+
create table "product_links" (
|
|
21
|
+
"id" uuid not null,
|
|
22
|
+
"source_product_id" uuid not null,
|
|
23
|
+
"target_product_id" uuid not null,
|
|
24
|
+
"kind" varchar(16) not null,
|
|
25
|
+
"position" int not null default 0,
|
|
26
|
+
"created_at" timestamptz not null,
|
|
27
|
+
"updated_at" timestamptz not null,
|
|
28
|
+
constraint "product_links_pkey" primary key ("id"),
|
|
29
|
+
constraint "uniq_product_links_source_target_kind"
|
|
30
|
+
unique ("source_product_id", "target_product_id", "kind"),
|
|
31
|
+
constraint "chk_product_links_no_self"
|
|
32
|
+
check ("source_product_id" <> "target_product_id"),
|
|
33
|
+
constraint "chk_product_links_kind"
|
|
34
|
+
check ("kind" in ('related', 'up_sell', 'cross_sell')),
|
|
35
|
+
constraint "fk_product_links_source"
|
|
36
|
+
foreign key ("source_product_id") references "products" ("id") on delete cascade,
|
|
37
|
+
constraint "fk_product_links_target"
|
|
38
|
+
foreign key ("target_product_id") references "products" ("id") on delete cascade
|
|
39
|
+
);
|
|
40
|
+
`);
|
|
41
|
+
this.addSql('create index "product_links_source_kind_index" on "product_links" ("source_product_id", "kind");');
|
|
42
|
+
this.addSql('create index "product_links_target_index" on "product_links" ("target_product_id");');
|
|
43
|
+
}
|
|
44
|
+
async down() {
|
|
45
|
+
this.addSql('drop table if exists "product_links" cascade;');
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=20260429T123726_catalog_product_links.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"20260429T123726_catalog_product_links.js","sourceRoot":"","sources":["../../src/migrations/20260429T123726_catalog_product_links.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,2CAA4C,SAAQ,SAAS;IAC/D,KAAK,CAAC,EAAE;QACf,IAAI,CAAC,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;KAqBX,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CACT,kGAAkG,CACnG,CAAC;QACF,IAAI,CAAC,MAAM,CACT,qFAAqF,CACtF,CAAC;IACJ,CAAC;IAEQ,KAAK,CAAC,IAAI;QACjB,IAAI,CAAC,MAAM,CAAC,+CAA+C,CAAC,CAAC;IAC/D,CAAC;CACF"}
|