@tailor-platform/erp-kit 0.2.1 → 0.2.2
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/CHANGELOG.md +6 -0
- package/README.md +1 -23
- package/dist/cli.mjs +1613 -0
- package/package.json +14 -13
- package/schemas/app-compose/story.yml +12 -0
- package/schemas/module/command.yml +9 -0
- package/schemas/module/module.yml +4 -0
- package/schemas/module/query.yml +9 -0
- package/skills/erp-kit-app-1-requirements/SKILL.md +4 -4
- package/skills/erp-kit-app-2-requirements-review/SKILL.md +102 -0
- package/skills/erp-kit-app-2-requirements-review/references/best-practices-check.md +66 -0
- package/skills/erp-kit-app-2-requirements-review/references/boundary-consistency-check.md +69 -0
- package/skills/erp-kit-app-2-requirements-review/references/requirements-report-format.md +25 -0
- package/skills/erp-kit-app-3-plan/SKILL.md +157 -0
- package/skills/erp-kit-app-3-plan/references/resolver-extraction.md +107 -0
- package/skills/erp-kit-app-3-plan/references/screen-extraction.md +74 -0
- package/skills/erp-kit-app-3-plan/references/story-extraction.md +86 -0
- package/skills/erp-kit-app-4-plan-review/SKILL.md +177 -0
- package/skills/erp-kit-app-4-plan-review/references/actor-flow-parity.md +73 -0
- package/skills/erp-kit-app-4-plan-review/references/business-flow-story-parity.md +86 -0
- package/skills/erp-kit-app-4-plan-review/references/orphan-detection.md +69 -0
- package/skills/erp-kit-app-4-plan-review/references/parity-report-format.md +52 -0
- package/skills/erp-kit-app-4-plan-review/references/story-resolver-parity.md +83 -0
- package/skills/erp-kit-app-4-plan-review/references/story-screen-parity.md +73 -0
- package/skills/{erp-kit-app-5-implementation → erp-kit-app-5-impl-backend}/SKILL.md +24 -68
- package/skills/erp-kit-app-5-impl-backend/references/app-config.md +38 -0
- package/skills/erp-kit-app-5-impl-backend/references/module-wiring.md +48 -0
- package/skills/erp-kit-app-5-impl-backend/references/resolver-patterns.md +68 -0
- package/skills/erp-kit-app-6-impl-frontend/SKILL.md +74 -0
- package/skills/{erp-kit-app-5-implementation/references/frontend.md → erp-kit-app-6-impl-frontend/references/pages.md} +8 -90
- package/skills/erp-kit-app-7-impl-review/SKILL.md +176 -0
- package/skills/erp-kit-app-7-impl-review/references/impl-parity-report-format.md +52 -0
- package/skills/erp-kit-app-7-impl-review/references/module-wiring-parity.md +84 -0
- package/skills/erp-kit-app-7-impl-review/references/resolver-doc-code-parity.md +86 -0
- package/skills/erp-kit-app-7-impl-review/references/screen-doc-code-parity.md +86 -0
- package/skills/erp-kit-module-1-requirements/SKILL.md +126 -0
- package/skills/erp-kit-module-1-requirements/references/boundary-analysis.md +51 -0
- package/skills/erp-kit-module-1-requirements/references/erp-research.md +57 -0
- package/skills/erp-kit-module-1-requirements/references/feature-doc.md +61 -0
- package/skills/erp-kit-module-2-requirements-review/SKILL.md +112 -0
- package/skills/erp-kit-module-2-requirements-review/references/best-practices-check.md +79 -0
- package/skills/erp-kit-module-2-requirements-review/references/boundary-consistency-check.md +70 -0
- package/skills/erp-kit-module-2-requirements-review/references/requirements-report-format.md +25 -0
- package/skills/erp-kit-module-3-plan/SKILL.md +107 -0
- package/skills/erp-kit-module-3-plan/references/command-extraction.md +87 -0
- package/skills/erp-kit-module-3-plan/references/model-extraction.md +72 -0
- package/skills/erp-kit-module-3-plan/references/query-extraction.md +59 -0
- package/skills/erp-kit-module-4-plan-review/SKILL.md +158 -0
- package/skills/erp-kit-module-4-plan-review/references/command-model-consistency.md +46 -0
- package/skills/erp-kit-module-4-plan-review/references/feature-command-parity.md +97 -0
- package/skills/erp-kit-module-4-plan-review/references/feature-model-parity.md +47 -0
- package/skills/erp-kit-module-4-plan-review/references/feature-query-parity.md +70 -0
- package/skills/erp-kit-module-4-plan-review/references/parity-report-format.md +52 -0
- package/skills/erp-kit-module-5-impl/SKILL.md +118 -0
- package/skills/erp-kit-module-5-impl/references/command-impl.md +68 -0
- package/skills/erp-kit-module-5-impl/references/exports.md +10 -0
- package/skills/erp-kit-module-5-impl/references/model-impl.md +45 -0
- package/skills/erp-kit-module-5-impl/references/query-impl.md +53 -0
- package/skills/erp-kit-module-6-impl-review/SKILL.md +187 -0
- package/skills/erp-kit-module-6-impl-review/references/command-doc-code-parity.md +92 -0
- package/skills/erp-kit-module-6-impl-review/references/command-doc-test-parity.md +93 -0
- package/skills/erp-kit-module-6-impl-review/references/error-implementation-parity.md +95 -0
- package/skills/{erp-kit-module-5-impl-review → erp-kit-module-6-impl-review}/references/errors.md +1 -1
- package/skills/erp-kit-module-6-impl-review/references/impl-parity-report-format.md +52 -0
- package/skills/erp-kit-module-6-impl-review/references/model-doc-code-parity.md +80 -0
- package/skills/erp-kit-module-shared/SKILL.md +1 -1
- package/skills/erp-kit-module-shared/references/commands.md +1 -1
- package/skills/erp-kit-module-shared/references/errors.md +12 -9
- package/skills/erp-kit-module-shared/references/queries.md +109 -36
- package/skills/erp-kit-module-shared/references/testing.md +10 -0
- package/skills/erp-kit-update/SKILL.md +2 -2
- package/src/app.ts +1 -1
- package/src/commands/check.ts +1 -1
- package/src/commands/index.ts +16 -5
- package/src/commands/init.test.ts +22 -69
- package/src/commands/init.ts +28 -115
- package/src/commands/lib/distribute.test.ts +126 -0
- package/src/commands/lib/distribute.ts +129 -0
- package/src/commands/parse-doc-test-cases.ts +55 -0
- package/src/commands/scaffold.test.ts +74 -33
- package/src/commands/scaffold.ts +54 -18
- package/src/commands/sync-check.test.ts +173 -0
- package/src/commands/sync-check.ts +103 -2
- package/src/commands/update.test.ts +87 -0
- package/src/commands/update.ts +41 -0
- package/src/generator/generate-code.test.ts +23 -12
- package/src/generator/generate-code.ts +22 -16
- package/src/integration.test.ts +1 -1
- package/src/module.ts +14 -97
- package/src/modules/item-management/README.md +8 -0
- package/src/modules/item-management/command/activateItem.generated.ts +1 -1
- package/src/modules/item-management/command/activateItem.test.ts +12 -18
- package/src/modules/item-management/command/activateItem.ts +9 -5
- package/src/modules/item-management/command/assignItemToTaxonomy.generated.ts +1 -1
- package/src/modules/item-management/command/assignItemToTaxonomy.test.ts +10 -24
- package/src/modules/item-management/command/assignItemToTaxonomy.ts +19 -16
- package/src/modules/item-management/command/createItem.generated.ts +1 -1
- package/src/modules/item-management/command/createItem.test.ts +11 -11
- package/src/modules/item-management/command/createItem.ts +16 -7
- package/src/modules/item-management/command/createTaxonomyNode.generated.ts +1 -1
- package/src/modules/item-management/command/createTaxonomyNode.test.ts +9 -9
- package/src/modules/item-management/command/createTaxonomyNode.ts +33 -14
- package/src/modules/item-management/command/deactivateItem.generated.ts +1 -1
- package/src/modules/item-management/command/deactivateItem.test.ts +12 -18
- package/src/modules/item-management/command/deactivateItem.ts +9 -5
- package/src/modules/item-management/command/deleteItem.generated.ts +1 -1
- package/src/modules/item-management/command/deleteItem.test.ts +10 -16
- package/src/modules/item-management/command/deleteItem.ts +9 -5
- package/src/modules/item-management/command/deleteTaxonomyNode.generated.ts +1 -1
- package/src/modules/item-management/command/deleteTaxonomyNode.test.ts +10 -16
- package/src/modules/item-management/command/deleteTaxonomyNode.ts +22 -12
- package/src/modules/item-management/command/moveTaxonomyNode.generated.ts +1 -1
- package/src/modules/item-management/command/moveTaxonomyNode.test.ts +10 -10
- package/src/modules/item-management/command/moveTaxonomyNode.ts +63 -19
- package/src/modules/item-management/command/reactivateItem.generated.ts +1 -1
- package/src/modules/item-management/command/reactivateItem.test.ts +12 -18
- package/src/modules/item-management/command/reactivateItem.ts +9 -5
- package/src/modules/item-management/command/removeItemFromTaxonomy.generated.ts +1 -1
- package/src/modules/item-management/command/removeItemFromTaxonomy.test.ts +9 -16
- package/src/modules/item-management/command/removeItemFromTaxonomy.ts +11 -6
- package/src/modules/item-management/command/updateItem.generated.ts +1 -1
- package/src/modules/item-management/command/updateItem.test.ts +16 -16
- package/src/modules/item-management/command/updateItem.ts +11 -6
- package/src/modules/item-management/command/updateTaxonomyNode.generated.ts +1 -1
- package/src/modules/item-management/command/updateTaxonomyNode.test.ts +14 -20
- package/src/modules/item-management/command/updateTaxonomyNode.ts +9 -6
- package/src/modules/item-management/docs/commands/ActivateItem.md +8 -0
- package/src/modules/item-management/docs/commands/AssignItemToTaxonomy.md +7 -0
- package/src/modules/item-management/docs/commands/CreateItem.md +10 -0
- package/src/modules/item-management/docs/commands/CreateTaxonomyNode.md +9 -0
- package/src/modules/item-management/docs/commands/DeactivateItem.md +8 -0
- package/src/modules/item-management/docs/commands/DeleteItem.md +7 -0
- package/src/modules/item-management/docs/commands/DeleteTaxonomyNode.md +7 -0
- package/src/modules/item-management/docs/commands/MoveTaxonomyNode.md +10 -0
- package/src/modules/item-management/docs/commands/ReactivateItem.md +8 -0
- package/src/modules/item-management/docs/commands/RemoveItemFromTaxonomy.md +5 -0
- package/src/modules/item-management/docs/commands/UpdateItem.md +15 -0
- package/src/modules/item-management/docs/commands/UpdateTaxonomyNode.md +9 -0
- package/src/modules/item-management/docs/queries/CalculateNodeDepth.md +8 -0
- package/src/modules/item-management/docs/queries/CalculateSubtreeDepth.md +7 -0
- package/src/modules/item-management/docs/queries/DetectCircularReference.md +9 -0
- package/src/modules/item-management/docs/queries/GetItem.md +9 -0
- package/src/modules/item-management/docs/queries/GetItemTaxonomyAssignment.md +5 -0
- package/src/modules/item-management/docs/queries/GetTaxonomyNode.md +7 -0
- package/src/modules/item-management/docs/queries/GetTaxonomyNodeAssignments.md +5 -0
- package/src/modules/item-management/docs/queries/GetTaxonomyNodeChildren.md +6 -0
- package/src/modules/item-management/index.ts +0 -51
- package/src/modules/item-management/lib/errors.generated.ts +24 -24
- package/src/modules/item-management/lib/permissions.generated.ts +1 -1
- package/src/modules/item-management/lib/types.ts +1 -1
- package/src/modules/item-management/module.ts +1 -1
- package/src/modules/item-management/query/calculateNodeDepth.generated.ts +1 -1
- package/src/modules/item-management/query/calculateNodeDepth.test.ts +21 -6
- package/src/modules/item-management/query/calculateNodeDepth.ts +2 -2
- package/src/modules/item-management/query/calculateSubtreeDepth.generated.ts +1 -1
- package/src/modules/item-management/query/calculateSubtreeDepth.test.ts +17 -5
- package/src/modules/item-management/query/calculateSubtreeDepth.ts +2 -2
- package/src/modules/item-management/query/detectCircularReference.generated.ts +1 -1
- package/src/modules/item-management/query/detectCircularReference.test.ts +25 -7
- package/src/modules/item-management/query/detectCircularReference.ts +4 -4
- package/src/modules/item-management/query/getItem.generated.ts +1 -1
- package/src/modules/item-management/query/getItem.test.ts +25 -7
- package/src/modules/item-management/query/getItem.ts +2 -2
- package/src/modules/item-management/query/getItemTaxonomyAssignment.generated.ts +1 -1
- package/src/modules/item-management/query/getItemTaxonomyAssignment.test.ts +9 -3
- package/src/modules/item-management/query/getItemTaxonomyAssignment.ts +2 -2
- package/src/modules/item-management/query/getTaxonomyNode.generated.ts +1 -1
- package/src/modules/item-management/query/getTaxonomyNode.test.ts +17 -5
- package/src/modules/item-management/query/getTaxonomyNode.ts +2 -2
- package/src/modules/item-management/query/getTaxonomyNodeAssignments.generated.ts +1 -1
- package/src/modules/item-management/query/getTaxonomyNodeAssignments.test.ts +9 -3
- package/src/modules/item-management/query/getTaxonomyNodeAssignments.ts +2 -2
- package/src/modules/item-management/query/getTaxonomyNodeChildren.generated.ts +1 -1
- package/src/modules/item-management/query/getTaxonomyNodeChildren.test.ts +13 -4
- package/src/modules/item-management/query/getTaxonomyNodeChildren.ts +2 -2
- package/src/modules/item-management/tailor.config.ts +6 -4
- package/src/modules/item-management/tailor.d.ts +13 -0
- package/src/modules/primitives/README.md +8 -0
- package/src/modules/primitives/command/activateCategory.generated.ts +1 -1
- package/src/modules/primitives/command/activateCategory.test.ts +8 -18
- package/src/modules/primitives/command/activateCategory.ts +9 -5
- package/src/modules/primitives/command/activateCurrency.generated.ts +1 -1
- package/src/modules/primitives/command/activateCurrency.test.ts +8 -18
- package/src/modules/primitives/command/activateCurrency.ts +9 -5
- package/src/modules/primitives/command/activateUnit.generated.ts +1 -1
- package/src/modules/primitives/command/activateUnit.test.ts +8 -15
- package/src/modules/primitives/command/activateUnit.ts +9 -5
- package/src/modules/primitives/command/createCategory.generated.ts +1 -1
- package/src/modules/primitives/command/createCategory.test.ts +29 -44
- package/src/modules/primitives/command/createCategory.ts +9 -5
- package/src/modules/primitives/command/createCurrency.generated.ts +1 -1
- package/src/modules/primitives/command/createCurrency.test.ts +53 -78
- package/src/modules/primitives/command/createCurrency.ts +9 -6
- package/src/modules/primitives/command/createExchangeRate.generated.ts +1 -1
- package/src/modules/primitives/command/createExchangeRate.test.ts +59 -97
- package/src/modules/primitives/command/createExchangeRate.ts +13 -7
- package/src/modules/primitives/command/createUnit.generated.ts +1 -1
- package/src/modules/primitives/command/createUnit.test.ts +59 -90
- package/src/modules/primitives/command/createUnit.ts +9 -6
- package/src/modules/primitives/command/deactivateCategory.generated.ts +1 -1
- package/src/modules/primitives/command/deactivateCategory.test.ts +15 -33
- package/src/modules/primitives/command/deactivateCategory.ts +9 -5
- package/src/modules/primitives/command/deactivateCurrency.generated.ts +1 -1
- package/src/modules/primitives/command/deactivateCurrency.test.ts +12 -26
- package/src/modules/primitives/command/deactivateCurrency.ts +9 -5
- package/src/modules/primitives/command/deactivateUnit.generated.ts +1 -1
- package/src/modules/primitives/command/deactivateUnit.test.ts +15 -30
- package/src/modules/primitives/command/deactivateUnit.ts +14 -7
- package/src/modules/primitives/command/setBaseCurrency.generated.ts +1 -1
- package/src/modules/primitives/command/setBaseCurrency.test.ts +18 -40
- package/src/modules/primitives/command/setBaseCurrency.ts +15 -7
- package/src/modules/primitives/command/setReferenceUnit.generated.ts +1 -1
- package/src/modules/primitives/command/setReferenceUnit.test.ts +22 -44
- package/src/modules/primitives/command/setReferenceUnit.ts +21 -9
- package/src/modules/primitives/docs/commands/ActivateCategory.md +6 -0
- package/src/modules/primitives/docs/commands/ActivateCurrency.md +6 -0
- package/src/modules/primitives/docs/commands/ActivateUnit.md +6 -0
- package/src/modules/primitives/docs/commands/CreateCategory.md +6 -0
- package/src/modules/primitives/docs/commands/CreateCurrency.md +10 -0
- package/src/modules/primitives/docs/commands/CreateExchangeRate.md +11 -0
- package/src/modules/primitives/docs/commands/CreateUnit.md +10 -0
- package/src/modules/primitives/docs/commands/DeactivateCategory.md +7 -0
- package/src/modules/primitives/docs/commands/DeactivateCurrency.md +7 -0
- package/src/modules/primitives/docs/commands/DeactivateUnit.md +7 -0
- package/src/modules/primitives/docs/commands/SetBaseCurrency.md +7 -0
- package/src/modules/primitives/docs/commands/SetReferenceUnit.md +7 -0
- package/src/modules/primitives/docs/queries/ConvertAmount.md +14 -0
- package/src/modules/primitives/docs/queries/ConvertQuantity.md +13 -0
- package/src/modules/primitives/docs/queries/GetBaseCurrency.md +5 -0
- package/src/modules/primitives/docs/queries/GetCurrency.md +7 -0
- package/src/modules/primitives/docs/queries/GetUnit.md +7 -0
- package/src/modules/primitives/docs/queries/GetUoMCategory.md +7 -0
- package/src/modules/primitives/docs/queries/ListUnitsByCategory.md +15 -5
- package/src/modules/primitives/index.ts +0 -49
- package/src/modules/primitives/lib/errors.generated.ts +23 -23
- package/src/modules/primitives/lib/permissions.generated.ts +1 -1
- package/src/modules/primitives/lib/types.ts +1 -1
- package/src/modules/primitives/module.ts +1 -1
- package/src/modules/primitives/query/convertAmount.generated.ts +1 -1
- package/src/modules/primitives/query/convertAmount.test.ts +110 -77
- package/src/modules/primitives/query/convertAmount.ts +61 -47
- package/src/modules/primitives/query/convertQuantity.generated.ts +1 -1
- package/src/modules/primitives/query/convertQuantity.test.ts +99 -69
- package/src/modules/primitives/query/convertQuantity.ts +12 -10
- package/src/modules/primitives/query/getBaseCurrency.generated.ts +1 -1
- package/src/modules/primitives/query/getBaseCurrency.test.ts +10 -4
- package/src/modules/primitives/query/getBaseCurrency.ts +2 -2
- package/src/modules/primitives/query/getCurrency.generated.ts +1 -1
- package/src/modules/primitives/query/getCurrency.test.ts +17 -5
- package/src/modules/primitives/query/getCurrency.ts +2 -2
- package/src/modules/primitives/query/getUnit.generated.ts +1 -1
- package/src/modules/primitives/query/getUnit.test.ts +17 -5
- package/src/modules/primitives/query/getUnit.ts +2 -2
- package/src/modules/primitives/query/getUoMCategory.generated.ts +1 -1
- package/src/modules/primitives/query/getUoMCategory.test.ts +17 -5
- package/src/modules/primitives/query/getUoMCategory.ts +2 -2
- package/src/modules/primitives/query/listUnitsByCategory.generated.ts +1 -1
- package/src/modules/primitives/query/listUnitsByCategory.test.ts +80 -0
- package/src/modules/primitives/query/listUnitsByCategory.ts +19 -3
- package/src/modules/primitives/tailor.config.ts +6 -4
- package/src/modules/primitives/tailor.d.ts +13 -0
- package/src/modules/product-management/README.md +52 -0
- package/src/modules/product-management/command/activateProduct.generated.ts +6 -0
- package/src/modules/product-management/command/activateProduct.test.ts +40 -0
- package/src/modules/product-management/command/activateProduct.ts +42 -0
- package/src/modules/product-management/command/assignProductToCategory.generated.ts +6 -0
- package/src/modules/product-management/command/assignProductToCategory.test.ts +90 -0
- package/src/modules/product-management/command/assignProductToCategory.ts +62 -0
- package/src/modules/product-management/command/createProduct.generated.ts +6 -0
- package/src/modules/product-management/command/createProduct.test.ts +149 -0
- package/src/modules/product-management/command/createProduct.ts +73 -0
- package/src/modules/product-management/command/createProductAttribute.generated.ts +6 -0
- package/src/modules/product-management/command/createProductAttribute.test.ts +70 -0
- package/src/modules/product-management/command/createProductAttribute.ts +53 -0
- package/src/modules/product-management/command/createProductAttributeValue.generated.ts +6 -0
- package/src/modules/product-management/command/createProductAttributeValue.test.ts +68 -0
- package/src/modules/product-management/command/createProductAttributeValue.ts +63 -0
- package/src/modules/product-management/command/createProductCategory.generated.ts +6 -0
- package/src/modules/product-management/command/createProductCategory.test.ts +135 -0
- package/src/modules/product-management/command/createProductCategory.ts +82 -0
- package/src/modules/product-management/command/deactivateProduct.generated.ts +6 -0
- package/src/modules/product-management/command/deactivateProduct.test.ts +40 -0
- package/src/modules/product-management/command/deactivateProduct.ts +42 -0
- package/src/modules/product-management/command/deleteProduct.generated.ts +6 -0
- package/src/modules/product-management/command/deleteProduct.test.ts +42 -0
- package/src/modules/product-management/command/deleteProduct.ts +42 -0
- package/src/modules/product-management/command/deleteProductAttribute.generated.ts +6 -0
- package/src/modules/product-management/command/deleteProductAttribute.test.ts +49 -0
- package/src/modules/product-management/command/deleteProductAttribute.ts +45 -0
- package/src/modules/product-management/command/deleteProductAttributeValue.generated.ts +6 -0
- package/src/modules/product-management/command/deleteProductAttributeValue.test.ts +71 -0
- package/src/modules/product-management/command/deleteProductAttributeValue.ts +68 -0
- package/src/modules/product-management/command/deleteProductCategory.generated.ts +6 -0
- package/src/modules/product-management/command/deleteProductCategory.test.ts +74 -0
- package/src/modules/product-management/command/deleteProductCategory.ts +53 -0
- package/src/modules/product-management/command/generateVariants.generated.ts +6 -0
- package/src/modules/product-management/command/generateVariants.test.ts +365 -0
- package/src/modules/product-management/command/generateVariants.ts +168 -0
- package/src/modules/product-management/command/moveProductCategory.generated.ts +6 -0
- package/src/modules/product-management/command/moveProductCategory.test.ts +170 -0
- package/src/modules/product-management/command/moveProductCategory.ts +124 -0
- package/src/modules/product-management/command/reactivateProduct.generated.ts +6 -0
- package/src/modules/product-management/command/reactivateProduct.test.ts +40 -0
- package/src/modules/product-management/command/reactivateProduct.ts +42 -0
- package/src/modules/product-management/command/removeProductFromCategory.generated.ts +6 -0
- package/src/modules/product-management/command/removeProductFromCategory.test.ts +42 -0
- package/src/modules/product-management/command/removeProductFromCategory.ts +32 -0
- package/src/modules/product-management/command/setProductAttributeAssignment.generated.ts +6 -0
- package/src/modules/product-management/command/setProductAttributeAssignment.test.ts +206 -0
- package/src/modules/product-management/command/setProductAttributeAssignment.ts +102 -0
- package/src/modules/product-management/command/updateProduct.generated.ts +6 -0
- package/src/modules/product-management/command/updateProduct.test.ts +168 -0
- package/src/modules/product-management/command/updateProduct.ts +95 -0
- package/src/modules/product-management/command/updateProductAttribute.generated.ts +6 -0
- package/src/modules/product-management/command/updateProductAttribute.test.ts +101 -0
- package/src/modules/product-management/command/updateProductAttribute.ts +68 -0
- package/src/modules/product-management/command/updateProductAttributeValue.generated.ts +6 -0
- package/src/modules/product-management/command/updateProductAttributeValue.test.ts +80 -0
- package/src/modules/product-management/command/updateProductAttributeValue.ts +58 -0
- package/src/modules/product-management/command/updateProductCategory.generated.ts +6 -0
- package/src/modules/product-management/command/updateProductCategory.test.ts +80 -0
- package/src/modules/product-management/command/updateProductCategory.ts +66 -0
- package/src/modules/product-management/db/product.ts +47 -0
- package/src/modules/product-management/db/productAttribute.ts +26 -0
- package/src/modules/product-management/db/productAttributeAssignment.ts +58 -0
- package/src/modules/product-management/db/productAttributeValue.ts +39 -0
- package/src/modules/product-management/db/productCategory.ts +34 -0
- package/src/modules/product-management/db/productCategoryAssignment.ts +49 -0
- package/src/modules/product-management/db/productVariant.ts +52 -0
- package/src/modules/product-management/docs/commands/ActivateProduct.md +39 -0
- package/src/modules/product-management/docs/commands/AssignProductToCategory.md +43 -0
- package/src/modules/product-management/docs/commands/CreateProduct.md +48 -0
- package/src/modules/product-management/docs/commands/CreateProductAttribute.md +39 -0
- package/src/modules/product-management/docs/commands/CreateProductAttributeValue.md +42 -0
- package/src/modules/product-management/docs/commands/CreateProductCategory.md +54 -0
- package/src/modules/product-management/docs/commands/DeactivateProduct.md +39 -0
- package/src/modules/product-management/docs/commands/DeleteProduct.md +42 -0
- package/src/modules/product-management/docs/commands/DeleteProductAttribute.md +39 -0
- package/src/modules/product-management/docs/commands/DeleteProductAttributeValue.md +42 -0
- package/src/modules/product-management/docs/commands/DeleteProductCategory.md +43 -0
- package/src/modules/product-management/docs/commands/GenerateVariants.md +68 -0
- package/src/modules/product-management/docs/commands/MoveProductCategory.md +54 -0
- package/src/modules/product-management/docs/commands/ReactivateProduct.md +38 -0
- package/src/modules/product-management/docs/commands/RemoveProductFromCategory.md +34 -0
- package/src/modules/product-management/docs/commands/SetProductAttributeAssignment.md +62 -0
- package/src/modules/product-management/docs/commands/UpdateProduct.md +61 -0
- package/src/modules/product-management/docs/commands/UpdateProductAttribute.md +46 -0
- package/src/modules/product-management/docs/commands/UpdateProductAttributeValue.md +47 -0
- package/src/modules/product-management/docs/commands/UpdateProductCategory.md +46 -0
- package/src/modules/product-management/docs/features/attribute-management.md +48 -0
- package/src/modules/product-management/docs/features/product-category.md +71 -0
- package/src/modules/product-management/docs/features/product-lifecycle.md +66 -0
- package/src/modules/product-management/docs/features/variant-generation.md +77 -0
- package/src/modules/product-management/docs/models/Product.md +58 -0
- package/src/modules/product-management/docs/models/ProductAttribute.md +37 -0
- package/src/modules/product-management/docs/models/ProductAttributeAssignment.md +41 -0
- package/src/modules/product-management/docs/models/ProductAttributeValue.md +40 -0
- package/src/modules/product-management/docs/models/ProductCategory.md +46 -0
- package/src/modules/product-management/docs/models/ProductCategoryAssignment.md +37 -0
- package/src/modules/product-management/docs/models/ProductVariant.md +41 -0
- package/src/modules/product-management/docs/queries/CalculateCategoryDepth.md +47 -0
- package/src/modules/product-management/docs/queries/DetectCategoryCircularReference.md +51 -0
- package/src/modules/product-management/docs/queries/GetProduct.md +42 -0
- package/src/modules/product-management/docs/queries/GetProductAttribute.md +42 -0
- package/src/modules/product-management/docs/queries/GetProductAttributeAssignment.md +34 -0
- package/src/modules/product-management/docs/queries/GetProductAttributeValue.md +40 -0
- package/src/modules/product-management/docs/queries/GetProductCategory.md +42 -0
- package/src/modules/product-management/docs/queries/GetProductCategoryAssignment.md +34 -0
- package/src/modules/product-management/docs/queries/GetProductVariant.md +41 -0
- package/src/modules/product-management/docs/queries/ListAttributeAssignmentsByAttribute.md +34 -0
- package/src/modules/product-management/docs/queries/ListCategoryAssignmentsByProduct.md +35 -0
- package/src/modules/product-management/docs/queries/ListProductAttributeAssignments.md +34 -0
- package/src/modules/product-management/docs/queries/ListProductAttributeValues.md +36 -0
- package/src/modules/product-management/docs/queries/ListProductCategoryAssignments.md +34 -0
- package/src/modules/product-management/docs/queries/ListProductCategoryChildren.md +34 -0
- package/src/modules/product-management/docs/queries/ListProductVariants.md +34 -0
- package/src/modules/product-management/generated/enums.ts +9 -0
- package/src/modules/product-management/generated/kysely-tailordb.ts +100 -0
- package/src/modules/product-management/index.ts +2 -0
- package/src/modules/product-management/lib/_db_deps.ts +17 -0
- package/src/modules/product-management/lib/errors.generated.ts +152 -0
- package/src/modules/product-management/lib/permissions.generated.ts +25 -0
- package/src/modules/product-management/lib/types.ts +51 -0
- package/src/modules/product-management/module.ts +201 -0
- package/src/modules/product-management/query/calculateCategoryDepth.generated.ts +5 -0
- package/src/modules/product-management/query/calculateCategoryDepth.test.ts +72 -0
- package/src/modules/product-management/query/calculateCategoryDepth.ts +37 -0
- package/src/modules/product-management/query/detectCategoryCircularReference.generated.ts +5 -0
- package/src/modules/product-management/query/detectCategoryCircularReference.test.ts +72 -0
- package/src/modules/product-management/query/detectCategoryCircularReference.ts +44 -0
- package/src/modules/product-management/query/getProduct.generated.ts +5 -0
- package/src/modules/product-management/query/getProduct.test.ts +59 -0
- package/src/modules/product-management/query/getProduct.ts +18 -0
- package/src/modules/product-management/query/getProductAttribute.generated.ts +5 -0
- package/src/modules/product-management/query/getProductAttribute.test.ts +59 -0
- package/src/modules/product-management/query/getProductAttribute.ts +18 -0
- package/src/modules/product-management/query/getProductAttributeAssignment.generated.ts +5 -0
- package/src/modules/product-management/query/getProductAttributeAssignment.test.ts +37 -0
- package/src/modules/product-management/query/getProductAttributeAssignment.ts +18 -0
- package/src/modules/product-management/query/getProductAttributeValue.generated.ts +5 -0
- package/src/modules/product-management/query/getProductAttributeValue.test.ts +31 -0
- package/src/modules/product-management/query/getProductAttributeValue.ts +16 -0
- package/src/modules/product-management/query/getProductCategory.generated.ts +5 -0
- package/src/modules/product-management/query/getProductCategory.test.ts +59 -0
- package/src/modules/product-management/query/getProductCategory.ts +18 -0
- package/src/modules/product-management/query/getProductCategoryAssignment.generated.ts +5 -0
- package/src/modules/product-management/query/getProductCategoryAssignment.test.ts +37 -0
- package/src/modules/product-management/query/getProductCategoryAssignment.ts +18 -0
- package/src/modules/product-management/query/getProductVariant.generated.ts +5 -0
- package/src/modules/product-management/query/getProductVariant.test.ts +43 -0
- package/src/modules/product-management/query/getProductVariant.ts +20 -0
- package/src/modules/product-management/query/listAttributeAssignmentsByAttribute.generated.ts +5 -0
- package/src/modules/product-management/query/listAttributeAssignmentsByAttribute.test.ts +31 -0
- package/src/modules/product-management/query/listAttributeAssignmentsByAttribute.ts +16 -0
- package/src/modules/product-management/query/listCategoryAssignmentsByProduct.generated.ts +5 -0
- package/src/modules/product-management/query/listCategoryAssignmentsByProduct.test.ts +31 -0
- package/src/modules/product-management/query/listCategoryAssignmentsByProduct.ts +16 -0
- package/src/modules/product-management/query/listProductAttributeAssignments.generated.ts +5 -0
- package/src/modules/product-management/query/listProductAttributeAssignments.test.ts +31 -0
- package/src/modules/product-management/query/listProductAttributeAssignments.ts +16 -0
- package/src/modules/product-management/query/listProductAttributeValues.generated.ts +5 -0
- package/src/modules/product-management/query/listProductAttributeValues.test.ts +31 -0
- package/src/modules/product-management/query/listProductAttributeValues.ts +17 -0
- package/src/modules/product-management/query/listProductCategoryAssignments.generated.ts +5 -0
- package/src/modules/product-management/query/listProductCategoryAssignments.test.ts +31 -0
- package/src/modules/product-management/query/listProductCategoryAssignments.ts +16 -0
- package/src/modules/product-management/query/listProductCategoryChildren.generated.ts +5 -0
- package/src/modules/product-management/query/listProductCategoryChildren.test.ts +31 -0
- package/src/modules/product-management/query/listProductCategoryChildren.ts +16 -0
- package/src/modules/product-management/query/listProductVariants.generated.ts +5 -0
- package/src/modules/product-management/query/listProductVariants.test.ts +31 -0
- package/src/modules/product-management/query/listProductVariants.ts +16 -0
- package/src/modules/product-management/tailor.config.ts +13 -0
- package/src/modules/product-management/tailor.d.ts +13 -0
- package/src/modules/product-management/testing/fixtures.ts +151 -0
- package/src/modules/user-management/README.md +9 -3
- package/src/modules/user-management/command/activateUser.generated.ts +1 -1
- package/src/modules/user-management/command/activateUser.test.ts +12 -65
- package/src/modules/user-management/command/activateUser.ts +5 -20
- package/src/modules/user-management/command/assignPermissionToRole.generated.ts +1 -1
- package/src/modules/user-management/command/assignPermissionToRole.test.ts +25 -60
- package/src/modules/user-management/command/assignPermissionToRole.ts +5 -24
- package/src/modules/user-management/command/assignRoleToUser.generated.ts +1 -1
- package/src/modules/user-management/command/assignRoleToUser.test.ts +35 -87
- package/src/modules/user-management/command/assignRoleToUser.ts +5 -24
- package/src/modules/user-management/command/createPermission.generated.ts +1 -1
- package/src/modules/user-management/command/createPermission.test.ts +23 -33
- package/src/modules/user-management/command/createPermission.ts +4 -5
- package/src/modules/user-management/command/createRole.generated.ts +1 -1
- package/src/modules/user-management/command/createRole.test.ts +17 -27
- package/src/modules/user-management/command/createRole.ts +4 -5
- package/src/modules/user-management/command/createUser.generated.ts +1 -1
- package/src/modules/user-management/command/createUser.test.ts +31 -118
- package/src/modules/user-management/command/createUser.ts +7 -25
- package/src/modules/user-management/command/deactivateUser.generated.ts +1 -1
- package/src/modules/user-management/command/deactivateUser.test.ts +12 -65
- package/src/modules/user-management/command/deactivateUser.ts +6 -21
- package/src/modules/user-management/command/reactivateUser.generated.ts +1 -1
- package/src/modules/user-management/command/reactivateUser.test.ts +13 -66
- package/src/modules/user-management/command/reactivateUser.ts +5 -20
- package/src/modules/user-management/command/revokePermissionFromRole.generated.ts +1 -1
- package/src/modules/user-management/command/revokePermissionFromRole.test.ts +24 -62
- package/src/modules/user-management/command/revokePermissionFromRole.ts +5 -24
- package/src/modules/user-management/command/revokeRoleFromUser.generated.ts +1 -1
- package/src/modules/user-management/command/revokeRoleFromUser.test.ts +24 -60
- package/src/modules/user-management/command/revokeRoleFromUser.ts +5 -24
- package/src/modules/user-management/docs/commands/ActivateUser.md +7 -0
- package/src/modules/user-management/docs/commands/AssignPermissionToRole.md +7 -0
- package/src/modules/user-management/docs/commands/AssignRoleToUser.md +9 -0
- package/src/modules/user-management/docs/commands/CreatePermission.md +12 -0
- package/src/modules/user-management/docs/commands/CreateRole.md +9 -0
- package/src/modules/user-management/docs/commands/CreateUser.md +11 -0
- package/src/modules/user-management/docs/commands/DeactivateUser.md +7 -0
- package/src/modules/user-management/docs/commands/ReactivateUser.md +7 -0
- package/src/modules/user-management/docs/commands/RevokePermissionFromRole.md +7 -0
- package/src/modules/user-management/docs/commands/RevokeRoleFromUser.md +7 -0
- package/src/modules/user-management/index.ts +0 -30
- package/src/modules/user-management/lib/errors.generated.ts +14 -14
- package/src/modules/user-management/lib/permissions.generated.ts +1 -2
- package/src/modules/user-management/lib/recomputeUserPermissions.ts +4 -3
- package/src/modules/user-management/lib/types.ts +1 -1
- package/src/modules/user-management/module.ts +2 -7
- package/src/modules/user-management/tailor.config.ts +6 -4
- package/src/modules/user-management/tailor.d.ts +13 -0
- package/src/modules/user-management/testing/fixtures.ts +1 -20
- package/src/schemas.ts +1 -1
- package/src/{modules/shared → shared}/defineCommand.test.ts +23 -7
- package/src/{modules/shared → shared}/defineCommand.ts +19 -10
- package/src/{modules/shared/internal.ts → shared/index.ts} +9 -1
- package/src/shared/pagination.test.ts +43 -0
- package/src/shared/pagination.ts +22 -0
- package/src/{modules/shared → shared}/types.ts +13 -0
- package/src/{modules/testing → testing}/index.ts +14 -7
- package/src/testing.ts +1 -1
- package/src/util.ts +8 -0
- package/templates/config/license.config.json +4 -0
- package/templates/scaffold/app/backend/.env.example +1 -0
- package/templates/scaffold/app/backend/__dot__gitignore +4 -0
- package/templates/scaffold/app/backend/eslint.config.js +32 -0
- package/templates/scaffold/app/backend/package.json +31 -0
- package/templates/scaffold/app/backend/seed/data/AuditEvent.jsonl +0 -0
- package/templates/scaffold/app/backend/seed/data/Permission.jsonl +0 -0
- package/templates/scaffold/app/backend/seed/data/Permission.schema.ts +20 -0
- package/templates/scaffold/app/backend/seed/data/Role.jsonl +0 -0
- package/templates/scaffold/app/backend/seed/data/Role.schema.ts +20 -0
- package/templates/scaffold/app/backend/seed/data/RolePermission.jsonl +0 -0
- package/templates/scaffold/app/backend/seed/data/RolePermission.schema.ts +24 -0
- package/templates/scaffold/app/backend/seed/data/User.jsonl +1 -0
- package/templates/scaffold/app/backend/seed/data/User.schema.ts +20 -0
- package/templates/scaffold/app/backend/seed/data/UserRole.jsonl +0 -0
- package/templates/scaffold/app/backend/seed/data/UserRole.schema.ts +24 -0
- package/templates/scaffold/app/backend/seed/data/_User.jsonl +1 -0
- package/templates/scaffold/app/backend/seed/data/_User.schema.ts +30 -0
- package/templates/scaffold/app/backend/seed/exec.mjs +659 -0
- package/templates/scaffold/app/backend/src/executors/permissionCreated.ts +3 -0
- package/templates/scaffold/app/backend/src/executors/permissionDeleted.ts +3 -0
- package/templates/scaffold/app/backend/src/generated/kysely-tailordb.ts +83 -0
- package/templates/scaffold/app/backend/src/modules.ts +9 -0
- package/templates/scaffold/app/backend/src/resolvers/createUser.ts +46 -0
- package/templates/scaffold/app/backend/tailor.config.ts +68 -0
- package/templates/scaffold/app/backend/tailor.d.ts +15 -0
- package/templates/scaffold/app/backend/tsconfig.json +19 -0
- package/templates/scaffold/app/docs/actors/.gitkeep +0 -0
- package/templates/scaffold/app/docs/business-flow/.gitkeep +0 -0
- package/templates/scaffold/app/docs/resolver/.gitkeep +0 -0
- package/templates/scaffold/app/docs/screen/.gitkeep +0 -0
- package/templates/scaffold/app/frontend/.env.example +2 -0
- package/templates/scaffold/app/frontend/__dot__gitignore +3 -0
- package/templates/scaffold/app/frontend/components.json +23 -0
- package/templates/scaffold/app/frontend/eslint.config.js +48 -0
- package/templates/scaffold/app/frontend/index.html +13 -0
- package/templates/scaffold/app/frontend/package.json +53 -0
- package/templates/scaffold/app/frontend/scripts/generate-graphql.mjs +6 -0
- package/templates/scaffold/app/frontend/src/App.tsx +58 -0
- package/templates/scaffold/app/frontend/src/components/composed/empty-state.tsx +26 -0
- package/templates/scaffold/app/frontend/src/components/composed/error-fallback.tsx +28 -0
- package/templates/scaffold/app/frontend/src/components/composed/loading.tsx +13 -0
- package/templates/scaffold/app/frontend/src/components/ui/badge.tsx +39 -0
- package/templates/scaffold/app/frontend/src/components/ui/button.tsx +60 -0
- package/templates/scaffold/app/frontend/src/components/ui/card.tsx +75 -0
- package/templates/scaffold/app/frontend/src/components/ui/form.tsx +152 -0
- package/templates/scaffold/app/frontend/src/components/ui/input.tsx +21 -0
- package/templates/scaffold/app/frontend/src/components/ui/label.tsx +21 -0
- package/templates/scaffold/app/frontend/src/components/ui/spinner.tsx +16 -0
- package/templates/scaffold/app/frontend/src/components/ui/table.tsx +90 -0
- package/templates/scaffold/app/frontend/src/graphql/generated/graphql-env.d.ts +103 -0
- package/templates/scaffold/app/frontend/src/graphql/generated/schema.graphql +1235 -0
- package/templates/scaffold/app/frontend/src/graphql/index.ts +15 -0
- package/templates/scaffold/app/frontend/src/index.css +5 -0
- package/templates/scaffold/app/frontend/src/lib/auth-client.ts +17 -0
- package/templates/scaffold/app/frontend/src/lib/utils.ts +6 -0
- package/templates/scaffold/app/frontend/src/main.tsx +10 -0
- package/templates/scaffold/app/frontend/src/pages/page.tsx +20 -0
- package/templates/scaffold/app/frontend/src/pages/user-management/page.tsx +19 -0
- package/templates/scaffold/app/frontend/src/pages/user-management/profile/page.tsx +97 -0
- package/templates/scaffold/app/frontend/src/pages/user-management/user/[id]/components/user-detail.tsx +58 -0
- package/templates/scaffold/app/frontend/src/pages/user-management/user/[id]/page.tsx +51 -0
- package/templates/scaffold/app/frontend/src/pages/user-management/user/components/users-table.tsx +101 -0
- package/templates/scaffold/app/frontend/src/pages/user-management/user/create/components/create-user-form.tsx +99 -0
- package/templates/scaffold/app/frontend/src/pages/user-management/user/create/page.tsx +19 -0
- package/templates/scaffold/app/frontend/src/pages/user-management/user/page.tsx +61 -0
- package/templates/scaffold/app/frontend/src/providers/graphql-provider.tsx +21 -0
- package/templates/scaffold/app/frontend/tsconfig.app.json +35 -0
- package/templates/scaffold/app/frontend/tsconfig.json +16 -0
- package/templates/scaffold/app/frontend/tsconfig.node.json +23 -0
- package/templates/scaffold/app/frontend/vite.config.ts +23 -0
- package/templates/scaffold/module/command/.gitkeep +0 -0
- package/templates/scaffold/module/db/.gitkeep +0 -0
- package/templates/scaffold/module/executor/.gitkeep +0 -0
- package/templates/scaffold/module/generated/.gitkeep +0 -0
- package/templates/scaffold/module/index.ts +2 -0
- package/templates/scaffold/module/lib/errors.ts +1 -0
- package/templates/scaffold/module/lib/types.ts +4 -0
- package/templates/scaffold/module/module.ts +7 -0
- package/templates/scaffold/module/permissions.ts +3 -0
- package/templates/scaffold/module/query/.gitkeep +0 -0
- package/templates/scaffold/module/tailor.config.ts +13 -0
- package/templates/scaffold/module/testing/fixtures.ts +1 -0
- package/templates/workflows/erp-kit-check.yml +37 -0
- package/dist/cli.js +0 -1654
- package/skills/erp-kit-app-2-breakdown/SKILL.md +0 -88
- package/skills/erp-kit-app-3-doc-review/SKILL.md +0 -112
- package/skills/erp-kit-app-4-impl-spec/SKILL.md +0 -116
- package/skills/erp-kit-app-5-implementation/references/backend.md +0 -232
- package/skills/erp-kit-module-1-docs/SKILL.md +0 -111
- package/skills/erp-kit-module-2-feature-breakdown/SKILL.md +0 -76
- package/skills/erp-kit-module-3-doc-review/SKILL.md +0 -294
- package/skills/erp-kit-module-4-tdd/SKILL.md +0 -94
- package/skills/erp-kit-module-4-tdd/references/exports.md +0 -8
- package/skills/erp-kit-module-5-impl-review/SKILL.md +0 -410
- package/src/commands/scaffold-templates.ts +0 -65
- package/src/modules/shared/index.ts +0 -1
- package/src/modules/user-management/command/logAuditEvent.generated.ts +0 -6
- package/src/modules/user-management/command/logAuditEvent.test.ts +0 -187
- package/src/modules/user-management/command/logAuditEvent.ts +0 -56
- package/src/modules/user-management/db/auditEvent.ts +0 -47
- package/src/modules/user-management/docs/commands/LogAuditEvent.md +0 -37
- package/src/modules/user-management/docs/features/audit-trail.md +0 -80
- package/src/modules/user-management/docs/models/AuditEvent.md +0 -36
- /package/skills/{erp-kit-module-2-feature-breakdown → erp-kit-module-3-plan}/references/naming.md +0 -0
- /package/skills/{erp-kit-module-4-tdd → erp-kit-module-5-impl}/references/cross-module-dependency.md +0 -0
- /package/skills/{erp-kit-module-4-tdd → erp-kit-module-5-impl}/references/db-relations.md +0 -0
- /package/skills/{erp-kit-module-4-tdd → erp-kit-module-5-impl}/references/generated-code.md +0 -0
- /package/skills/{erp-kit-module-4-tdd → erp-kit-module-5-impl}/references/models.md +0 -0
- /package/skills/{erp-kit-module-5-impl-review → erp-kit-module-6-impl-review}/references/commands.md +0 -0
- /package/skills/{erp-kit-module-5-impl-review → erp-kit-module-6-impl-review}/references/testing.md +0 -0
- /package/src/modules/{product-management → audit}/.gitkeep +0 -0
- /package/src/{modules/shared → shared}/createContext.test.ts +0 -0
- /package/src/{modules/shared → shared}/createContext.ts +0 -0
- /package/src/{modules/shared → shared}/definePermissions.test.ts +0 -0
- /package/src/{modules/shared → shared}/definePermissions.ts +0 -0
- /package/src/{modules/shared → shared}/defineQuery.test.ts +0 -0
- /package/src/{modules/shared → shared}/defineQuery.ts +0 -0
- /package/src/{modules/shared → shared}/entityTypes.ts +0 -0
- /package/src/{modules/shared → shared}/errors.ts +0 -0
- /package/src/{modules/shared → shared}/requirePermission.test.ts +0 -0
- /package/src/{modules/shared → shared}/requirePermission.ts +0 -0
- /package/src/{modules/shared → shared}/result.ts +0 -0
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { describe, expect, it } from "vitest";
|
|
2
|
-
import { createMockDb } from "
|
|
3
|
-
import {
|
|
4
|
-
import { DB } from "../generated/kysely-tailordb";
|
|
2
|
+
import { createMockDb } from "../../../testing/index";
|
|
3
|
+
import { Transaction } from "../generated/kysely-tailordb";
|
|
5
4
|
import {
|
|
6
5
|
CodeImmutableError,
|
|
7
6
|
MissingRequiredFieldsError,
|
|
@@ -11,16 +10,11 @@ import { baseRootNode } from "../testing/fixtures";
|
|
|
11
10
|
import { run } from "./updateTaxonomyNode";
|
|
12
11
|
|
|
13
12
|
describe("updateTaxonomyNode", () => {
|
|
14
|
-
const ctx: CommandContext = {
|
|
15
|
-
actorId: "test-actor",
|
|
16
|
-
permissions: ["item-management:updateTaxonomyNode"],
|
|
17
|
-
};
|
|
18
|
-
|
|
19
13
|
it("returns error when node does not exist", async () => {
|
|
20
|
-
const { db, spies } = createMockDb<
|
|
14
|
+
const { db, spies } = createMockDb<Transaction>();
|
|
21
15
|
spies.select.mockReturnValue(undefined);
|
|
22
16
|
|
|
23
|
-
const result = await run(db, { id: "nonexistent", name: "New Name" }
|
|
17
|
+
const result = await run(db, { id: "nonexistent", name: "New Name" });
|
|
24
18
|
expect(result.ok).toBe(false);
|
|
25
19
|
if (!result.ok) {
|
|
26
20
|
expect(result.error).toBeInstanceOf(NodeNotFoundError);
|
|
@@ -28,10 +22,10 @@ describe("updateTaxonomyNode", () => {
|
|
|
28
22
|
});
|
|
29
23
|
|
|
30
24
|
it("returns error when attempting to change code", async () => {
|
|
31
|
-
const { db, spies } = createMockDb<
|
|
25
|
+
const { db, spies } = createMockDb<Transaction>();
|
|
32
26
|
spies.select.mockReturnValueOnce(baseRootNode);
|
|
33
27
|
|
|
34
|
-
const result = await run(db, { id: baseRootNode.id, code: "NEW-CODE" }
|
|
28
|
+
const result = await run(db, { id: baseRootNode.id, code: "NEW-CODE" });
|
|
35
29
|
expect(result.ok).toBe(false);
|
|
36
30
|
if (!result.ok) {
|
|
37
31
|
expect(result.error).toBeInstanceOf(CodeImmutableError);
|
|
@@ -39,10 +33,10 @@ describe("updateTaxonomyNode", () => {
|
|
|
39
33
|
});
|
|
40
34
|
|
|
41
35
|
it("returns error when name is empty", async () => {
|
|
42
|
-
const { db, spies } = createMockDb<
|
|
36
|
+
const { db, spies } = createMockDb<Transaction>();
|
|
43
37
|
spies.select.mockReturnValueOnce(baseRootNode);
|
|
44
38
|
|
|
45
|
-
const result = await run(db, { id: baseRootNode.id, name: "" }
|
|
39
|
+
const result = await run(db, { id: baseRootNode.id, name: "" });
|
|
46
40
|
expect(result.ok).toBe(false);
|
|
47
41
|
if (!result.ok) {
|
|
48
42
|
expect(result.error).toBeInstanceOf(MissingRequiredFieldsError);
|
|
@@ -50,10 +44,10 @@ describe("updateTaxonomyNode", () => {
|
|
|
50
44
|
});
|
|
51
45
|
|
|
52
46
|
it("returns error when name is not provided", async () => {
|
|
53
|
-
const { db, spies } = createMockDb<
|
|
47
|
+
const { db, spies } = createMockDb<Transaction>();
|
|
54
48
|
spies.select.mockReturnValueOnce(baseRootNode);
|
|
55
49
|
|
|
56
|
-
const result = await run(db, { id: baseRootNode.id }
|
|
50
|
+
const result = await run(db, { id: baseRootNode.id });
|
|
57
51
|
expect(result.ok).toBe(false);
|
|
58
52
|
if (!result.ok) {
|
|
59
53
|
expect(result.error).toBeInstanceOf(MissingRequiredFieldsError);
|
|
@@ -61,12 +55,12 @@ describe("updateTaxonomyNode", () => {
|
|
|
61
55
|
});
|
|
62
56
|
|
|
63
57
|
it("updates node name", async () => {
|
|
64
|
-
const { db, spies } = createMockDb<
|
|
58
|
+
const { db, spies } = createMockDb<Transaction>();
|
|
65
59
|
const updatedNode = { ...baseRootNode, name: "Consumer Electronics" };
|
|
66
60
|
spies.select.mockReturnValueOnce(baseRootNode);
|
|
67
61
|
spies.update.mockReturnValue(updatedNode);
|
|
68
62
|
|
|
69
|
-
const result = await run(db, { id: baseRootNode.id, name: "Consumer Electronics" }
|
|
63
|
+
const result = await run(db, { id: baseRootNode.id, name: "Consumer Electronics" });
|
|
70
64
|
|
|
71
65
|
expect(result.ok).toBe(true);
|
|
72
66
|
if (result.ok) {
|
|
@@ -76,12 +70,12 @@ describe("updateTaxonomyNode", () => {
|
|
|
76
70
|
});
|
|
77
71
|
|
|
78
72
|
it("passes custom fields through to set", async () => {
|
|
79
|
-
const { db, spies } = createMockDb<
|
|
73
|
+
const { db, spies } = createMockDb<Transaction>();
|
|
80
74
|
const updatedNode = { ...baseRootNode, sortOrder: 5 };
|
|
81
75
|
spies.select.mockReturnValueOnce(baseRootNode);
|
|
82
76
|
spies.update.mockReturnValue(updatedNode);
|
|
83
77
|
|
|
84
|
-
await run(db, { id: baseRootNode.id, name: "Electronics", sortOrder: 5 }
|
|
78
|
+
await run(db, { id: baseRootNode.id, name: "Electronics", sortOrder: 5 });
|
|
85
79
|
|
|
86
80
|
expect(spies.set).toHaveBeenNthCalledWith(1, expect.objectContaining({ sortOrder: 5 }));
|
|
87
81
|
});
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import { ok, err
|
|
2
|
-
import {
|
|
1
|
+
import { ok, err } from "../../../shared";
|
|
2
|
+
import { Transaction } from "../generated/kysely-tailordb";
|
|
3
3
|
import {
|
|
4
4
|
CodeImmutableError,
|
|
5
5
|
MissingRequiredFieldsError,
|
|
6
6
|
NodeNotFoundError,
|
|
7
7
|
} from "../lib/errors.generated";
|
|
8
|
-
import { getTaxonomyNode } from "../query/getTaxonomyNode.generated";
|
|
9
8
|
|
|
10
9
|
export interface UpdateTaxonomyNodeInput {
|
|
11
10
|
id: string;
|
|
@@ -20,14 +19,18 @@ export interface UpdateTaxonomyNodeInput {
|
|
|
20
19
|
* Node code is immutable.
|
|
21
20
|
*/
|
|
22
21
|
export async function run<CF extends Record<string, unknown>>(
|
|
23
|
-
db:
|
|
22
|
+
db: Transaction,
|
|
24
23
|
input: UpdateTaxonomyNodeInput & Partial<CF>,
|
|
25
|
-
ctx: CommandContext,
|
|
26
24
|
) {
|
|
27
25
|
const { id, code, name, ...customFields } = input;
|
|
28
26
|
|
|
29
27
|
// 1. Check node exists
|
|
30
|
-
const
|
|
28
|
+
const node = await db
|
|
29
|
+
.selectFrom("TaxonomyNode")
|
|
30
|
+
.selectAll()
|
|
31
|
+
.where("id", "=", id)
|
|
32
|
+
.forUpdate()
|
|
33
|
+
.executeTakeFirst();
|
|
31
34
|
|
|
32
35
|
if (!node) {
|
|
33
36
|
return err(new NodeNotFoundError(id));
|
|
@@ -30,3 +30,11 @@ flowchart TD
|
|
|
30
30
|
|
|
31
31
|
- **ITEM_NOT_FOUND**: Specified item ID does not exist
|
|
32
32
|
- **INVALID_STATE_TRANSITION**: Item is not in DRAFT status
|
|
33
|
+
|
|
34
|
+
## Test Cases
|
|
35
|
+
|
|
36
|
+
- returns error when item does not exist
|
|
37
|
+
- returns error when item is not DRAFT
|
|
38
|
+
- returns error when item is INACTIVE
|
|
39
|
+
- activates a DRAFT item
|
|
40
|
+
- activates from custom status when from is overridden
|
|
@@ -36,3 +36,10 @@ flowchart TD
|
|
|
36
36
|
- **ITEM_NOT_FOUND**: Specified item ID does not exist
|
|
37
37
|
- **NODE_NOT_FOUND**: Specified taxonomy node ID does not exist
|
|
38
38
|
- **DUPLICATE_ASSIGNMENT**: Item is already assigned to this taxonomy node
|
|
39
|
+
|
|
40
|
+
## Test Cases
|
|
41
|
+
|
|
42
|
+
- returns error when item does not exist
|
|
43
|
+
- returns error when node does not exist
|
|
44
|
+
- returns error when assignment already exists
|
|
45
|
+
- creates assignment successfully
|
|
@@ -42,3 +42,13 @@ flowchart TD
|
|
|
42
42
|
- **DUPLICATE_SKU**: An item with the same SKU already exists
|
|
43
43
|
- **DUPLICATE_BARCODE**: An item with the same barcode already exists
|
|
44
44
|
- **UNIT_NOT_FOUND**: Referenced unit does not exist or is inactive
|
|
45
|
+
|
|
46
|
+
## Test Cases
|
|
47
|
+
|
|
48
|
+
- returns error when SKU already exists
|
|
49
|
+
- returns error when barcode already exists
|
|
50
|
+
- returns error when UoM does not exist
|
|
51
|
+
- creates item in DRAFT status by default
|
|
52
|
+
- creates item in ACTIVE status
|
|
53
|
+
- skips barcode uniqueness check when barcode is not provided
|
|
54
|
+
- passes custom fields through to insert
|
|
@@ -42,3 +42,12 @@ flowchart TD
|
|
|
42
42
|
- **DUPLICATE_NODE_CODE**: A node with the same code already exists
|
|
43
43
|
- **PARENT_NODE_NOT_FOUND**: Specified parent node ID does not exist
|
|
44
44
|
- **MAX_DEPTH_EXCEEDED**: Adding this child would exceed the configurable tree depth limit
|
|
45
|
+
|
|
46
|
+
## Test Cases
|
|
47
|
+
|
|
48
|
+
- returns error when code already exists
|
|
49
|
+
- returns error when parent does not exist
|
|
50
|
+
- returns error when max depth would be exceeded
|
|
51
|
+
- creates a root node
|
|
52
|
+
- creates a child node under existing parent
|
|
53
|
+
- passes custom fields through to insert
|
|
@@ -32,3 +32,11 @@ flowchart TD
|
|
|
32
32
|
|
|
33
33
|
- **ITEM_NOT_FOUND**: Specified item ID does not exist
|
|
34
34
|
- **INVALID_STATE_TRANSITION**: Item is not in ACTIVE status
|
|
35
|
+
|
|
36
|
+
## Test Cases
|
|
37
|
+
|
|
38
|
+
- returns error when item does not exist
|
|
39
|
+
- returns error when item is not ACTIVE
|
|
40
|
+
- returns error when item is already INACTIVE
|
|
41
|
+
- deactivates an ACTIVE item
|
|
42
|
+
- deactivates from custom status when from is overridden
|
|
@@ -33,3 +33,10 @@ flowchart TD
|
|
|
33
33
|
|
|
34
34
|
- **ITEM_NOT_FOUND**: Specified item ID does not exist
|
|
35
35
|
- **DELETE_NON_DRAFT**: Item is in ACTIVE or INACTIVE status — only DRAFT items can be deleted
|
|
36
|
+
|
|
37
|
+
## Test Cases
|
|
38
|
+
|
|
39
|
+
- returns error when item does not exist
|
|
40
|
+
- returns error when item is ACTIVE
|
|
41
|
+
- returns error when item is INACTIVE
|
|
42
|
+
- deletes a DRAFT item and removes taxonomy assignments
|
|
@@ -37,3 +37,10 @@ flowchart TD
|
|
|
37
37
|
- **NODE_NOT_FOUND**: Specified node ID does not exist
|
|
38
38
|
- **NODE_HAS_CHILDREN**: Node has one or more child nodes — children must be moved or deleted first
|
|
39
39
|
- **NODE_HAS_ASSIGNMENTS**: Node has one or more item assignments — assignments must be removed first
|
|
40
|
+
|
|
41
|
+
## Test Cases
|
|
42
|
+
|
|
43
|
+
- returns error when node does not exist
|
|
44
|
+
- returns error when node has children
|
|
45
|
+
- returns error when node has item assignments
|
|
46
|
+
- deletes a leaf node with no assignments
|
|
@@ -43,3 +43,13 @@ flowchart TD
|
|
|
43
43
|
- **PARENT_NODE_NOT_FOUND**: Specified new parent node ID does not exist
|
|
44
44
|
- **CIRCULAR_REFERENCE**: New parent is the node itself or one of its descendants
|
|
45
45
|
- **MAX_DEPTH_EXCEEDED**: Moving this subtree would exceed the configurable tree depth limit
|
|
46
|
+
|
|
47
|
+
## Test Cases
|
|
48
|
+
|
|
49
|
+
- returns error when node does not exist
|
|
50
|
+
- returns error when new parent does not exist
|
|
51
|
+
- returns error when moving node under itself
|
|
52
|
+
- returns error when moving node under its descendant
|
|
53
|
+
- promotes node to root by setting parent to null
|
|
54
|
+
- moves node to different parent
|
|
55
|
+
- returns error when subtree depth + new parent depth exceeds maxDepth
|
|
@@ -32,3 +32,11 @@ flowchart TD
|
|
|
32
32
|
|
|
33
33
|
- **ITEM_NOT_FOUND**: Specified item ID does not exist
|
|
34
34
|
- **INVALID_STATE_TRANSITION**: Item is not in INACTIVE status
|
|
35
|
+
|
|
36
|
+
## Test Cases
|
|
37
|
+
|
|
38
|
+
- returns error when item does not exist
|
|
39
|
+
- returns error when item is not INACTIVE
|
|
40
|
+
- returns error when item is DRAFT
|
|
41
|
+
- reactivates an INACTIVE item
|
|
42
|
+
- reactivates from custom status when from is overridden
|
|
@@ -53,3 +53,18 @@ flowchart TD
|
|
|
53
53
|
- **UNIT_NOT_FOUND**: Referenced unit does not exist or is inactive
|
|
54
54
|
- **UOM_LOCKED**: UoM cannot be changed after item has been activated (status is ACTIVE or INACTIVE)
|
|
55
55
|
- **NO_FIELDS_TO_UPDATE**: No updatable fields were provided in the request
|
|
56
|
+
|
|
57
|
+
## Test Cases
|
|
58
|
+
|
|
59
|
+
- returns error when item does not exist
|
|
60
|
+
- returns error when attempting to change SKU
|
|
61
|
+
- returns error when no fields to update
|
|
62
|
+
- returns error when barcode is duplicate
|
|
63
|
+
- returns error when changing UoM on non-DRAFT item
|
|
64
|
+
- returns error when changing UoM on INACTIVE item
|
|
65
|
+
- returns error when new UoM does not exist
|
|
66
|
+
- updates name in any status
|
|
67
|
+
- updates barcode in any status
|
|
68
|
+
- clears barcode by setting to null
|
|
69
|
+
- updates UoM in DRAFT status
|
|
70
|
+
- passes custom fields through to set
|
|
@@ -34,3 +34,12 @@ flowchart TD
|
|
|
34
34
|
- **NODE_NOT_FOUND**: Specified node ID does not exist
|
|
35
35
|
- **CODE_IMMUTABLE**: Attempt to change the node code
|
|
36
36
|
- **MISSING_REQUIRED_FIELDS**: Name not provided or empty
|
|
37
|
+
|
|
38
|
+
## Test Cases
|
|
39
|
+
|
|
40
|
+
- returns error when node does not exist
|
|
41
|
+
- returns error when attempting to change code
|
|
42
|
+
- returns error when name is empty
|
|
43
|
+
- returns error when name is not provided
|
|
44
|
+
- updates node name
|
|
45
|
+
- passes custom fields through to set
|
|
@@ -34,3 +34,11 @@ flowchart TD
|
|
|
34
34
|
## Error Scenarios
|
|
35
35
|
|
|
36
36
|
- **NODE_NOT_FOUND**: The starting node or an ancestor in the chain is not found — traversal stops and returns partial depth
|
|
37
|
+
|
|
38
|
+
## Test Cases
|
|
39
|
+
|
|
40
|
+
- returns depth 1 for root node
|
|
41
|
+
- returns depth 2 for child of root
|
|
42
|
+
- returns depth 3 for grandchild of root
|
|
43
|
+
- returns depth 1 when node not found
|
|
44
|
+
- handles broken ancestor chain gracefully
|
|
@@ -38,3 +38,10 @@ flowchart TD
|
|
|
38
38
|
## Error Scenarios
|
|
39
39
|
|
|
40
40
|
- **MAX_DEPTH_EXCEEDED**: Combined new parent depth + subtree depth exceeds maxDepth — enforced by the calling command, not this query directly
|
|
41
|
+
|
|
42
|
+
## Test Cases
|
|
43
|
+
|
|
44
|
+
- returns 1 for leaf node (no children)
|
|
45
|
+
- returns 2 for node with one level of children
|
|
46
|
+
- returns 3 for node with two levels of children
|
|
47
|
+
- returns max depth for node with multiple branches
|
|
@@ -39,3 +39,12 @@ flowchart TD
|
|
|
39
39
|
|
|
40
40
|
- **CIRCULAR_REFERENCE**: The moved node appears in the ancestor chain of the new parent — returns isCircular: true
|
|
41
41
|
- **SELF_REFERENCE**: Node is moved to itself as parent — returns isCircular: true
|
|
42
|
+
|
|
43
|
+
## Test Cases
|
|
44
|
+
|
|
45
|
+
- detects self-reference as circular
|
|
46
|
+
- detects moving node under its child as circular
|
|
47
|
+
- detects moving node under its grandchild as circular
|
|
48
|
+
- returns not circular for valid move
|
|
49
|
+
- returns not circular when new parent is root
|
|
50
|
+
- handles broken ancestor chain gracefully (not circular)
|
|
@@ -36,3 +36,12 @@ flowchart TD
|
|
|
36
36
|
## Error Scenarios
|
|
37
37
|
|
|
38
38
|
- **ITEM_NOT_FOUND**: No item matches the given criteria — caller receives null
|
|
39
|
+
|
|
40
|
+
## Test Cases
|
|
41
|
+
|
|
42
|
+
- returns item when found
|
|
43
|
+
- returns null when item not found
|
|
44
|
+
- returns item when found
|
|
45
|
+
- returns null when item not found
|
|
46
|
+
- returns item when found
|
|
47
|
+
- returns null when item not found
|
|
@@ -33,3 +33,10 @@ flowchart TD
|
|
|
33
33
|
## Error Scenarios
|
|
34
34
|
|
|
35
35
|
- **NODE_NOT_FOUND**: No taxonomy node matches the given criteria — caller receives null
|
|
36
|
+
|
|
37
|
+
## Test Cases
|
|
38
|
+
|
|
39
|
+
- returns node when found
|
|
40
|
+
- returns null when node not found
|
|
41
|
+
- returns node when found
|
|
42
|
+
- returns null when node not found
|
|
@@ -1,53 +1,2 @@
|
|
|
1
1
|
export { defineModule } from "./module";
|
|
2
2
|
export { permissions, own, all } from "./lib/permissions.generated";
|
|
3
|
-
|
|
4
|
-
// generated types
|
|
5
|
-
export { ItemStatus } from "./generated/enums";
|
|
6
|
-
|
|
7
|
-
// errors
|
|
8
|
-
export {
|
|
9
|
-
ItemNotFoundError,
|
|
10
|
-
DuplicateSkuError,
|
|
11
|
-
DuplicateBarcodeError,
|
|
12
|
-
UnitNotFoundError,
|
|
13
|
-
SkuImmutableError,
|
|
14
|
-
UomLockedError,
|
|
15
|
-
NoFieldsToUpdateError,
|
|
16
|
-
InvalidStateTransitionError,
|
|
17
|
-
DeleteNonDraftError,
|
|
18
|
-
NodeNotFoundError,
|
|
19
|
-
DuplicateNodeCodeError,
|
|
20
|
-
ParentNodeNotFoundError,
|
|
21
|
-
MaxDepthExceededError,
|
|
22
|
-
CodeImmutableError,
|
|
23
|
-
MissingRequiredFieldsError,
|
|
24
|
-
CircularReferenceError,
|
|
25
|
-
NodeHasChildrenError,
|
|
26
|
-
NodeHasAssignmentsError,
|
|
27
|
-
DuplicateAssignmentError,
|
|
28
|
-
AssignmentNotFoundError,
|
|
29
|
-
} from "./lib/errors.generated";
|
|
30
|
-
|
|
31
|
-
// query input types
|
|
32
|
-
export { type GetItemInput } from "./query/getItem";
|
|
33
|
-
export { type GetTaxonomyNodeInput } from "./query/getTaxonomyNode";
|
|
34
|
-
export { type GetTaxonomyNodeChildrenInput } from "./query/getTaxonomyNodeChildren";
|
|
35
|
-
export { type GetItemTaxonomyAssignmentInput } from "./query/getItemTaxonomyAssignment";
|
|
36
|
-
export { type GetTaxonomyNodeAssignmentsInput } from "./query/getTaxonomyNodeAssignments";
|
|
37
|
-
export { type CalculateNodeDepthInput } from "./query/calculateNodeDepth";
|
|
38
|
-
export { type CalculateSubtreeDepthInput } from "./query/calculateSubtreeDepth";
|
|
39
|
-
export { type DetectCircularReferenceInput } from "./query/detectCircularReference";
|
|
40
|
-
|
|
41
|
-
// command input types
|
|
42
|
-
export { type CreateItemInput } from "./command/createItem";
|
|
43
|
-
export { type UpdateItemInput } from "./command/updateItem";
|
|
44
|
-
export { type ActivateItemInput } from "./command/activateItem";
|
|
45
|
-
export { type DeactivateItemInput } from "./command/deactivateItem";
|
|
46
|
-
export { type ReactivateItemInput } from "./command/reactivateItem";
|
|
47
|
-
export { type DeleteItemInput } from "./command/deleteItem";
|
|
48
|
-
export { type CreateTaxonomyNodeInput } from "./command/createTaxonomyNode";
|
|
49
|
-
export { type UpdateTaxonomyNodeInput } from "./command/updateTaxonomyNode";
|
|
50
|
-
export { type MoveTaxonomyNodeInput } from "./command/moveTaxonomyNode";
|
|
51
|
-
export { type DeleteTaxonomyNodeInput } from "./command/deleteTaxonomyNode";
|
|
52
|
-
export { type AssignItemToTaxonomyInput } from "./command/assignItemToTaxonomy";
|
|
53
|
-
export { type RemoveItemFromTaxonomyInput } from "./command/removeItemFromTaxonomy";
|
|
@@ -1,117 +1,117 @@
|
|
|
1
1
|
// @generated — do not edit
|
|
2
|
-
import { createDomainError } from "
|
|
2
|
+
import { createDomainError } from "../../../shared";
|
|
3
3
|
|
|
4
4
|
export const ItemNotFoundError = createDomainError(
|
|
5
|
-
"ItemNotFoundError", "
|
|
5
|
+
"ItemNotFoundError", "ITEM_MANAGEMENT_ITEM_NOT_FOUND",
|
|
6
6
|
(identifier: string) => `Specified item ID does not exist: ${identifier}`,
|
|
7
7
|
);
|
|
8
8
|
|
|
9
9
|
export const InvalidStateTransitionError = createDomainError(
|
|
10
|
-
"InvalidStateTransitionError", "
|
|
10
|
+
"InvalidStateTransitionError", "ITEM_MANAGEMENT_INVALID_STATE_TRANSITION",
|
|
11
11
|
(identifier: string) => `Item is not in DRAFT status: ${identifier}`,
|
|
12
12
|
);
|
|
13
13
|
|
|
14
14
|
export const NodeNotFoundError = createDomainError(
|
|
15
|
-
"NodeNotFoundError", "
|
|
15
|
+
"NodeNotFoundError", "ITEM_MANAGEMENT_NODE_NOT_FOUND",
|
|
16
16
|
(identifier: string) => `Specified taxonomy node ID does not exist: ${identifier}`,
|
|
17
17
|
);
|
|
18
18
|
|
|
19
19
|
export const DuplicateAssignmentError = createDomainError(
|
|
20
|
-
"DuplicateAssignmentError", "
|
|
20
|
+
"DuplicateAssignmentError", "ITEM_MANAGEMENT_DUPLICATE_ASSIGNMENT",
|
|
21
21
|
(identifier: string) => `Item is already assigned to this taxonomy node: ${identifier}`,
|
|
22
22
|
);
|
|
23
23
|
|
|
24
24
|
export const DuplicateSkuError = createDomainError(
|
|
25
|
-
"DuplicateSkuError", "
|
|
25
|
+
"DuplicateSkuError", "ITEM_MANAGEMENT_DUPLICATE_SKU",
|
|
26
26
|
(identifier: string) => `An item with the same SKU already exists: ${identifier}`,
|
|
27
27
|
);
|
|
28
28
|
|
|
29
29
|
export const DuplicateBarcodeError = createDomainError(
|
|
30
|
-
"DuplicateBarcodeError", "
|
|
30
|
+
"DuplicateBarcodeError", "ITEM_MANAGEMENT_DUPLICATE_BARCODE",
|
|
31
31
|
(identifier: string) => `An item with the same barcode already exists: ${identifier}`,
|
|
32
32
|
);
|
|
33
33
|
|
|
34
34
|
export const UnitNotFoundError = createDomainError(
|
|
35
|
-
"UnitNotFoundError", "
|
|
35
|
+
"UnitNotFoundError", "ITEM_MANAGEMENT_UNIT_NOT_FOUND",
|
|
36
36
|
(identifier: string) => `Referenced unit does not exist or is inactive: ${identifier}`,
|
|
37
37
|
);
|
|
38
38
|
|
|
39
39
|
export const DuplicateNodeCodeError = createDomainError(
|
|
40
|
-
"DuplicateNodeCodeError", "
|
|
40
|
+
"DuplicateNodeCodeError", "ITEM_MANAGEMENT_DUPLICATE_NODE_CODE",
|
|
41
41
|
(identifier: string) => `A node with the same code already exists: ${identifier}`,
|
|
42
42
|
);
|
|
43
43
|
|
|
44
44
|
export const ParentNodeNotFoundError = createDomainError(
|
|
45
|
-
"ParentNodeNotFoundError", "
|
|
45
|
+
"ParentNodeNotFoundError", "ITEM_MANAGEMENT_PARENT_NODE_NOT_FOUND",
|
|
46
46
|
(identifier: string) => `Specified parent node ID does not exist: ${identifier}`,
|
|
47
47
|
);
|
|
48
48
|
|
|
49
49
|
export const MaxDepthExceededError = createDomainError(
|
|
50
|
-
"MaxDepthExceededError", "
|
|
50
|
+
"MaxDepthExceededError", "ITEM_MANAGEMENT_MAX_DEPTH_EXCEEDED",
|
|
51
51
|
(identifier: string) => `Adding this child would exceed the configurable tree depth limit: ${identifier}`,
|
|
52
52
|
);
|
|
53
53
|
|
|
54
54
|
export const DeleteNonDraftError = createDomainError(
|
|
55
|
-
"DeleteNonDraftError", "
|
|
55
|
+
"DeleteNonDraftError", "ITEM_MANAGEMENT_DELETE_NON_DRAFT",
|
|
56
56
|
(identifier: string) => `Item is in ACTIVE or INACTIVE status — only DRAFT items can be deleted: ${identifier}`,
|
|
57
57
|
);
|
|
58
58
|
|
|
59
59
|
export const NodeHasChildrenError = createDomainError(
|
|
60
|
-
"NodeHasChildrenError", "
|
|
60
|
+
"NodeHasChildrenError", "ITEM_MANAGEMENT_NODE_HAS_CHILDREN",
|
|
61
61
|
(identifier: string) => `Node has one or more child nodes — children must be moved or deleted first: ${identifier}`,
|
|
62
62
|
);
|
|
63
63
|
|
|
64
64
|
export const NodeHasAssignmentsError = createDomainError(
|
|
65
|
-
"NodeHasAssignmentsError", "
|
|
65
|
+
"NodeHasAssignmentsError", "ITEM_MANAGEMENT_NODE_HAS_ASSIGNMENTS",
|
|
66
66
|
(identifier: string) => `Node has one or more item assignments — assignments must be removed first: ${identifier}`,
|
|
67
67
|
);
|
|
68
68
|
|
|
69
69
|
export const CircularReferenceError = createDomainError(
|
|
70
|
-
"CircularReferenceError", "
|
|
70
|
+
"CircularReferenceError", "ITEM_MANAGEMENT_CIRCULAR_REFERENCE",
|
|
71
71
|
(identifier: string) => `New parent is the node itself or one of its descendants: ${identifier}`,
|
|
72
72
|
);
|
|
73
73
|
|
|
74
74
|
export const AssignmentNotFoundError = createDomainError(
|
|
75
|
-
"AssignmentNotFoundError", "
|
|
75
|
+
"AssignmentNotFoundError", "ITEM_MANAGEMENT_ASSIGNMENT_NOT_FOUND",
|
|
76
76
|
(identifier: string) => `No assignment exists for the specified item and taxonomy node combination: ${identifier}`,
|
|
77
77
|
);
|
|
78
78
|
|
|
79
79
|
export const SkuImmutableError = createDomainError(
|
|
80
|
-
"SkuImmutableError", "
|
|
80
|
+
"SkuImmutableError", "ITEM_MANAGEMENT_SKU_IMMUTABLE",
|
|
81
81
|
(identifier: string) => `Attempt to change the SKU field: ${identifier}`,
|
|
82
82
|
);
|
|
83
83
|
|
|
84
84
|
export const UomLockedError = createDomainError(
|
|
85
|
-
"UomLockedError", "
|
|
85
|
+
"UomLockedError", "ITEM_MANAGEMENT_UOM_LOCKED",
|
|
86
86
|
(identifier: string) => `UoM cannot be changed after item has been activated (status is ACTIVE or INACTIVE): ${identifier}`,
|
|
87
87
|
);
|
|
88
88
|
|
|
89
89
|
export const NoFieldsToUpdateError = createDomainError(
|
|
90
|
-
"NoFieldsToUpdateError", "
|
|
90
|
+
"NoFieldsToUpdateError", "ITEM_MANAGEMENT_NO_FIELDS_TO_UPDATE",
|
|
91
91
|
(identifier: string) => `No updatable fields were provided in the request: ${identifier}`,
|
|
92
92
|
);
|
|
93
93
|
|
|
94
94
|
export const CodeImmutableError = createDomainError(
|
|
95
|
-
"CodeImmutableError", "
|
|
95
|
+
"CodeImmutableError", "ITEM_MANAGEMENT_CODE_IMMUTABLE",
|
|
96
96
|
(identifier: string) => `Attempt to change the node code: ${identifier}`,
|
|
97
97
|
);
|
|
98
98
|
|
|
99
99
|
export const MissingRequiredFieldsError = createDomainError(
|
|
100
|
-
"MissingRequiredFieldsError", "
|
|
100
|
+
"MissingRequiredFieldsError", "ITEM_MANAGEMENT_MISSING_REQUIRED_FIELDS",
|
|
101
101
|
(identifier: string) => `Name not provided or empty: ${identifier}`,
|
|
102
102
|
);
|
|
103
103
|
|
|
104
104
|
export const SelfReferenceError = createDomainError(
|
|
105
|
-
"SelfReferenceError", "
|
|
105
|
+
"SelfReferenceError", "ITEM_MANAGEMENT_SELF_REFERENCE",
|
|
106
106
|
(identifier: string) => `Node is moved to itself as parent — returns isCircular: true: ${identifier}`,
|
|
107
107
|
);
|
|
108
108
|
|
|
109
109
|
export const NoAssignmentsError = createDomainError(
|
|
110
|
-
"NoAssignmentsError", "
|
|
110
|
+
"NoAssignmentsError", "ITEM_MANAGEMENT_NO_ASSIGNMENTS",
|
|
111
111
|
(identifier: string) => `No item assignments exist for the given node — caller receives empty array: ${identifier}`,
|
|
112
112
|
);
|
|
113
113
|
|
|
114
114
|
export const NoChildrenError = createDomainError(
|
|
115
|
-
"NoChildrenError", "
|
|
115
|
+
"NoChildrenError", "ITEM_MANAGEMENT_NO_CHILDREN",
|
|
116
116
|
(identifier: string) => `No child nodes exist for the given parent — caller receives empty array: ${identifier}`,
|
|
117
117
|
);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { InferSchema, Selectable, Insertable, Updateable } from "
|
|
1
|
+
import type { InferSchema, Selectable, Insertable, Updateable } from "../../../shared";
|
|
2
2
|
import type { DB } from "../generated/kysely-tailordb";
|
|
3
3
|
|
|
4
4
|
export type Schema = InferSchema<DB>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type TailorAnyDBField } from "@tailor-platform/sdk";
|
|
2
|
-
import { type EmptyFields, type FieldsToInsertable } from "
|
|
2
|
+
import { type EmptyFields, type FieldsToInsertable } from "../../shared";
|
|
3
3
|
import type { defineModule as definePrimitivesModule } from "../primitives";
|
|
4
4
|
import { createItem } from "./command/createItem.generated";
|
|
5
5
|
import { updateItem } from "./command/updateItem.generated";
|