@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,9 +1,6 @@
|
|
|
1
|
-
import { ok, err
|
|
2
|
-
import {
|
|
1
|
+
import { ok, err } from "../../../shared";
|
|
2
|
+
import { Transaction } from "../generated/kysely-tailordb";
|
|
3
3
|
import { UnitNotFoundError, UnitNotInCategoryError } from "../lib/errors.generated";
|
|
4
|
-
import { getUnit } from "../query/getUnit.generated";
|
|
5
|
-
import { getUoMCategory } from "../query/getUoMCategory.generated";
|
|
6
|
-
import { listUnitsByCategory } from "../query/listUnitsByCategory.generated";
|
|
7
4
|
|
|
8
5
|
export interface SetReferenceUnitInput {
|
|
9
6
|
unitId: string;
|
|
@@ -16,9 +13,14 @@ export interface SetReferenceUnitInput {
|
|
|
16
13
|
* Changes the reference unit for a UoM category. All conversion factors
|
|
17
14
|
* are recalculated relative to the new reference unit.
|
|
18
15
|
*/
|
|
19
|
-
export async function run(db:
|
|
16
|
+
export async function run(db: Transaction, input: SetReferenceUnitInput) {
|
|
20
17
|
// 1. Find unit by ID
|
|
21
|
-
const
|
|
18
|
+
const unit = await db
|
|
19
|
+
.selectFrom("Unit")
|
|
20
|
+
.selectAll()
|
|
21
|
+
.where("id", "=", input.unitId)
|
|
22
|
+
.forUpdate()
|
|
23
|
+
.executeTakeFirst();
|
|
22
24
|
|
|
23
25
|
if (!unit) {
|
|
24
26
|
return err(new UnitNotFoundError(input.unitId));
|
|
@@ -30,7 +32,12 @@ export async function run(db: DB, input: SetReferenceUnitInput, ctx: CommandCont
|
|
|
30
32
|
}
|
|
31
33
|
|
|
32
34
|
// 3. Get category
|
|
33
|
-
const
|
|
35
|
+
const uoMCategory = await db
|
|
36
|
+
.selectFrom("UoMCategory")
|
|
37
|
+
.selectAll()
|
|
38
|
+
.where("id", "=", input.categoryId)
|
|
39
|
+
.forUpdate()
|
|
40
|
+
.executeTakeFirst();
|
|
34
41
|
|
|
35
42
|
// 4. If already reference unit, return (idempotent)
|
|
36
43
|
if (uoMCategory?.referenceUnitId === input.unitId && uoMCategory) {
|
|
@@ -38,7 +45,12 @@ export async function run(db: DB, input: SetReferenceUnitInput, ctx: CommandCont
|
|
|
38
45
|
}
|
|
39
46
|
|
|
40
47
|
// 5. Get all units in category for recalculation
|
|
41
|
-
const
|
|
48
|
+
const units = await db
|
|
49
|
+
.selectFrom("Unit")
|
|
50
|
+
.selectAll()
|
|
51
|
+
.where("categoryId", "=", input.categoryId)
|
|
52
|
+
.forUpdate()
|
|
53
|
+
.execute();
|
|
42
54
|
|
|
43
55
|
// 6. Recalculate all conversion factors
|
|
44
56
|
// new_factor = old_factor / new_reference_old_factor
|
|
@@ -39,3 +39,9 @@ flowchart TD
|
|
|
39
39
|
## Error Scenarios
|
|
40
40
|
|
|
41
41
|
- **DUPLICATE_CATEGORY_NAME**: Category with same name already exists
|
|
42
|
+
|
|
43
|
+
## Test Cases
|
|
44
|
+
|
|
45
|
+
- throws when category name already exists
|
|
46
|
+
- creates category with reference unit
|
|
47
|
+
- passes custom fields through to insert
|
|
@@ -44,3 +44,13 @@ flowchart TD
|
|
|
44
44
|
- **INVALID_ISO_CODE**: Code is not exactly 3 uppercase letters
|
|
45
45
|
- **DUPLICATE_CURRENCY_CODE**: Currency with same code already exists
|
|
46
46
|
- **INVALID_DECIMAL_PLACES**: Value is negative or exceeds maximum (typically 4)
|
|
47
|
+
|
|
48
|
+
## Test Cases
|
|
49
|
+
|
|
50
|
+
- throws when ISO code is invalid format
|
|
51
|
+
- throws when ISO code already exists
|
|
52
|
+
- throws when decimal places is negative
|
|
53
|
+
- throws when decimal places exceeds maximum
|
|
54
|
+
- creates first currency as base currency
|
|
55
|
+
- creates subsequent currency as non-base
|
|
56
|
+
- passes custom fields through to insert
|
|
@@ -45,3 +45,14 @@ flowchart TD
|
|
|
45
45
|
- **INACTIVE_CURRENCY**: Source or target currency is inactive
|
|
46
46
|
- **SAME_CURRENCY_PAIR**: Source and target currencies are the same
|
|
47
47
|
- **INVALID_EXCHANGE_RATE**: Rate is zero, negative, or not a valid number
|
|
48
|
+
|
|
49
|
+
## Test Cases
|
|
50
|
+
|
|
51
|
+
- throws when source currency doesn
|
|
52
|
+
- throws when source currency is inactive
|
|
53
|
+
- throws when target currency doesn
|
|
54
|
+
- throws when target currency is inactive
|
|
55
|
+
- throws when source and target are the same
|
|
56
|
+
- throws when rate is not positive
|
|
57
|
+
- creates exchange rate successfully
|
|
58
|
+
- passes custom fields through to insert
|
|
@@ -46,3 +46,13 @@ flowchart TD
|
|
|
46
46
|
- **DUPLICATE_UNIT_SYMBOL**: Unit with same symbol already exists in category
|
|
47
47
|
- **INVALID_CONVERSION_FACTOR**: Factor is zero, negative, or not a valid number
|
|
48
48
|
- **INVALID_ROUNDING_PRECISION**: Precision is negative
|
|
49
|
+
|
|
50
|
+
## Test Cases
|
|
51
|
+
|
|
52
|
+
- throws when category doesn
|
|
53
|
+
- throws when category is inactive
|
|
54
|
+
- throws when symbol already exists in category
|
|
55
|
+
- throws when conversion factor is not positive
|
|
56
|
+
- throws when rounding precision is negative
|
|
57
|
+
- creates unit successfully
|
|
58
|
+
- passes custom fields through to insert
|
|
@@ -35,3 +35,10 @@ flowchart TD
|
|
|
35
35
|
|
|
36
36
|
- **UOM_CATEGORY_NOT_FOUND**: Specified category ID does not exist
|
|
37
37
|
- **CATEGORY_HAS_ACTIVE_UNITS**: Category still contains active units that must be deactivated first
|
|
38
|
+
|
|
39
|
+
## Test Cases
|
|
40
|
+
|
|
41
|
+
- throws when category doesn
|
|
42
|
+
- throws when category has active units
|
|
43
|
+
- returns category unchanged when already inactive
|
|
44
|
+
- deactivates active category with no active units
|
|
@@ -35,3 +35,10 @@ flowchart TD
|
|
|
35
35
|
|
|
36
36
|
- **CURRENCY_NOT_FOUND**: Specified currency ID does not exist
|
|
37
37
|
- **CANNOT_DEACTIVATE_BASE_CURRENCY**: Attempting to deactivate the base currency, must change base currency first
|
|
38
|
+
|
|
39
|
+
## Test Cases
|
|
40
|
+
|
|
41
|
+
- throws when currency doesn
|
|
42
|
+
- throws when attempting to deactivate base currency
|
|
43
|
+
- returns currency unchanged when already inactive
|
|
44
|
+
- deactivates active non-base currency
|
|
@@ -35,3 +35,10 @@ flowchart TD
|
|
|
35
35
|
|
|
36
36
|
- **UNIT_NOT_FOUND**: Specified unit ID does not exist
|
|
37
37
|
- **CANNOT_DEACTIVATE_REFERENCE_UNIT**: Attempting to deactivate the category's reference unit, must change reference unit first
|
|
38
|
+
|
|
39
|
+
## Test Cases
|
|
40
|
+
|
|
41
|
+
- throws when unit doesn
|
|
42
|
+
- throws when attempting to deactivate reference unit
|
|
43
|
+
- returns unit unchanged when already inactive
|
|
44
|
+
- deactivates active non-reference unit
|
|
@@ -36,3 +36,10 @@ flowchart TD
|
|
|
36
36
|
|
|
37
37
|
- **CURRENCY_NOT_FOUND**: Specified currency ID does not exist
|
|
38
38
|
- **CANNOT_SET_INACTIVE_AS_BASE_CURRENCY**: Target currency is not in Active status, must be activated first
|
|
39
|
+
|
|
40
|
+
## Test Cases
|
|
41
|
+
|
|
42
|
+
- throws when currency doesn
|
|
43
|
+
- throws when currency is inactive
|
|
44
|
+
- returns currency unchanged when already base
|
|
45
|
+
- changes base currency
|
|
@@ -40,3 +40,10 @@ flowchart TD
|
|
|
40
40
|
|
|
41
41
|
- **UNIT_NOT_FOUND**: Specified unit ID does not exist
|
|
42
42
|
- **UNIT_NOT_IN_CATEGORY**: Unit belongs to a different category than specified
|
|
43
|
+
|
|
44
|
+
## Test Cases
|
|
45
|
+
|
|
46
|
+
- throws when unit doesn
|
|
47
|
+
- throws when unit is not in specified category
|
|
48
|
+
- returns category unchanged when unit is already reference
|
|
49
|
+
- changes reference unit and recalculates conversion factors
|
|
@@ -46,3 +46,17 @@ flowchart TD
|
|
|
46
46
|
- **INACTIVE_CURRENCY**: Either source or target currency is inactive
|
|
47
47
|
- **EXCHANGE_RATE_NOT_FOUND**: No rate found for the currency pair on or before the specified date
|
|
48
48
|
- **CURRENCY_NOT_FOUND**: Specified currency code/ID does not exist
|
|
49
|
+
|
|
50
|
+
## Test Cases
|
|
51
|
+
|
|
52
|
+
- returns error when source currency doesn
|
|
53
|
+
- returns error when target currency doesn
|
|
54
|
+
- returns error when source currency is inactive
|
|
55
|
+
- returns error when target currency is inactive
|
|
56
|
+
- returns error when no exchange rate exists for the currency pair
|
|
57
|
+
- returns same amount when source and target are the same currency
|
|
58
|
+
- converts USD to EUR using direct rate
|
|
59
|
+
- uses inverse rate when no direct rate exists
|
|
60
|
+
- uses most recent rate on or before the conversion date
|
|
61
|
+
- rounds to target currency decimal places (JPY has 0)
|
|
62
|
+
- handles zero amount correctly
|
|
@@ -39,3 +39,16 @@ flowchart TD
|
|
|
39
39
|
- **INCOMPATIBLE_UNITS**: Source and target units belong to different categories
|
|
40
40
|
- **INACTIVE_UNIT**: Either source or target unit is inactive
|
|
41
41
|
- **UNIT_NOT_FOUND**: Specified unit ID does not exist
|
|
42
|
+
|
|
43
|
+
## Test Cases
|
|
44
|
+
|
|
45
|
+
- returns error when source unit doesn
|
|
46
|
+
- returns error when target unit doesn
|
|
47
|
+
- returns error when source unit is inactive
|
|
48
|
+
- returns error when target unit is inactive
|
|
49
|
+
- returns error when units belong to different categories
|
|
50
|
+
- returns same quantity when source and target are the same unit
|
|
51
|
+
- converts kg to grams correctly
|
|
52
|
+
- converts grams to kg correctly
|
|
53
|
+
- converts pounds to kg correctly
|
|
54
|
+
- handles zero quantity correctly
|
|
@@ -34,3 +34,10 @@ flowchart TD
|
|
|
34
34
|
## Error Scenarios
|
|
35
35
|
|
|
36
36
|
- None (returns null when not found instead of throwing)
|
|
37
|
+
|
|
38
|
+
## Test Cases
|
|
39
|
+
|
|
40
|
+
- returns currency when found
|
|
41
|
+
- returns null when currency not found
|
|
42
|
+
- returns currency when found
|
|
43
|
+
- returns null when currency not found
|
|
@@ -34,3 +34,10 @@ flowchart TD
|
|
|
34
34
|
## Error Scenarios
|
|
35
35
|
|
|
36
36
|
- None (returns null when not found instead of throwing)
|
|
37
|
+
|
|
38
|
+
## Test Cases
|
|
39
|
+
|
|
40
|
+
- returns category when found
|
|
41
|
+
- returns null when category not found
|
|
42
|
+
- returns category when found
|
|
43
|
+
- returns null when category not found
|
|
@@ -2,19 +2,21 @@
|
|
|
2
2
|
|
|
3
3
|
## Overview
|
|
4
4
|
|
|
5
|
-
ListUnitsByCategory retrieves
|
|
5
|
+
ListUnitsByCategory retrieves paginated units belonging to a specific UoM category. Used to find related units within a category and to validate category constraints such as ensuring a category has units before deactivation.
|
|
6
6
|
|
|
7
7
|
## Business Rules
|
|
8
8
|
|
|
9
|
-
- Returns
|
|
10
|
-
- Returns empty
|
|
9
|
+
- Returns paginated units with the matching categoryId
|
|
10
|
+
- Returns empty result if no units match
|
|
11
|
+
- Supports limit, offset, orderBy, and orderDirection parameters
|
|
12
|
+
- Indicates whether more results exist via hasNextPage
|
|
11
13
|
|
|
12
14
|
## Process Flow
|
|
13
15
|
|
|
14
16
|
```mermaid
|
|
15
17
|
flowchart TD
|
|
16
|
-
A[Receive categoryId] --> B[SELECT from Unit where categoryId = input]
|
|
17
|
-
B --> C[
|
|
18
|
+
A[Receive categoryId and pagination params] --> B[SELECT from Unit where categoryId = input with limit+1, offset, order]
|
|
19
|
+
B --> C[Build paginated result with items and hasNextPage]
|
|
18
20
|
```
|
|
19
21
|
|
|
20
22
|
## External Dependencies
|
|
@@ -24,3 +26,11 @@ flowchart TD
|
|
|
24
26
|
## Error Scenarios
|
|
25
27
|
|
|
26
28
|
- None
|
|
29
|
+
|
|
30
|
+
## Test Cases
|
|
31
|
+
|
|
32
|
+
- returns paginated units with default page size
|
|
33
|
+
- returns hasNextPage true when more results exist
|
|
34
|
+
- returns empty result when no units match
|
|
35
|
+
- respects custom limit and offset
|
|
36
|
+
- accepts orderBy and orderDirection
|
|
@@ -1,51 +1,2 @@
|
|
|
1
1
|
export { defineModule } from "./module";
|
|
2
2
|
export { permissions, own, all } from "./lib/permissions.generated";
|
|
3
|
-
|
|
4
|
-
// errors
|
|
5
|
-
export {
|
|
6
|
-
UomCategoryNotFoundError,
|
|
7
|
-
UnitNotFoundError,
|
|
8
|
-
IncompatibleUnitsError,
|
|
9
|
-
InactiveUnitError,
|
|
10
|
-
CurrencyNotFoundError,
|
|
11
|
-
InactiveCurrencyError,
|
|
12
|
-
ExchangeRateNotFoundError,
|
|
13
|
-
CannotDeactivateReferenceUnitError,
|
|
14
|
-
CategoryNotActiveError,
|
|
15
|
-
DuplicateUnitSymbolError,
|
|
16
|
-
InvalidConversionFactorError,
|
|
17
|
-
InvalidRoundingPrecisionError,
|
|
18
|
-
DuplicateCategoryNameError,
|
|
19
|
-
CategoryHasActiveUnitsError,
|
|
20
|
-
UnitNotInCategoryError,
|
|
21
|
-
InvalidIsoCodeError,
|
|
22
|
-
DuplicateCurrencyCodeError,
|
|
23
|
-
InvalidDecimalPlacesError,
|
|
24
|
-
CannotDeactivateBaseCurrencyError,
|
|
25
|
-
CannotSetInactiveAsBaseCurrencyError,
|
|
26
|
-
SameCurrencyPairError,
|
|
27
|
-
InvalidExchangeRateError,
|
|
28
|
-
} from "./lib/errors.generated";
|
|
29
|
-
|
|
30
|
-
// queries
|
|
31
|
-
export { getUnit } from "./query/getUnit.generated";
|
|
32
|
-
export { getCurrency } from "./query/getCurrency.generated";
|
|
33
|
-
export { getUoMCategory } from "./query/getUoMCategory.generated";
|
|
34
|
-
export { getBaseCurrency } from "./query/getBaseCurrency.generated";
|
|
35
|
-
export { listUnitsByCategory } from "./query/listUnitsByCategory.generated";
|
|
36
|
-
|
|
37
|
-
// input types
|
|
38
|
-
export { type GetUnitInput } from "./query/getUnit";
|
|
39
|
-
export { type GetCurrencyInput } from "./query/getCurrency";
|
|
40
|
-
export { type GetUoMCategoryInput } from "./query/getUoMCategory";
|
|
41
|
-
export { type ListUnitsByCategoryInput } from "./query/listUnitsByCategory";
|
|
42
|
-
export { type ConvertQuantityInput } from "./query/convertQuantity";
|
|
43
|
-
export { type ActivateCategoryInput } from "./command/activateCategory";
|
|
44
|
-
export { type DeactivateCategoryInput } from "./command/deactivateCategory";
|
|
45
|
-
export { type SetReferenceUnitInput } from "./command/setReferenceUnit";
|
|
46
|
-
export { type ActivateUnitInput } from "./command/activateUnit";
|
|
47
|
-
export { type DeactivateUnitInput } from "./command/deactivateUnit";
|
|
48
|
-
export { type ConvertAmountInput } from "./query/convertAmount";
|
|
49
|
-
export { type ActivateCurrencyInput } from "./command/activateCurrency";
|
|
50
|
-
export { type DeactivateCurrencyInput } from "./command/deactivateCurrency";
|
|
51
|
-
export { type SetBaseCurrencyInput } from "./command/setBaseCurrency";
|
|
@@ -1,112 +1,112 @@
|
|
|
1
1
|
// @generated — do not edit
|
|
2
|
-
import { createDomainError } from "
|
|
2
|
+
import { createDomainError } from "../../../shared";
|
|
3
3
|
|
|
4
4
|
export const UomCategoryNotFoundError = createDomainError(
|
|
5
|
-
"UomCategoryNotFoundError", "
|
|
5
|
+
"UomCategoryNotFoundError", "PRIMITIVES_UOM_CATEGORY_NOT_FOUND",
|
|
6
6
|
(identifier: string) => `Specified category ID does not exist: ${identifier}`,
|
|
7
7
|
);
|
|
8
8
|
|
|
9
9
|
export const CurrencyNotFoundError = createDomainError(
|
|
10
|
-
"CurrencyNotFoundError", "
|
|
10
|
+
"CurrencyNotFoundError", "PRIMITIVES_CURRENCY_NOT_FOUND",
|
|
11
11
|
(identifier: string) => `Specified currency ID does not exist: ${identifier}`,
|
|
12
12
|
);
|
|
13
13
|
|
|
14
14
|
export const UnitNotFoundError = createDomainError(
|
|
15
|
-
"UnitNotFoundError", "
|
|
15
|
+
"UnitNotFoundError", "PRIMITIVES_UNIT_NOT_FOUND",
|
|
16
16
|
(identifier: string) => `Specified unit ID does not exist: ${identifier}`,
|
|
17
17
|
);
|
|
18
18
|
|
|
19
19
|
export const DuplicateCategoryNameError = createDomainError(
|
|
20
|
-
"DuplicateCategoryNameError", "
|
|
20
|
+
"DuplicateCategoryNameError", "PRIMITIVES_DUPLICATE_CATEGORY_NAME",
|
|
21
21
|
(identifier: string) => `Category with same name already exists: ${identifier}`,
|
|
22
22
|
);
|
|
23
23
|
|
|
24
24
|
export const InvalidIsoCodeError = createDomainError(
|
|
25
|
-
"InvalidIsoCodeError", "
|
|
25
|
+
"InvalidIsoCodeError", "PRIMITIVES_INVALID_ISO_CODE",
|
|
26
26
|
(identifier: string) => `Code is not exactly 3 uppercase letters: ${identifier}`,
|
|
27
27
|
);
|
|
28
28
|
|
|
29
29
|
export const DuplicateCurrencyCodeError = createDomainError(
|
|
30
|
-
"DuplicateCurrencyCodeError", "
|
|
30
|
+
"DuplicateCurrencyCodeError", "PRIMITIVES_DUPLICATE_CURRENCY_CODE",
|
|
31
31
|
(identifier: string) => `Currency with same code already exists: ${identifier}`,
|
|
32
32
|
);
|
|
33
33
|
|
|
34
34
|
export const InvalidDecimalPlacesError = createDomainError(
|
|
35
|
-
"InvalidDecimalPlacesError", "
|
|
35
|
+
"InvalidDecimalPlacesError", "PRIMITIVES_INVALID_DECIMAL_PLACES",
|
|
36
36
|
(identifier: string) => `Value is negative or exceeds maximum (typically 4): ${identifier}`,
|
|
37
37
|
);
|
|
38
38
|
|
|
39
39
|
export const InactiveCurrencyError = createDomainError(
|
|
40
|
-
"InactiveCurrencyError", "
|
|
40
|
+
"InactiveCurrencyError", "PRIMITIVES_INACTIVE_CURRENCY",
|
|
41
41
|
(identifier: string) => `Source or target currency is inactive: ${identifier}`,
|
|
42
42
|
);
|
|
43
43
|
|
|
44
44
|
export const SameCurrencyPairError = createDomainError(
|
|
45
|
-
"SameCurrencyPairError", "
|
|
45
|
+
"SameCurrencyPairError", "PRIMITIVES_SAME_CURRENCY_PAIR",
|
|
46
46
|
(identifier: string) => `Source and target currencies are the same: ${identifier}`,
|
|
47
47
|
);
|
|
48
48
|
|
|
49
49
|
export const InvalidExchangeRateError = createDomainError(
|
|
50
|
-
"InvalidExchangeRateError", "
|
|
50
|
+
"InvalidExchangeRateError", "PRIMITIVES_INVALID_EXCHANGE_RATE",
|
|
51
51
|
(identifier: string) => `Rate is zero, negative, or not a valid number: ${identifier}`,
|
|
52
52
|
);
|
|
53
53
|
|
|
54
54
|
export const CategoryNotActiveError = createDomainError(
|
|
55
|
-
"CategoryNotActiveError", "
|
|
55
|
+
"CategoryNotActiveError", "PRIMITIVES_CATEGORY_NOT_ACTIVE",
|
|
56
56
|
(identifier: string) => `Category is inactive: ${identifier}`,
|
|
57
57
|
);
|
|
58
58
|
|
|
59
59
|
export const DuplicateUnitSymbolError = createDomainError(
|
|
60
|
-
"DuplicateUnitSymbolError", "
|
|
60
|
+
"DuplicateUnitSymbolError", "PRIMITIVES_DUPLICATE_UNIT_SYMBOL",
|
|
61
61
|
(identifier: string) => `Unit with same symbol already exists in category: ${identifier}`,
|
|
62
62
|
);
|
|
63
63
|
|
|
64
64
|
export const InvalidConversionFactorError = createDomainError(
|
|
65
|
-
"InvalidConversionFactorError", "
|
|
65
|
+
"InvalidConversionFactorError", "PRIMITIVES_INVALID_CONVERSION_FACTOR",
|
|
66
66
|
(identifier: string) => `Factor is zero, negative, or not a valid number: ${identifier}`,
|
|
67
67
|
);
|
|
68
68
|
|
|
69
69
|
export const InvalidRoundingPrecisionError = createDomainError(
|
|
70
|
-
"InvalidRoundingPrecisionError", "
|
|
70
|
+
"InvalidRoundingPrecisionError", "PRIMITIVES_INVALID_ROUNDING_PRECISION",
|
|
71
71
|
(identifier: string) => `Precision is negative: ${identifier}`,
|
|
72
72
|
);
|
|
73
73
|
|
|
74
74
|
export const CategoryHasActiveUnitsError = createDomainError(
|
|
75
|
-
"CategoryHasActiveUnitsError", "
|
|
75
|
+
"CategoryHasActiveUnitsError", "PRIMITIVES_CATEGORY_HAS_ACTIVE_UNITS",
|
|
76
76
|
(identifier: string) => `Category still contains active units that must be deactivated first: ${identifier}`,
|
|
77
77
|
);
|
|
78
78
|
|
|
79
79
|
export const CannotDeactivateBaseCurrencyError = createDomainError(
|
|
80
|
-
"CannotDeactivateBaseCurrencyError", "
|
|
80
|
+
"CannotDeactivateBaseCurrencyError", "PRIMITIVES_CANNOT_DEACTIVATE_BASE_CURRENCY",
|
|
81
81
|
(identifier: string) => `Attempting to deactivate the base currency, must change base currency first: ${identifier}`,
|
|
82
82
|
);
|
|
83
83
|
|
|
84
84
|
export const CannotDeactivateReferenceUnitError = createDomainError(
|
|
85
|
-
"CannotDeactivateReferenceUnitError", "
|
|
85
|
+
"CannotDeactivateReferenceUnitError", "PRIMITIVES_CANNOT_DEACTIVATE_REFERENCE_UNIT",
|
|
86
86
|
(identifier: string) => `Attempting to deactivate the category's reference unit, must change reference unit first: ${identifier}`,
|
|
87
87
|
);
|
|
88
88
|
|
|
89
89
|
export const CannotSetInactiveAsBaseCurrencyError = createDomainError(
|
|
90
|
-
"CannotSetInactiveAsBaseCurrencyError", "
|
|
90
|
+
"CannotSetInactiveAsBaseCurrencyError", "PRIMITIVES_CANNOT_SET_INACTIVE_AS_BASE_CURRENCY",
|
|
91
91
|
(identifier: string) => `Target currency is not in Active status, must be activated first: ${identifier}`,
|
|
92
92
|
);
|
|
93
93
|
|
|
94
94
|
export const UnitNotInCategoryError = createDomainError(
|
|
95
|
-
"UnitNotInCategoryError", "
|
|
95
|
+
"UnitNotInCategoryError", "PRIMITIVES_UNIT_NOT_IN_CATEGORY",
|
|
96
96
|
(identifier: string) => `Unit belongs to a different category than specified: ${identifier}`,
|
|
97
97
|
);
|
|
98
98
|
|
|
99
99
|
export const ExchangeRateNotFoundError = createDomainError(
|
|
100
|
-
"ExchangeRateNotFoundError", "
|
|
100
|
+
"ExchangeRateNotFoundError", "PRIMITIVES_EXCHANGE_RATE_NOT_FOUND",
|
|
101
101
|
(identifier: string) => `No rate found for the currency pair on or before the specified date: ${identifier}`,
|
|
102
102
|
);
|
|
103
103
|
|
|
104
104
|
export const IncompatibleUnitsError = createDomainError(
|
|
105
|
-
"IncompatibleUnitsError", "
|
|
105
|
+
"IncompatibleUnitsError", "PRIMITIVES_INCOMPATIBLE_UNITS",
|
|
106
106
|
(identifier: string) => `Source and target units belong to different categories: ${identifier}`,
|
|
107
107
|
);
|
|
108
108
|
|
|
109
109
|
export const InactiveUnitError = createDomainError(
|
|
110
|
-
"InactiveUnitError", "
|
|
110
|
+
"InactiveUnitError", "PRIMITIVES_INACTIVE_UNIT",
|
|
111
111
|
(identifier: string) => `Either source or target unit is inactive: ${identifier}`,
|
|
112
112
|
);
|
|
@@ -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 { createCategory } from "./command/createCategory.generated";
|
|
4
4
|
import { createCurrency } from "./command/createCurrency.generated";
|
|
5
5
|
import { createUnit } from "./command/createUnit.generated";
|