@tailor-platform/erp-kit 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +21 -0
- package/README.md +35 -7
- package/dist/cli.mjs +779 -268
- package/package.json +5 -4
- package/skills/erp-kit-app-1-requirements/SKILL.md +8 -9
- package/skills/erp-kit-app-2-requirements-review/references/best-practices-check.md +4 -0
- package/skills/erp-kit-app-2-requirements-review/references/boundary-consistency-check.md +4 -0
- package/skills/erp-kit-app-3-plan/SKILL.md +27 -27
- package/skills/erp-kit-app-3-plan/references/resolver-extraction.md +21 -17
- package/skills/erp-kit-app-3-plan/references/screen-extraction.md +15 -1
- package/skills/erp-kit-app-3-plan/references/story-extraction.md +8 -2
- package/skills/erp-kit-app-5-impl-backend/SKILL.md +9 -11
- package/skills/erp-kit-app-5-impl-backend/references/app-config.md +1 -22
- package/skills/erp-kit-app-5-impl-backend/references/module-wiring.md +0 -1
- package/skills/erp-kit-app-5-impl-backend/references/resolver-patterns.md +13 -4
- package/skills/erp-kit-app-6-impl-frontend/SKILL.md +5 -0
- package/skills/erp-kit-app-6-impl-frontend/references/pages.md +16 -46
- package/skills/erp-kit-app-7-impl-review/SKILL.md +13 -11
- package/skills/erp-kit-app-7-impl-review/references/resolver-doc-code-parity.md +16 -17
- package/skills/erp-kit-module-1-requirements/SKILL.md +6 -12
- package/skills/erp-kit-module-2-requirements-review/SKILL.md +21 -5
- package/skills/erp-kit-module-2-requirements-review/references/requirements-report-format.md +19 -0
- package/skills/erp-kit-module-3-plan/SKILL.md +2 -4
- package/skills/erp-kit-module-4-plan-review/SKILL.md +21 -5
- package/skills/erp-kit-module-4-plan-review/references/parity-report-format.md +15 -0
- package/skills/erp-kit-module-6-impl-review/SKILL.md +21 -7
- package/skills/erp-kit-module-6-impl-review/references/impl-parity-report-format.md +15 -0
- package/skills/erp-kit-module-shared/SKILL.md +4 -0
- package/src/commands/app/index.ts +28 -17
- package/src/commands/check.test.ts +1 -1
- package/src/commands/check.ts +2 -35
- package/src/commands/doc/index.ts +83 -0
- package/src/commands/doc/module.test.ts +119 -0
- package/src/commands/doc/module.ts +114 -0
- package/src/commands/doc/modules.test.ts +103 -0
- package/src/commands/doc/modules.ts +98 -0
- package/src/commands/doc/search.test.ts +94 -0
- package/src/commands/doc/search.ts +111 -0
- package/src/commands/generate-doc.ts +17 -10
- package/src/commands/index.ts +20 -8
- package/src/commands/lib/command-result.ts +30 -0
- package/src/commands/lib/discovery.test.ts +74 -0
- package/src/commands/lib/discovery.ts +106 -0
- package/src/commands/lib/paths.ts +22 -0
- package/src/commands/lib/sync-check-source.test.ts +197 -0
- package/src/commands/lib/sync-check-source.ts +100 -0
- package/src/commands/lib/sync-check-tests.test.ts +178 -0
- package/src/commands/lib/sync-check-tests.ts +69 -0
- package/src/commands/mock/index.ts +11 -6
- package/src/commands/module/generate.ts +13 -8
- package/src/commands/module/index.ts +17 -21
- package/src/commands/parse-doc-test-cases.ts +13 -2
- package/src/commands/sync-check.test.ts +6 -364
- package/src/commands/sync-check.ts +7 -251
- package/src/generator/generate-app-code.test.ts +121 -0
- package/src/generator/generate-app-code.ts +51 -0
- package/src/generator/generate-code-boilerplate.test.ts +1 -1
- package/src/generator/generate-code.test.ts +33 -6
- package/src/generator/generate-code.ts +12 -226
- package/src/generator/generate-errors.ts +34 -0
- package/src/generator/generate-permissions.ts +12 -0
- package/src/generator/generate-shells.ts +28 -0
- package/src/generator/generate-stubs.ts +31 -0
- package/src/generator/parse-resolver-doc.test.ts +89 -0
- package/src/generator/parse-resolver-doc.ts +125 -0
- package/src/generator/scaffold.ts +57 -0
- package/src/generator/stub-templates.test.ts +55 -0
- package/src/generator/stub-templates.ts +145 -0
- package/src/modules/audit/README.md +46 -0
- package/src/modules/audit/command/activateAuditPolicy.generated.ts +6 -0
- package/src/modules/audit/command/activateAuditPolicy.test.ts +186 -0
- package/src/modules/audit/command/activateAuditPolicy.ts +97 -0
- package/src/modules/audit/command/createAuditPolicy.generated.ts +6 -0
- package/src/modules/audit/command/createAuditPolicy.test.ts +395 -0
- package/src/modules/audit/command/createAuditPolicy.ts +131 -0
- package/src/modules/audit/command/deactivateAuditPolicy.generated.ts +6 -0
- package/src/modules/audit/command/deactivateAuditPolicy.test.ts +138 -0
- package/src/modules/audit/command/deactivateAuditPolicy.ts +58 -0
- package/src/modules/audit/command/deleteAuditPolicy.generated.ts +6 -0
- package/src/modules/audit/command/deleteAuditPolicy.test.ts +121 -0
- package/src/modules/audit/command/deleteAuditPolicy.ts +52 -0
- package/src/modules/audit/command/logAuditEvent.generated.ts +6 -0
- package/src/modules/audit/command/logAuditEvent.test.ts +991 -0
- package/src/modules/audit/command/logAuditEvent.ts +357 -0
- package/src/modules/audit/command/reactivateAuditPolicy.generated.ts +6 -0
- package/src/modules/audit/command/reactivateAuditPolicy.test.ts +143 -0
- package/src/modules/audit/command/reactivateAuditPolicy.ts +79 -0
- package/src/modules/audit/command/registerAuditableEntity.generated.ts +6 -0
- package/src/modules/audit/command/registerAuditableEntity.test.ts +268 -0
- package/src/modules/audit/command/registerAuditableEntity.ts +94 -0
- package/src/modules/audit/command/replaceAuditPolicy.generated.ts +6 -0
- package/src/modules/audit/command/replaceAuditPolicy.test.ts +242 -0
- package/src/modules/audit/command/replaceAuditPolicy.ts +91 -0
- package/src/modules/audit/command/updateAuditPolicy.generated.ts +6 -0
- package/src/modules/audit/command/updateAuditPolicy.test.ts +284 -0
- package/src/modules/audit/command/updateAuditPolicy.ts +151 -0
- package/src/modules/audit/db/auditEntry.ts +47 -0
- package/src/modules/audit/db/auditPolicy.ts +33 -0
- package/src/modules/audit/db/auditableEntity.ts +22 -0
- package/src/modules/audit/db/changeDetail.ts +28 -0
- package/src/modules/audit/db/policyFieldRule.ts +23 -0
- package/src/modules/audit/docs/commands/ActivateAuditPolicy.md +69 -0
- package/src/modules/audit/docs/commands/CreateAuditPolicy.md +79 -0
- package/src/modules/audit/docs/commands/DeactivateAuditPolicy.md +55 -0
- package/src/modules/audit/docs/commands/DeleteAuditPolicy.md +55 -0
- package/src/modules/audit/docs/commands/LogAuditEvent.md +137 -0
- package/src/modules/audit/docs/commands/ReactivateAuditPolicy.md +58 -0
- package/src/modules/audit/docs/commands/RegisterAuditableEntity.md +62 -0
- package/src/modules/audit/docs/commands/ReplaceAuditPolicy.md +72 -0
- package/src/modules/audit/docs/commands/UpdateAuditPolicy.md +77 -0
- package/src/modules/audit/docs/features/audit-event-logging.md +126 -0
- package/src/modules/audit/docs/features/audit-policy-configuration.md +135 -0
- package/src/modules/audit/docs/features/field-level-change-tracking.md +95 -0
- package/src/modules/audit/docs/models/AuditEntry.md +55 -0
- package/src/modules/audit/docs/models/AuditPolicy.md +79 -0
- package/src/modules/audit/docs/models/AuditableEntity.md +38 -0
- package/src/modules/audit/docs/models/ChangeDetail.md +55 -0
- package/src/modules/audit/docs/models/PolicyFieldRule.md +45 -0
- package/src/modules/audit/docs/queries/GetAuditEntry.md +49 -0
- package/src/modules/audit/docs/queries/GetAuditPolicy.md +54 -0
- package/src/modules/audit/docs/queries/GetAuditSummary.md +84 -0
- package/src/modules/audit/docs/queries/GetChangeDetails.md +56 -0
- package/src/modules/audit/docs/queries/ListAuditPolicies.md +58 -0
- package/src/modules/audit/docs/queries/SearchAuditEntries.md +91 -0
- package/src/modules/audit/generated/kysely-tailordb.ts +92 -0
- package/src/modules/audit/index.ts +2 -0
- package/src/modules/audit/lib/_db_deps.ts +13 -0
- package/src/modules/audit/lib/errors.generated.ts +120 -0
- package/src/modules/audit/lib/permissions.generated.ts +14 -0
- package/src/modules/audit/lib/types.ts +28 -0
- package/src/modules/audit/module.ts +57 -0
- package/src/modules/audit/permissions.ts +39 -0
- package/src/modules/audit/query/getAuditEntry.generated.ts +5 -0
- package/src/modules/audit/query/getAuditEntry.test.ts +123 -0
- package/src/modules/audit/query/getAuditEntry.ts +36 -0
- package/src/modules/audit/query/getAuditPolicy.generated.ts +5 -0
- package/src/modules/audit/query/getAuditPolicy.test.ts +169 -0
- package/src/modules/audit/query/getAuditPolicy.ts +42 -0
- package/src/modules/audit/query/getAuditSummary.generated.ts +5 -0
- package/src/modules/audit/query/getAuditSummary.test.ts +632 -0
- package/src/modules/audit/query/getAuditSummary.ts +164 -0
- package/src/modules/audit/query/getChangeDetails.generated.ts +5 -0
- package/src/modules/audit/query/getChangeDetails.test.ts +195 -0
- package/src/modules/audit/query/getChangeDetails.ts +42 -0
- package/src/modules/audit/query/listAuditPolicies.generated.ts +5 -0
- package/src/modules/audit/query/listAuditPolicies.test.ts +239 -0
- package/src/modules/audit/query/listAuditPolicies.ts +100 -0
- package/src/modules/audit/query/searchAuditEntries.generated.ts +5 -0
- package/src/modules/audit/query/searchAuditEntries.test.ts +424 -0
- package/src/modules/audit/query/searchAuditEntries.ts +121 -0
- package/src/modules/audit/tailor.config.ts +13 -0
- package/src/modules/audit/tailor.d.ts +13 -0
- package/src/modules/audit/testing/fixtures.ts +215 -0
- package/src/modules/business-partner/README.md +60 -0
- package/src/modules/business-partner/command/.gitkeep +0 -0
- package/src/modules/business-partner/command/activatePartner.generated.ts +6 -0
- package/src/modules/business-partner/command/activatePartner.test.ts +59 -0
- package/src/modules/business-partner/command/activatePartner.ts +45 -0
- package/src/modules/business-partner/command/assignRoleToPartner.generated.ts +6 -0
- package/src/modules/business-partner/command/assignRoleToPartner.test.ts +113 -0
- package/src/modules/business-partner/command/assignRoleToPartner.ts +72 -0
- package/src/modules/business-partner/command/createContactPerson.generated.ts +6 -0
- package/src/modules/business-partner/command/createContactPerson.test.ts +193 -0
- package/src/modules/business-partner/command/createContactPerson.ts +98 -0
- package/src/modules/business-partner/command/createPartner.generated.ts +6 -0
- package/src/modules/business-partner/command/createPartner.test.ts +179 -0
- package/src/modules/business-partner/command/createPartner.ts +83 -0
- package/src/modules/business-partner/command/createPartnerAddress.generated.ts +6 -0
- package/src/modules/business-partner/command/createPartnerAddress.test.ts +195 -0
- package/src/modules/business-partner/command/createPartnerAddress.ts +119 -0
- package/src/modules/business-partner/command/createPartnerBankAccount.generated.ts +6 -0
- package/src/modules/business-partner/command/createPartnerBankAccount.test.ts +297 -0
- package/src/modules/business-partner/command/createPartnerBankAccount.ts +114 -0
- package/src/modules/business-partner/command/createPartnerIdentification.generated.ts +6 -0
- package/src/modules/business-partner/command/createPartnerIdentification.test.ts +255 -0
- package/src/modules/business-partner/command/createPartnerIdentification.ts +97 -0
- package/src/modules/business-partner/command/deactivateContactPerson.generated.ts +6 -0
- package/src/modules/business-partner/command/deactivateContactPerson.test.ts +70 -0
- package/src/modules/business-partner/command/deactivateContactPerson.ts +54 -0
- package/src/modules/business-partner/command/deactivatePartner.generated.ts +6 -0
- package/src/modules/business-partner/command/deactivatePartner.test.ts +59 -0
- package/src/modules/business-partner/command/deactivatePartner.ts +46 -0
- package/src/modules/business-partner/command/deleteContactPerson.generated.ts +6 -0
- package/src/modules/business-partner/command/deleteContactPerson.test.ts +61 -0
- package/src/modules/business-partner/command/deleteContactPerson.ts +48 -0
- package/src/modules/business-partner/command/deletePartner.generated.ts +6 -0
- package/src/modules/business-partner/command/deletePartner.test.ts +58 -0
- package/src/modules/business-partner/command/deletePartner.ts +46 -0
- package/src/modules/business-partner/command/deletePartnerAddress.generated.ts +6 -0
- package/src/modules/business-partner/command/deletePartnerAddress.test.ts +74 -0
- package/src/modules/business-partner/command/deletePartnerAddress.ts +52 -0
- package/src/modules/business-partner/command/deletePartnerBankAccount.generated.ts +6 -0
- package/src/modules/business-partner/command/deletePartnerBankAccount.test.ts +55 -0
- package/src/modules/business-partner/command/deletePartnerBankAccount.ts +36 -0
- package/src/modules/business-partner/command/deletePartnerIdentification.generated.ts +6 -0
- package/src/modules/business-partner/command/deletePartnerIdentification.test.ts +47 -0
- package/src/modules/business-partner/command/deletePartnerIdentification.ts +37 -0
- package/src/modules/business-partner/command/reactivateContactPerson.generated.ts +6 -0
- package/src/modules/business-partner/command/reactivateContactPerson.test.ts +48 -0
- package/src/modules/business-partner/command/reactivateContactPerson.ts +48 -0
- package/src/modules/business-partner/command/reactivatePartner.generated.ts +6 -0
- package/src/modules/business-partner/command/reactivatePartner.test.ts +59 -0
- package/src/modules/business-partner/command/reactivatePartner.ts +46 -0
- package/src/modules/business-partner/command/removeRoleFromPartner.generated.ts +6 -0
- package/src/modules/business-partner/command/removeRoleFromPartner.test.ts +82 -0
- package/src/modules/business-partner/command/removeRoleFromPartner.ts +73 -0
- package/src/modules/business-partner/command/setDefaultPartnerAddress.generated.ts +6 -0
- package/src/modules/business-partner/command/setDefaultPartnerAddress.test.ts +60 -0
- package/src/modules/business-partner/command/setDefaultPartnerAddress.ts +48 -0
- package/src/modules/business-partner/command/setDefaultPartnerBankAccount.generated.ts +6 -0
- package/src/modules/business-partner/command/setDefaultPartnerBankAccount.test.ts +56 -0
- package/src/modules/business-partner/command/setDefaultPartnerBankAccount.ts +51 -0
- package/src/modules/business-partner/command/setPrimaryContactPerson.generated.ts +6 -0
- package/src/modules/business-partner/command/setPrimaryContactPerson.test.ts +63 -0
- package/src/modules/business-partner/command/setPrimaryContactPerson.ts +55 -0
- package/src/modules/business-partner/command/updateContactPerson.generated.ts +6 -0
- package/src/modules/business-partner/command/updateContactPerson.test.ts +193 -0
- package/src/modules/business-partner/command/updateContactPerson.ts +92 -0
- package/src/modules/business-partner/command/updatePartner.generated.ts +6 -0
- package/src/modules/business-partner/command/updatePartner.test.ts +101 -0
- package/src/modules/business-partner/command/updatePartner.ts +76 -0
- package/src/modules/business-partner/command/updatePartnerAddress.generated.ts +6 -0
- package/src/modules/business-partner/command/updatePartnerAddress.test.ts +148 -0
- package/src/modules/business-partner/command/updatePartnerAddress.ts +64 -0
- package/src/modules/business-partner/command/updatePartnerBankAccount.generated.ts +6 -0
- package/src/modules/business-partner/command/updatePartnerBankAccount.test.ts +249 -0
- package/src/modules/business-partner/command/updatePartnerBankAccount.ts +109 -0
- package/src/modules/business-partner/command/updatePartnerIdentification.generated.ts +6 -0
- package/src/modules/business-partner/command/updatePartnerIdentification.test.ts +162 -0
- package/src/modules/business-partner/command/updatePartnerIdentification.ts +105 -0
- package/src/modules/business-partner/db/.gitkeep +0 -0
- package/src/modules/business-partner/db/businessPartner.ts +59 -0
- package/src/modules/business-partner/db/contactPerson.ts +49 -0
- package/src/modules/business-partner/db/partnerAddress.ts +45 -0
- package/src/modules/business-partner/db/partnerBankAccount.ts +53 -0
- package/src/modules/business-partner/db/partnerIdentification.ts +53 -0
- package/src/modules/business-partner/db/partnerRole.ts +43 -0
- package/src/modules/business-partner/docs/commands/ActivatePartner.md +39 -0
- package/src/modules/business-partner/docs/commands/AssignRoleToPartner.md +49 -0
- package/src/modules/business-partner/docs/commands/CreateContactPerson.md +59 -0
- package/src/modules/business-partner/docs/commands/CreatePartner.md +54 -0
- package/src/modules/business-partner/docs/commands/CreatePartnerAddress.md +60 -0
- package/src/modules/business-partner/docs/commands/CreatePartnerBankAccount.md +68 -0
- package/src/modules/business-partner/docs/commands/CreatePartnerIdentification.md +59 -0
- package/src/modules/business-partner/docs/commands/DeactivateContactPerson.md +42 -0
- package/src/modules/business-partner/docs/commands/DeactivatePartner.md +39 -0
- package/src/modules/business-partner/docs/commands/DeleteContactPerson.md +43 -0
- package/src/modules/business-partner/docs/commands/DeletePartner.md +40 -0
- package/src/modules/business-partner/docs/commands/DeletePartnerAddress.md +40 -0
- package/src/modules/business-partner/docs/commands/DeletePartnerBankAccount.md +35 -0
- package/src/modules/business-partner/docs/commands/DeletePartnerIdentification.md +33 -0
- package/src/modules/business-partner/docs/commands/ReactivateContactPerson.md +38 -0
- package/src/modules/business-partner/docs/commands/ReactivatePartner.md +39 -0
- package/src/modules/business-partner/docs/commands/RemoveRoleFromPartner.md +46 -0
- package/src/modules/business-partner/docs/commands/SetDefaultPartnerAddress.md +38 -0
- package/src/modules/business-partner/docs/commands/SetDefaultPartnerBankAccount.md +38 -0
- package/src/modules/business-partner/docs/commands/SetPrimaryContactPerson.md +43 -0
- package/src/modules/business-partner/docs/commands/UpdateContactPerson.md +66 -0
- package/src/modules/business-partner/docs/commands/UpdatePartner.md +48 -0
- package/src/modules/business-partner/docs/commands/UpdatePartnerAddress.md +46 -0
- package/src/modules/business-partner/docs/commands/UpdatePartnerBankAccount.md +64 -0
- package/src/modules/business-partner/docs/commands/UpdatePartnerIdentification.md +52 -0
- package/src/modules/business-partner/docs/features/contact-person-management.md +70 -0
- package/src/modules/business-partner/docs/features/partner-address-management.md +96 -0
- package/src/modules/business-partner/docs/features/partner-bank-account.md +70 -0
- package/src/modules/business-partner/docs/features/partner-identification.md +76 -0
- package/src/modules/business-partner/docs/features/partner-lifecycle.md +59 -0
- package/src/modules/business-partner/docs/features/partner-role-classification.md +73 -0
- package/src/modules/business-partner/docs/models/BusinessPartner.md +64 -0
- package/src/modules/business-partner/docs/models/ContactPerson.md +62 -0
- package/src/modules/business-partner/docs/models/PartnerAddress.md +52 -0
- package/src/modules/business-partner/docs/models/PartnerBankAccount.md +50 -0
- package/src/modules/business-partner/docs/models/PartnerIdentification.md +46 -0
- package/src/modules/business-partner/docs/models/PartnerRole.md +42 -0
- package/src/modules/business-partner/docs/queries/GetContactPerson.md +34 -0
- package/src/modules/business-partner/docs/queries/GetDefaultPartnerAddress.md +40 -0
- package/src/modules/business-partner/docs/queries/GetDefaultPartnerBankAccount.md +36 -0
- package/src/modules/business-partner/docs/queries/GetPartner.md +35 -0
- package/src/modules/business-partner/docs/queries/GetPartnerAddress.md +34 -0
- package/src/modules/business-partner/docs/queries/GetPartnerBankAccount.md +34 -0
- package/src/modules/business-partner/docs/queries/GetPartnerIdentification.md +34 -0
- package/src/modules/business-partner/docs/queries/GetPartnerRole.md +34 -0
- package/src/modules/business-partner/docs/queries/GetPrimaryContactPerson.md +36 -0
- package/src/modules/business-partner/docs/queries/ListContactPersonsByPartner.md +39 -0
- package/src/modules/business-partner/docs/queries/ListPartnerAddressesByPartner.md +41 -0
- package/src/modules/business-partner/docs/queries/ListPartnerBankAccountsByPartner.md +39 -0
- package/src/modules/business-partner/docs/queries/ListPartnerIdentificationsByPartner.md +41 -0
- package/src/modules/business-partner/docs/queries/ListPartnersByRole.md +47 -0
- package/src/modules/business-partner/executor/.gitkeep +0 -0
- package/src/modules/business-partner/generated/.gitkeep +0 -0
- package/src/modules/business-partner/generated/enums.ts +60 -0
- package/src/modules/business-partner/generated/kysely-tailordb.ts +114 -0
- package/src/modules/business-partner/index.ts +2 -0
- package/src/modules/business-partner/lib/_db_deps.ts +17 -0
- package/src/modules/business-partner/lib/errors.generated.ts +172 -0
- package/src/modules/business-partner/lib/errors.ts +2 -0
- package/src/modules/business-partner/lib/permissions.generated.ts +30 -0
- package/src/modules/business-partner/lib/types.ts +53 -0
- package/src/modules/business-partner/module.ts +181 -0
- package/src/modules/business-partner/permissions.ts +3 -0
- package/src/modules/business-partner/query/.gitkeep +0 -0
- package/src/modules/business-partner/query/getContactPerson.generated.ts +5 -0
- package/src/modules/business-partner/query/getContactPerson.test.ts +31 -0
- package/src/modules/business-partner/query/getContactPerson.ts +16 -0
- package/src/modules/business-partner/query/getDefaultPartnerAddress.generated.ts +5 -0
- package/src/modules/business-partner/query/getDefaultPartnerAddress.test.ts +45 -0
- package/src/modules/business-partner/query/getDefaultPartnerAddress.ts +30 -0
- package/src/modules/business-partner/query/getDefaultPartnerBankAccount.generated.ts +5 -0
- package/src/modules/business-partner/query/getDefaultPartnerBankAccount.test.ts +43 -0
- package/src/modules/business-partner/query/getDefaultPartnerBankAccount.ts +17 -0
- package/src/modules/business-partner/query/getPartner.generated.ts +5 -0
- package/src/modules/business-partner/query/getPartner.test.ts +31 -0
- package/src/modules/business-partner/query/getPartner.ts +16 -0
- package/src/modules/business-partner/query/getPartnerAddress.generated.ts +5 -0
- package/src/modules/business-partner/query/getPartnerAddress.test.ts +31 -0
- package/src/modules/business-partner/query/getPartnerAddress.ts +16 -0
- package/src/modules/business-partner/query/getPartnerBankAccount.generated.ts +5 -0
- package/src/modules/business-partner/query/getPartnerBankAccount.test.ts +31 -0
- package/src/modules/business-partner/query/getPartnerBankAccount.ts +16 -0
- package/src/modules/business-partner/query/getPartnerIdentification.generated.ts +5 -0
- package/src/modules/business-partner/query/getPartnerIdentification.test.ts +31 -0
- package/src/modules/business-partner/query/getPartnerIdentification.ts +16 -0
- package/src/modules/business-partner/query/getPartnerRole.generated.ts +5 -0
- package/src/modules/business-partner/query/getPartnerRole.test.ts +31 -0
- package/src/modules/business-partner/query/getPartnerRole.ts +19 -0
- package/src/modules/business-partner/query/getPrimaryContactPerson.generated.ts +5 -0
- package/src/modules/business-partner/query/getPrimaryContactPerson.test.ts +43 -0
- package/src/modules/business-partner/query/getPrimaryContactPerson.ts +17 -0
- package/src/modules/business-partner/query/listContactPersonsByPartner.generated.ts +5 -0
- package/src/modules/business-partner/query/listContactPersonsByPartner.test.ts +77 -0
- package/src/modules/business-partner/query/listContactPersonsByPartner.ts +32 -0
- package/src/modules/business-partner/query/listPartnerAddressesByPartner.generated.ts +5 -0
- package/src/modules/business-partner/query/listPartnerAddressesByPartner.test.ts +71 -0
- package/src/modules/business-partner/query/listPartnerAddressesByPartner.ts +37 -0
- package/src/modules/business-partner/query/listPartnerBankAccountsByPartner.generated.ts +5 -0
- package/src/modules/business-partner/query/listPartnerBankAccountsByPartner.test.ts +59 -0
- package/src/modules/business-partner/query/listPartnerBankAccountsByPartner.ts +32 -0
- package/src/modules/business-partner/query/listPartnerIdentificationsByPartner.generated.ts +5 -0
- package/src/modules/business-partner/query/listPartnerIdentificationsByPartner.test.ts +72 -0
- package/src/modules/business-partner/query/listPartnerIdentificationsByPartner.ts +40 -0
- package/src/modules/business-partner/query/listPartnersByRole.generated.ts +5 -0
- package/src/modules/business-partner/query/listPartnersByRole.test.ts +103 -0
- package/src/modules/business-partner/query/listPartnersByRole.ts +47 -0
- package/src/modules/business-partner/tailor.config.ts +13 -0
- package/src/modules/business-partner/tailor.d.ts +13 -0
- package/src/modules/business-partner/testing/fixtures.ts +204 -0
- package/src/modules/coa-management/README.md +61 -0
- package/src/modules/coa-management/command/.gitkeep +0 -0
- package/src/modules/coa-management/command/activateAccount.generated.ts +6 -0
- package/src/modules/coa-management/command/activateAccount.test.ts +125 -0
- package/src/modules/coa-management/command/activateAccount.ts +105 -0
- package/src/modules/coa-management/command/activateChartOfAccounts.generated.ts +6 -0
- package/src/modules/coa-management/command/activateChartOfAccounts.test.ts +113 -0
- package/src/modules/coa-management/command/activateChartOfAccounts.ts +104 -0
- package/src/modules/coa-management/command/createAccount.generated.ts +6 -0
- package/src/modules/coa-management/command/createAccount.test.ts +767 -0
- package/src/modules/coa-management/command/createAccount.ts +247 -0
- package/src/modules/coa-management/command/createAccountGroup.generated.ts +6 -0
- package/src/modules/coa-management/command/createAccountGroup.test.ts +494 -0
- package/src/modules/coa-management/command/createAccountGroup.ts +207 -0
- package/src/modules/coa-management/command/createChartOfAccounts.generated.ts +6 -0
- package/src/modules/coa-management/command/createChartOfAccounts.test.ts +502 -0
- package/src/modules/coa-management/command/createChartOfAccounts.ts +267 -0
- package/src/modules/coa-management/command/deactivateAccount.generated.ts +6 -0
- package/src/modules/coa-management/command/deactivateAccount.test.ts +199 -0
- package/src/modules/coa-management/command/deactivateAccount.ts +142 -0
- package/src/modules/coa-management/command/deactivateChartOfAccounts.generated.ts +6 -0
- package/src/modules/coa-management/command/deactivateChartOfAccounts.test.ts +91 -0
- package/src/modules/coa-management/command/deactivateChartOfAccounts.ts +88 -0
- package/src/modules/coa-management/command/deleteAccount.generated.ts +6 -0
- package/src/modules/coa-management/command/deleteAccount.test.ts +122 -0
- package/src/modules/coa-management/command/deleteAccount.ts +103 -0
- package/src/modules/coa-management/command/deleteAccountGroup.generated.ts +6 -0
- package/src/modules/coa-management/command/deleteAccountGroup.test.ts +120 -0
- package/src/modules/coa-management/command/deleteAccountGroup.ts +113 -0
- package/src/modules/coa-management/command/deleteChartOfAccounts.generated.ts +6 -0
- package/src/modules/coa-management/command/deleteChartOfAccounts.test.ts +154 -0
- package/src/modules/coa-management/command/deleteChartOfAccounts.ts +133 -0
- package/src/modules/coa-management/command/moveAccountGroup.generated.ts +6 -0
- package/src/modules/coa-management/command/moveAccountGroup.test.ts +199 -0
- package/src/modules/coa-management/command/moveAccountGroup.ts +145 -0
- package/src/modules/coa-management/command/reactivateAccount.generated.ts +6 -0
- package/src/modules/coa-management/command/reactivateAccount.test.ts +126 -0
- package/src/modules/coa-management/command/reactivateAccount.ts +123 -0
- package/src/modules/coa-management/command/updateAccount.generated.ts +6 -0
- package/src/modules/coa-management/command/updateAccount.test.ts +669 -0
- package/src/modules/coa-management/command/updateAccount.ts +370 -0
- package/src/modules/coa-management/command/updateAccountGroup.generated.ts +6 -0
- package/src/modules/coa-management/command/updateAccountGroup.test.ts +253 -0
- package/src/modules/coa-management/command/updateAccountGroup.ts +191 -0
- package/src/modules/coa-management/command/updateChartOfAccounts.generated.ts +6 -0
- package/src/modules/coa-management/command/updateChartOfAccounts.test.ts +153 -0
- package/src/modules/coa-management/command/updateChartOfAccounts.ts +133 -0
- package/src/modules/coa-management/db/.gitkeep +0 -0
- package/src/modules/coa-management/db/account.ts +119 -0
- package/src/modules/coa-management/db/accountGroup.ts +57 -0
- package/src/modules/coa-management/db/chartOfAccounts.ts +55 -0
- package/src/modules/coa-management/docs/commands/ActivateAccount.md +49 -0
- package/src/modules/coa-management/docs/commands/ActivateChartOfAccounts.md +47 -0
- package/src/modules/coa-management/docs/commands/CreateAccount.md +94 -0
- package/src/modules/coa-management/docs/commands/CreateAccountGroup.md +70 -0
- package/src/modules/coa-management/docs/commands/CreateChartOfAccounts.md +72 -0
- package/src/modules/coa-management/docs/commands/DeactivateAccount.md +65 -0
- package/src/modules/coa-management/docs/commands/DeactivateChartOfAccounts.md +44 -0
- package/src/modules/coa-management/docs/commands/DeleteAccount.md +52 -0
- package/src/modules/coa-management/docs/commands/DeleteAccountGroup.md +50 -0
- package/src/modules/coa-management/docs/commands/DeleteChartOfAccounts.md +48 -0
- package/src/modules/coa-management/docs/commands/MoveAccountGroup.md +57 -0
- package/src/modules/coa-management/docs/commands/ReactivateAccount.md +50 -0
- package/src/modules/coa-management/docs/commands/UpdateAccount.md +102 -0
- package/src/modules/coa-management/docs/commands/UpdateAccountGroup.md +62 -0
- package/src/modules/coa-management/docs/commands/UpdateChartOfAccounts.md +49 -0
- package/src/modules/coa-management/docs/features/account-group-hierarchy.md +81 -0
- package/src/modules/coa-management/docs/features/account-lifecycle.md +80 -0
- package/src/modules/coa-management/docs/features/account-management.md +114 -0
- package/src/modules/coa-management/docs/features/chart-of-accounts-setup.md +86 -0
- package/src/modules/coa-management/docs/models/Account.md +84 -0
- package/src/modules/coa-management/docs/models/AccountGroup.md +55 -0
- package/src/modules/coa-management/docs/models/ChartOfAccounts.md +65 -0
- package/src/modules/coa-management/docs/queries/DetectCircularReference.md +52 -0
- package/src/modules/coa-management/docs/queries/GetAccount.md +42 -0
- package/src/modules/coa-management/docs/queries/GetAccountGroup.md +42 -0
- package/src/modules/coa-management/docs/queries/GetChartOfAccounts.md +48 -0
- package/src/modules/coa-management/docs/queries/ListAccountGroups.md +42 -0
- package/src/modules/coa-management/docs/queries/ListAccounts.md +54 -0
- package/src/modules/coa-management/docs/queries/ListUnassignedAccounts.md +40 -0
- package/src/modules/coa-management/executor/.gitkeep +0 -0
- package/src/modules/coa-management/generated/.gitkeep +0 -0
- package/src/modules/coa-management/generated/enums.ts +45 -0
- package/src/modules/coa-management/generated/kysely-tailordb.ts +81 -0
- package/src/modules/coa-management/index.ts +2 -0
- package/src/modules/coa-management/lib/_db_deps.ts +17 -0
- package/src/modules/coa-management/lib/errors.generated.ts +162 -0
- package/src/modules/coa-management/lib/errors.ts +0 -0
- package/src/modules/coa-management/lib/permissions.generated.ts +20 -0
- package/src/modules/coa-management/lib/types.ts +22 -0
- package/src/modules/coa-management/module.ts +136 -0
- package/src/modules/coa-management/permissions.ts +3 -0
- package/src/modules/coa-management/query/.gitkeep +0 -0
- package/src/modules/coa-management/query/detectCircularReference.generated.ts +5 -0
- package/src/modules/coa-management/query/detectCircularReference.test.ts +88 -0
- package/src/modules/coa-management/query/detectCircularReference.ts +46 -0
- package/src/modules/coa-management/query/getAccount.generated.ts +5 -0
- package/src/modules/coa-management/query/getAccount.test.ts +55 -0
- package/src/modules/coa-management/query/getAccount.ts +25 -0
- package/src/modules/coa-management/query/getAccountGroup.generated.ts +5 -0
- package/src/modules/coa-management/query/getAccountGroup.test.ts +55 -0
- package/src/modules/coa-management/query/getAccountGroup.ts +25 -0
- package/src/modules/coa-management/query/getChartOfAccounts.generated.ts +5 -0
- package/src/modules/coa-management/query/getChartOfAccounts.test.ts +79 -0
- package/src/modules/coa-management/query/getChartOfAccounts.ts +28 -0
- package/src/modules/coa-management/query/listAccountGroups.generated.ts +5 -0
- package/src/modules/coa-management/query/listAccountGroups.test.ts +72 -0
- package/src/modules/coa-management/query/listAccountGroups.ts +49 -0
- package/src/modules/coa-management/query/listAccounts.generated.ts +5 -0
- package/src/modules/coa-management/query/listAccounts.test.ts +136 -0
- package/src/modules/coa-management/query/listAccounts.ts +82 -0
- package/src/modules/coa-management/query/listUnassignedAccounts.generated.ts +5 -0
- package/src/modules/coa-management/query/listUnassignedAccounts.test.ts +96 -0
- package/src/modules/coa-management/query/listUnassignedAccounts.ts +39 -0
- package/src/modules/coa-management/tailor.config.ts +13 -0
- package/src/modules/coa-management/tailor.d.ts +13 -0
- package/src/modules/coa-management/testing/fixtures.ts +201 -0
- package/src/modules/item-management/README.md +1 -1
- package/src/modules/organization/README.md +57 -0
- package/src/modules/organization/command/.gitkeep +0 -0
- package/src/modules/organization/command/activateCompany.generated.ts +6 -0
- package/src/modules/organization/command/activateCompany.test.ts +184 -0
- package/src/modules/organization/command/activateCompany.ts +92 -0
- package/src/modules/organization/command/createCompany.generated.ts +6 -0
- package/src/modules/organization/command/createCompany.test.ts +156 -0
- package/src/modules/organization/command/createCompany.ts +80 -0
- package/src/modules/organization/command/createDepartment.generated.ts +6 -0
- package/src/modules/organization/command/createDepartment.test.ts +239 -0
- package/src/modules/organization/command/createDepartment.ts +98 -0
- package/src/modules/organization/command/createSite.generated.ts +6 -0
- package/src/modules/organization/command/createSite.test.ts +262 -0
- package/src/modules/organization/command/createSite.ts +155 -0
- package/src/modules/organization/command/deactivateCompany.generated.ts +6 -0
- package/src/modules/organization/command/deactivateCompany.test.ts +58 -0
- package/src/modules/organization/command/deactivateCompany.ts +47 -0
- package/src/modules/organization/command/deactivateDepartment.generated.ts +6 -0
- package/src/modules/organization/command/deactivateDepartment.test.ts +115 -0
- package/src/modules/organization/command/deactivateDepartment.ts +63 -0
- package/src/modules/organization/command/deactivateSite.generated.ts +6 -0
- package/src/modules/organization/command/deactivateSite.test.ts +53 -0
- package/src/modules/organization/command/deactivateSite.ts +47 -0
- package/src/modules/organization/command/deleteCompany.generated.ts +6 -0
- package/src/modules/organization/command/deleteCompany.test.ts +99 -0
- package/src/modules/organization/command/deleteCompany.ts +66 -0
- package/src/modules/organization/command/reactivateCompany.generated.ts +6 -0
- package/src/modules/organization/command/reactivateCompany.test.ts +58 -0
- package/src/modules/organization/command/reactivateCompany.ts +47 -0
- package/src/modules/organization/command/reactivateDepartment.generated.ts +6 -0
- package/src/modules/organization/command/reactivateDepartment.test.ts +59 -0
- package/src/modules/organization/command/reactivateDepartment.ts +47 -0
- package/src/modules/organization/command/reactivateSite.generated.ts +6 -0
- package/src/modules/organization/command/reactivateSite.test.ts +53 -0
- package/src/modules/organization/command/reactivateSite.ts +47 -0
- package/src/modules/organization/command/updateCompany.generated.ts +6 -0
- package/src/modules/organization/command/updateCompany.test.ts +239 -0
- package/src/modules/organization/command/updateCompany.ts +127 -0
- package/src/modules/organization/command/updateDepartment.generated.ts +6 -0
- package/src/modules/organization/command/updateDepartment.test.ts +232 -0
- package/src/modules/organization/command/updateDepartment.ts +120 -0
- package/src/modules/organization/command/updateSite.generated.ts +6 -0
- package/src/modules/organization/command/updateSite.test.ts +274 -0
- package/src/modules/organization/command/updateSite.ts +176 -0
- package/src/modules/organization/db/.gitkeep +0 -0
- package/src/modules/organization/db/company.ts +44 -0
- package/src/modules/organization/db/department.ts +46 -0
- package/src/modules/organization/db/site.ts +44 -0
- package/src/modules/organization/docs/commands/ActivateCompany.md +62 -0
- package/src/modules/organization/docs/commands/CreateCompany.md +49 -0
- package/src/modules/organization/docs/commands/CreateDepartment.md +62 -0
- package/src/modules/organization/docs/commands/CreateSite.md +74 -0
- package/src/modules/organization/docs/commands/DeactivateCompany.md +40 -0
- package/src/modules/organization/docs/commands/DeactivateDepartment.md +44 -0
- package/src/modules/organization/docs/commands/DeactivateSite.md +38 -0
- package/src/modules/organization/docs/commands/DeleteCompany.md +50 -0
- package/src/modules/organization/docs/commands/ReactivateCompany.md +39 -0
- package/src/modules/organization/docs/commands/ReactivateDepartment.md +37 -0
- package/src/modules/organization/docs/commands/ReactivateSite.md +37 -0
- package/src/modules/organization/docs/commands/UpdateCompany.md +58 -0
- package/src/modules/organization/docs/commands/UpdateDepartment.md +64 -0
- package/src/modules/organization/docs/commands/UpdateSite.md +80 -0
- package/src/modules/organization/docs/features/company-lifecycle.md +76 -0
- package/src/modules/organization/docs/features/department-management.md +66 -0
- package/src/modules/organization/docs/features/site-management.md +86 -0
- package/src/modules/organization/docs/models/Company.md +60 -0
- package/src/modules/organization/docs/models/Department.md +57 -0
- package/src/modules/organization/docs/models/Site.md +57 -0
- package/src/modules/organization/docs/queries/DetectDepartmentCircularReference.md +50 -0
- package/src/modules/organization/docs/queries/GetCompany.md +40 -0
- package/src/modules/organization/docs/queries/GetDepartment.md +44 -0
- package/src/modules/organization/docs/queries/GetDepartmentChildren.md +40 -0
- package/src/modules/organization/docs/queries/GetSite.md +37 -0
- package/src/modules/organization/docs/queries/ListDepartmentsByCompany.md +54 -0
- package/src/modules/organization/docs/queries/ListSitesByCompany.md +54 -0
- package/src/modules/organization/executor/.gitkeep +0 -0
- package/src/modules/organization/generated/.gitkeep +0 -0
- package/src/modules/organization/generated/kysely-tailordb.ts +77 -0
- package/src/modules/organization/index.ts +2 -0
- package/src/modules/organization/lib/_db_deps.ts +10 -0
- package/src/modules/organization/lib/errors.generated.ts +117 -0
- package/src/modules/organization/lib/errors.ts +1 -0
- package/src/modules/organization/lib/permissions.generated.ts +19 -0
- package/src/modules/organization/lib/types.ts +16 -0
- package/src/modules/organization/module.ts +89 -0
- package/src/modules/organization/permissions.ts +3 -0
- package/src/modules/organization/query/.gitkeep +0 -0
- package/src/modules/organization/query/detectDepartmentCircularReference.generated.ts +5 -0
- package/src/modules/organization/query/detectDepartmentCircularReference.test.ts +102 -0
- package/src/modules/organization/query/detectDepartmentCircularReference.ts +27 -0
- package/src/modules/organization/query/getCompany.generated.ts +5 -0
- package/src/modules/organization/query/getCompany.test.ts +70 -0
- package/src/modules/organization/query/getCompany.ts +16 -0
- package/src/modules/organization/query/getDepartment.generated.ts +5 -0
- package/src/modules/organization/query/getDepartment.test.ts +85 -0
- package/src/modules/organization/query/getDepartment.ts +17 -0
- package/src/modules/organization/query/getDepartmentChildren.generated.ts +5 -0
- package/src/modules/organization/query/getDepartmentChildren.test.ts +75 -0
- package/src/modules/organization/query/getDepartmentChildren.ts +21 -0
- package/src/modules/organization/query/getSite.generated.ts +5 -0
- package/src/modules/organization/query/getSite.test.ts +55 -0
- package/src/modules/organization/query/getSite.ts +16 -0
- package/src/modules/organization/query/listDepartmentsByCompany.generated.ts +5 -0
- package/src/modules/organization/query/listDepartmentsByCompany.test.ts +124 -0
- package/src/modules/organization/query/listDepartmentsByCompany.ts +43 -0
- package/src/modules/organization/query/listSitesByCompany.generated.ts +5 -0
- package/src/modules/organization/query/listSitesByCompany.test.ts +126 -0
- package/src/modules/organization/query/listSitesByCompany.ts +41 -0
- package/src/modules/organization/tailor.config.ts +13 -0
- package/src/modules/organization/tailor.d.ts +13 -0
- package/src/modules/organization/testing/fixtures.ts +155 -0
- package/src/modules/primitives/README.md +1 -1
- package/src/modules/primitives/command/setBaseCurrency.test.ts +8 -64
- package/src/modules/primitives/command/setBaseCurrency.ts +6 -64
- package/src/modules/primitives/docs/commands/ActivateCategory.md +1 -1
- package/src/modules/primitives/docs/commands/ActivateCurrency.md +1 -1
- package/src/modules/primitives/docs/commands/ActivateUnit.md +1 -1
- package/src/modules/primitives/docs/commands/CreateExchangeRate.md +2 -2
- package/src/modules/primitives/docs/commands/CreateUnit.md +1 -1
- package/src/modules/primitives/docs/commands/DeactivateCategory.md +1 -1
- package/src/modules/primitives/docs/commands/DeactivateCurrency.md +1 -1
- package/src/modules/primitives/docs/commands/DeactivateUnit.md +1 -1
- package/src/modules/primitives/docs/commands/SetBaseCurrency.md +13 -23
- package/src/modules/primitives/docs/commands/SetReferenceUnit.md +1 -1
- package/src/modules/primitives/docs/features/currency-definitions.md +13 -14
- package/src/modules/primitives/docs/models/Currency.md +3 -4
- package/src/modules/primitives/docs/queries/ConvertAmount.md +2 -2
- package/src/modules/primitives/docs/queries/ConvertQuantity.md +2 -2
- package/src/modules/primitives/lib/errors.generated.ts +5 -0
- package/src/modules/product-management/README.md +1 -1
- package/src/modules/user-management/docs/commands/CreatePermission.md +3 -3
- package/src/modules/user-management/docs/commands/CreateRole.md +1 -1
- package/src/modules/user-management/docs/queries/ListRolePermissionsByRole.md +39 -0
- package/src/modules/user-management/docs/queries/ListUserRolesByUser.md +39 -0
- package/src/modules/user-management/generated/enums.ts +0 -15
- package/src/modules/user-management/generated/kysely-tailordb.ts +0 -11
- package/src/shared/createContext.ts +2 -1
- package/src/shared/defineQuery.ts +36 -1
- package/src/shared/requirePermission.ts +3 -3
- package/src/shared/types.ts +3 -0
- package/templates/scaffold/app/backend/package.json +4 -3
- package/templates/scaffold/app/frontend/eslint.config.js +12 -0
- package/templates/scaffold/app/frontend/package.json +10 -7
- package/templates/scaffold/app/frontend/src/hooks/use-toast.ts +30 -0
- package/templates/scaffold/app/frontend/src/pages/user-management/user/create/components/create-user-form.tsx +3 -2
- package/templates/scaffold/app/frontend/vite.config.ts +5 -5
- package/src/commands/module/list.test.ts +0 -57
- package/src/commands/module/list.ts +0 -64
- /package/src/modules/{accounting → audit/db}/.gitkeep +0 -0
- /package/src/modules/audit/{.gitkeep → executor/.gitkeep} +0 -0
- /package/src/modules/{coa-management/.gitkeep → audit/lib/errors.ts} +0 -0
- /package/src/modules/{supplier-management → business-partner}/.gitkeep +0 -0
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# GetDepartment
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
GetDepartment retrieves a single department by its unique identifier or by its company-scoped code. Returns the full department record including status, code, name, company reference, and parent department reference, or null if no matching department exists.
|
|
6
|
+
|
|
7
|
+
## Business Rules
|
|
8
|
+
|
|
9
|
+
- Lookup by `id` performs an exact UUID match
|
|
10
|
+
- Lookup by `code` + `companyId` performs a compound match (code is unique per company, not globally)
|
|
11
|
+
- Returns the full department record including status, code, name, companyId, and parentDepartmentId
|
|
12
|
+
- Does not filter by status — returns both ACTIVE and INACTIVE departments
|
|
13
|
+
- Exactly one lookup mode must be used: `id` alone, or `code` + `companyId` together
|
|
14
|
+
- Returns null when no matching department is found
|
|
15
|
+
|
|
16
|
+
## Process Flow
|
|
17
|
+
|
|
18
|
+
```mermaid
|
|
19
|
+
flowchart TD
|
|
20
|
+
A[Receive lookup request] --> B{Lookup by id or code?}
|
|
21
|
+
B -->|id| C[Query Department by id]
|
|
22
|
+
B -->|code + companyId| D[Query Department by code and companyId]
|
|
23
|
+
C --> E{Found?}
|
|
24
|
+
D --> E
|
|
25
|
+
E -->|Yes| F[Return department]
|
|
26
|
+
E -->|No| G[Return null]
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## External Dependencies
|
|
30
|
+
|
|
31
|
+
- None
|
|
32
|
+
|
|
33
|
+
## Error Scenarios
|
|
34
|
+
|
|
35
|
+
- None (returns null when not found instead of throwing)
|
|
36
|
+
|
|
37
|
+
## Test Cases
|
|
38
|
+
|
|
39
|
+
- returns department when found by id
|
|
40
|
+
- returns department when found by code and companyId
|
|
41
|
+
- returns null when department not found by id
|
|
42
|
+
- returns null when department not found by code
|
|
43
|
+
- returns ACTIVE department
|
|
44
|
+
- returns INACTIVE department
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# GetDepartmentChildren
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
GetDepartmentChildren retrieves the direct child departments of a given parent department. Returns a list of departments whose parentDepartmentId matches the specified department ID. This supports organizational tree navigation and hierarchy display.
|
|
6
|
+
|
|
7
|
+
## Business Rules
|
|
8
|
+
|
|
9
|
+
- Returns only direct children (one level deep), not the full subtree
|
|
10
|
+
- Returns both ACTIVE and INACTIVE child departments by default
|
|
11
|
+
- An optional `status` filter can restrict results to a specific status
|
|
12
|
+
- Returns an empty list if the department has no children
|
|
13
|
+
- The parent department itself is not included in the results
|
|
14
|
+
|
|
15
|
+
## Process Flow
|
|
16
|
+
|
|
17
|
+
```mermaid
|
|
18
|
+
flowchart TD
|
|
19
|
+
A[Receive request with departmentId] --> B[Query departments where parentDepartmentId = departmentId]
|
|
20
|
+
B --> C{Status filter provided?}
|
|
21
|
+
C -->|Yes| D[Filter by status]
|
|
22
|
+
C -->|No| E[Return all children]
|
|
23
|
+
D --> E
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## External Dependencies
|
|
27
|
+
|
|
28
|
+
- None
|
|
29
|
+
|
|
30
|
+
## Error Scenarios
|
|
31
|
+
|
|
32
|
+
- None (returns empty list when no children found)
|
|
33
|
+
|
|
34
|
+
## Test Cases
|
|
35
|
+
|
|
36
|
+
- returns direct children of department
|
|
37
|
+
- returns empty list when department has no children
|
|
38
|
+
- filters children by ACTIVE status
|
|
39
|
+
- filters children by INACTIVE status
|
|
40
|
+
- does not return grandchildren
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# GetSite
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
GetSite retrieves a single site by its unique identifier. Returns the full site record including status, name, type, address, timezone, and company reference, or null if no matching site exists.
|
|
6
|
+
|
|
7
|
+
## Business Rules
|
|
8
|
+
|
|
9
|
+
- Lookup by `id` performs an exact UUID match
|
|
10
|
+
- Returns the full site record including status, name, type, address fields, country, timezone, and companyId
|
|
11
|
+
- Does not filter by status — returns both ACTIVE and INACTIVE sites
|
|
12
|
+
- Returns null when no matching site is found
|
|
13
|
+
|
|
14
|
+
## Process Flow
|
|
15
|
+
|
|
16
|
+
```mermaid
|
|
17
|
+
flowchart TD
|
|
18
|
+
A[Receive lookup request] --> B[Query Site by id]
|
|
19
|
+
B --> C{Found?}
|
|
20
|
+
C -->|Yes| D[Return site]
|
|
21
|
+
C -->|No| E[Return null]
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## External Dependencies
|
|
25
|
+
|
|
26
|
+
- None
|
|
27
|
+
|
|
28
|
+
## Error Scenarios
|
|
29
|
+
|
|
30
|
+
- None (returns null when not found instead of throwing)
|
|
31
|
+
|
|
32
|
+
## Test Cases
|
|
33
|
+
|
|
34
|
+
- returns site when found by id
|
|
35
|
+
- returns null when site not found
|
|
36
|
+
- returns ACTIVE site
|
|
37
|
+
- returns INACTIVE site
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# ListDepartmentsByCompany
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
ListDepartmentsByCompany retrieves departments belonging to a specific company with paginated results. Returns a paginated list of department records for the given companyId. This supports organizational structure display, department selection UIs, and operations that need to enumerate departments within a company.
|
|
6
|
+
|
|
7
|
+
## Business Rules
|
|
8
|
+
|
|
9
|
+
- companyId is required
|
|
10
|
+
- Returns departments for the specified company regardless of status by default
|
|
11
|
+
- Results are paginated using offset/limit (default page size applies)
|
|
12
|
+
- An optional `status` filter can restrict results to ACTIVE or INACTIVE departments
|
|
13
|
+
- An optional `parentDepartmentId` filter can restrict results to departments under a specific parent (null for top-level only)
|
|
14
|
+
- Returns an empty list if the company has no departments
|
|
15
|
+
- Results are ordered by department name by default; sortable by name, code, or createdAt
|
|
16
|
+
- `hasNextPage` indicates whether more results exist beyond the current page
|
|
17
|
+
|
|
18
|
+
## Process Flow
|
|
19
|
+
|
|
20
|
+
```mermaid
|
|
21
|
+
flowchart TD
|
|
22
|
+
A[Receive request with companyId] --> B[Query departments where companyId matches]
|
|
23
|
+
B --> C{Status filter provided?}
|
|
24
|
+
C -->|Yes| D[Filter by status]
|
|
25
|
+
C -->|No| E[Continue]
|
|
26
|
+
D --> E
|
|
27
|
+
E --> F{parentDepartmentId filter provided?}
|
|
28
|
+
F -->|Yes| G[Filter by parentDepartmentId]
|
|
29
|
+
F -->|No| H[Continue]
|
|
30
|
+
G --> H
|
|
31
|
+
H --> I[Order by name]
|
|
32
|
+
I --> I2[Apply limit+1 / offset pagination]
|
|
33
|
+
I2 --> J[Return paginated department list]
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## External Dependencies
|
|
37
|
+
|
|
38
|
+
- None
|
|
39
|
+
|
|
40
|
+
## Error Scenarios
|
|
41
|
+
|
|
42
|
+
- None (returns empty list when no departments found)
|
|
43
|
+
|
|
44
|
+
## Test Cases
|
|
45
|
+
|
|
46
|
+
- returns departments for a company
|
|
47
|
+
- returns empty list when no departments exist
|
|
48
|
+
- filters by status when provided
|
|
49
|
+
- filters by parentDepartmentId when provided
|
|
50
|
+
- filters root departments when parentDepartmentId is null
|
|
51
|
+
- filters departments by INACTIVE status
|
|
52
|
+
- returns departments ordered by name
|
|
53
|
+
- returns hasNextPage true when more results exist
|
|
54
|
+
- respects limit parameter
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# ListSitesByCompany
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
ListSitesByCompany retrieves sites belonging to a specific company with paginated results. Returns a paginated list of site records for the given companyId. This supports multi-site operations where facilities for a company need to be displayed or processed.
|
|
6
|
+
|
|
7
|
+
## Business Rules
|
|
8
|
+
|
|
9
|
+
- companyId is required
|
|
10
|
+
- Returns sites for the specified company regardless of status by default
|
|
11
|
+
- Results are paginated using offset/limit (default page size applies)
|
|
12
|
+
- An optional `status` filter can restrict results to ACTIVE or INACTIVE sites
|
|
13
|
+
- An optional `type` filter can restrict results to a specific site type (e.g., OFFICE, WAREHOUSE, STORE, FACTORY, DISTRIBUTION_CENTER)
|
|
14
|
+
- Returns an empty list if the company has no sites
|
|
15
|
+
- Results are ordered by site name by default; sortable by name, type, or createdAt
|
|
16
|
+
- `hasNextPage` indicates whether more results exist beyond the current page
|
|
17
|
+
|
|
18
|
+
## Process Flow
|
|
19
|
+
|
|
20
|
+
```mermaid
|
|
21
|
+
flowchart TD
|
|
22
|
+
A[Receive request with companyId] --> B[Query sites where companyId matches]
|
|
23
|
+
B --> C{Status filter provided?}
|
|
24
|
+
C -->|Yes| D[Filter by status]
|
|
25
|
+
C -->|No| E[Continue]
|
|
26
|
+
D --> E
|
|
27
|
+
E --> F{Type filter provided?}
|
|
28
|
+
F -->|Yes| G[Filter by type]
|
|
29
|
+
F -->|No| H[Continue]
|
|
30
|
+
G --> H
|
|
31
|
+
H --> I[Order by name]
|
|
32
|
+
I --> I2[Apply limit+1 / offset pagination]
|
|
33
|
+
I2 --> J[Return paginated site list]
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## External Dependencies
|
|
37
|
+
|
|
38
|
+
- None
|
|
39
|
+
|
|
40
|
+
## Error Scenarios
|
|
41
|
+
|
|
42
|
+
- None (returns empty list when no sites found)
|
|
43
|
+
|
|
44
|
+
## Test Cases
|
|
45
|
+
|
|
46
|
+
- returns sites for a company
|
|
47
|
+
- returns empty list when no sites exist
|
|
48
|
+
- filters by status when provided
|
|
49
|
+
- filters by type when provided
|
|
50
|
+
- filters sites by INACTIVE status
|
|
51
|
+
- combines status and type filters
|
|
52
|
+
- returns sites ordered by name
|
|
53
|
+
- returns hasNextPage true when more results exist
|
|
54
|
+
- respects limit parameter
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createGetDB,
|
|
3
|
+
type Generated,
|
|
4
|
+
type Timestamp,
|
|
5
|
+
type NamespaceDB,
|
|
6
|
+
type NamespaceInsertable,
|
|
7
|
+
type NamespaceSelectable,
|
|
8
|
+
type NamespaceTable,
|
|
9
|
+
type NamespaceTableName,
|
|
10
|
+
type NamespaceTransaction,
|
|
11
|
+
type NamespaceUpdateable,
|
|
12
|
+
} from "@tailor-platform/sdk/kysely";
|
|
13
|
+
|
|
14
|
+
export interface Namespace {
|
|
15
|
+
"main-db": {
|
|
16
|
+
Company: {
|
|
17
|
+
id: Generated<string>;
|
|
18
|
+
legalName: string;
|
|
19
|
+
taxId: string | null;
|
|
20
|
+
registrationNumber: string | null;
|
|
21
|
+
baseCurrencyId: string | null;
|
|
22
|
+
street: string | null;
|
|
23
|
+
city: string | null;
|
|
24
|
+
state: string | null;
|
|
25
|
+
postalCode: string | null;
|
|
26
|
+
country: string | null;
|
|
27
|
+
status: string;
|
|
28
|
+
createdAt: Generated<Timestamp>;
|
|
29
|
+
updatedAt: Timestamp | null;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
Department: {
|
|
33
|
+
id: Generated<string>;
|
|
34
|
+
code: string;
|
|
35
|
+
name: string;
|
|
36
|
+
companyId: string;
|
|
37
|
+
parentDepartmentId: string | null;
|
|
38
|
+
status: string;
|
|
39
|
+
createdAt: Generated<Timestamp>;
|
|
40
|
+
updatedAt: Timestamp | null;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
Site: {
|
|
44
|
+
id: Generated<string>;
|
|
45
|
+
name: string;
|
|
46
|
+
type: string;
|
|
47
|
+
companyId: string;
|
|
48
|
+
street: string;
|
|
49
|
+
city: string;
|
|
50
|
+
state: string | null;
|
|
51
|
+
postalCode: string;
|
|
52
|
+
country: string;
|
|
53
|
+
timezone: string;
|
|
54
|
+
status: string;
|
|
55
|
+
createdAt: Generated<Timestamp>;
|
|
56
|
+
updatedAt: Timestamp | null;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
Currency: {
|
|
60
|
+
id: Generated<string>;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export const getDB = createGetDB<Namespace>();
|
|
66
|
+
|
|
67
|
+
export type DB<N extends keyof Namespace = keyof Namespace> = NamespaceDB<Namespace, N>;
|
|
68
|
+
|
|
69
|
+
export type Transaction<K extends keyof Namespace | DB = keyof Namespace> =
|
|
70
|
+
NamespaceTransaction<Namespace, K>;
|
|
71
|
+
|
|
72
|
+
type TableName = NamespaceTableName<Namespace>;
|
|
73
|
+
export type Table<T extends TableName> = NamespaceTable<Namespace, T>;
|
|
74
|
+
|
|
75
|
+
export type Insertable<T extends TableName> = NamespaceInsertable<Namespace, T>;
|
|
76
|
+
export type Selectable<T extends TableName> = NamespaceSelectable<Namespace, T>;
|
|
77
|
+
export type Updateable<T extends TableName> = NamespaceUpdateable<Namespace, T>;
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
// @generated — do not edit
|
|
2
|
+
import { createDomainError } from "../../../shared";
|
|
3
|
+
|
|
4
|
+
export const CompanyNotFoundError = createDomainError(
|
|
5
|
+
"CompanyNotFoundError", "ORGANIZATION_COMPANY_NOT_FOUND",
|
|
6
|
+
(identifier: string) => `Specified company ID does not exist: ${identifier}`,
|
|
7
|
+
);
|
|
8
|
+
|
|
9
|
+
export const InvalidStateError = createDomainError(
|
|
10
|
+
"InvalidStateError", "ORGANIZATION_INVALID_STATE",
|
|
11
|
+
(identifier: string) => `Entity is not in the expected status: ${identifier}`,
|
|
12
|
+
);
|
|
13
|
+
|
|
14
|
+
export const MissingRequiredFieldsError = createDomainError(
|
|
15
|
+
"MissingRequiredFieldsError", "ORGANIZATION_MISSING_REQUIRED_FIELDS",
|
|
16
|
+
(identifier: string) => `One or more required fields are not set: ${identifier}`,
|
|
17
|
+
);
|
|
18
|
+
|
|
19
|
+
export const InvalidBaseCurrencyError = createDomainError(
|
|
20
|
+
"InvalidBaseCurrencyError", "ORGANIZATION_INVALID_BASE_CURRENCY",
|
|
21
|
+
(identifier: string) => `The assigned base currency does not exist or is not in active status in the primitives module: ${identifier}`,
|
|
22
|
+
);
|
|
23
|
+
|
|
24
|
+
export const InvalidLegalNameError = createDomainError(
|
|
25
|
+
"InvalidLegalNameError", "ORGANIZATION_INVALID_LEGAL_NAME",
|
|
26
|
+
(identifier: string) => `Legal name is empty or not provided: ${identifier}`,
|
|
27
|
+
);
|
|
28
|
+
|
|
29
|
+
export const CurrencyNotFoundError = createDomainError(
|
|
30
|
+
"CurrencyNotFoundError", "ORGANIZATION_CURRENCY_NOT_FOUND",
|
|
31
|
+
(identifier: string) => `Referenced base currency does not exist or is inactive: ${identifier}`,
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
export const InvalidCodeError = createDomainError(
|
|
35
|
+
"InvalidCodeError", "ORGANIZATION_INVALID_CODE",
|
|
36
|
+
(identifier: string) => `Department code is empty or not provided: ${identifier}`,
|
|
37
|
+
);
|
|
38
|
+
|
|
39
|
+
export const InvalidNameError = createDomainError(
|
|
40
|
+
"InvalidNameError", "ORGANIZATION_INVALID_NAME",
|
|
41
|
+
(identifier: string) => `Name is empty or not provided: ${identifier}`,
|
|
42
|
+
);
|
|
43
|
+
|
|
44
|
+
export const DuplicateCodeError = createDomainError(
|
|
45
|
+
"DuplicateCodeError", "ORGANIZATION_DUPLICATE_CODE",
|
|
46
|
+
(identifier: string) => `Department with same code already exists in the same company: ${identifier}`,
|
|
47
|
+
);
|
|
48
|
+
|
|
49
|
+
export const ParentNotFoundError = createDomainError(
|
|
50
|
+
"ParentNotFoundError", "ORGANIZATION_PARENT_NOT_FOUND",
|
|
51
|
+
(identifier: string) => `Referenced parent department does not exist or belongs to a different company: ${identifier}`,
|
|
52
|
+
);
|
|
53
|
+
|
|
54
|
+
export const InvalidTypeError = createDomainError(
|
|
55
|
+
"InvalidTypeError", "ORGANIZATION_INVALID_TYPE",
|
|
56
|
+
(identifier: string) => `Site type is not one of the allowed classifications: ${identifier}`,
|
|
57
|
+
);
|
|
58
|
+
|
|
59
|
+
export const CompanyInactiveError = createDomainError(
|
|
60
|
+
"CompanyInactiveError", "ORGANIZATION_COMPANY_INACTIVE",
|
|
61
|
+
(identifier: string) => `Referenced company is not in ACTIVE status: ${identifier}`,
|
|
62
|
+
);
|
|
63
|
+
|
|
64
|
+
export const DuplicateNameError = createDomainError(
|
|
65
|
+
"DuplicateNameError", "ORGANIZATION_DUPLICATE_NAME",
|
|
66
|
+
(identifier: string) => `Site with same name already exists in the same company: ${identifier}`,
|
|
67
|
+
);
|
|
68
|
+
|
|
69
|
+
export const InvalidCountryError = createDomainError(
|
|
70
|
+
"InvalidCountryError", "ORGANIZATION_INVALID_COUNTRY",
|
|
71
|
+
(identifier: string) => `Country code is not a valid country code: ${identifier}`,
|
|
72
|
+
);
|
|
73
|
+
|
|
74
|
+
export const InvalidTimezoneError = createDomainError(
|
|
75
|
+
"InvalidTimezoneError", "ORGANIZATION_INVALID_TIMEZONE",
|
|
76
|
+
(identifier: string) => `Timezone is not a valid IANA timezone identifier: ${identifier}`,
|
|
77
|
+
);
|
|
78
|
+
|
|
79
|
+
export const DepartmentNotFoundError = createDomainError(
|
|
80
|
+
"DepartmentNotFoundError", "ORGANIZATION_DEPARTMENT_NOT_FOUND",
|
|
81
|
+
(identifier: string) => `Specified department ID does not exist: ${identifier}`,
|
|
82
|
+
);
|
|
83
|
+
|
|
84
|
+
export const HasActiveChildrenError = createDomainError(
|
|
85
|
+
"HasActiveChildrenError", "ORGANIZATION_HAS_ACTIVE_CHILDREN",
|
|
86
|
+
(identifier: string) => `Department has one or more active sub-departments: ${identifier}`,
|
|
87
|
+
);
|
|
88
|
+
|
|
89
|
+
export const SiteNotFoundError = createDomainError(
|
|
90
|
+
"SiteNotFoundError", "ORGANIZATION_SITE_NOT_FOUND",
|
|
91
|
+
(identifier: string) => `Specified site ID does not exist: ${identifier}`,
|
|
92
|
+
);
|
|
93
|
+
|
|
94
|
+
export const HasDepartmentsError = createDomainError(
|
|
95
|
+
"HasDepartmentsError", "ORGANIZATION_HAS_DEPARTMENTS",
|
|
96
|
+
(identifier: string) => `Company has existing departments that must be removed first: ${identifier}`,
|
|
97
|
+
);
|
|
98
|
+
|
|
99
|
+
export const HasSitesError = createDomainError(
|
|
100
|
+
"HasSitesError", "ORGANIZATION_HAS_SITES",
|
|
101
|
+
(identifier: string) => `Company has existing sites that must be removed first: ${identifier}`,
|
|
102
|
+
);
|
|
103
|
+
|
|
104
|
+
export const CurrencyImmutableError = createDomainError(
|
|
105
|
+
"CurrencyImmutableError", "ORGANIZATION_CURRENCY_IMMUTABLE",
|
|
106
|
+
(identifier: string) => `Attempted to change base currency on a non-DRAFT company: ${identifier}`,
|
|
107
|
+
);
|
|
108
|
+
|
|
109
|
+
export const SelfReferenceError = createDomainError(
|
|
110
|
+
"SelfReferenceError", "ORGANIZATION_SELF_REFERENCE",
|
|
111
|
+
(identifier: string) => `Department references itself as parent: ${identifier}`,
|
|
112
|
+
);
|
|
113
|
+
|
|
114
|
+
export const CircularReferenceError = createDomainError(
|
|
115
|
+
"CircularReferenceError", "ORGANIZATION_CIRCULAR_REFERENCE",
|
|
116
|
+
(identifier: string) => `Reparenting would create a circular hierarchy: ${identifier}`,
|
|
117
|
+
);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
// Hand-written domain error extensions (if needed)
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// @generated — do not edit
|
|
2
|
+
import { definePermissions } from "../../../shared";
|
|
3
|
+
|
|
4
|
+
export const { permissions, own, all } = definePermissions("organization", [
|
|
5
|
+
"activateCompany",
|
|
6
|
+
"createCompany",
|
|
7
|
+
"createDepartment",
|
|
8
|
+
"createSite",
|
|
9
|
+
"deactivateCompany",
|
|
10
|
+
"deactivateDepartment",
|
|
11
|
+
"deactivateSite",
|
|
12
|
+
"deleteCompany",
|
|
13
|
+
"reactivateCompany",
|
|
14
|
+
"reactivateDepartment",
|
|
15
|
+
"reactivateSite",
|
|
16
|
+
"updateCompany",
|
|
17
|
+
"updateDepartment",
|
|
18
|
+
"updateSite",
|
|
19
|
+
] as const);
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { InferSchema, Selectable, Insertable, Updateable } from "../../../shared";
|
|
2
|
+
import type { DB } from "../generated/kysely-tailordb";
|
|
3
|
+
|
|
4
|
+
export type Schema = InferSchema<DB>;
|
|
5
|
+
|
|
6
|
+
export type Company<T extends { Company: object }> = Selectable<T["Company"]>;
|
|
7
|
+
export type CompanyCreate<T extends { Company: object }> = Insertable<T["Company"]>;
|
|
8
|
+
export type CompanyUpdate<T extends { Company: object }> = Updateable<T["Company"]>;
|
|
9
|
+
|
|
10
|
+
export type Site<T extends { Site: object }> = Selectable<T["Site"]>;
|
|
11
|
+
export type SiteCreate<T extends { Site: object }> = Insertable<T["Site"]>;
|
|
12
|
+
export type SiteUpdate<T extends { Site: object }> = Updateable<T["Site"]>;
|
|
13
|
+
|
|
14
|
+
export type Department<T extends { Department: object }> = Selectable<T["Department"]>;
|
|
15
|
+
export type DepartmentCreate<T extends { Department: object }> = Insertable<T["Department"]>;
|
|
16
|
+
export type DepartmentUpdate<T extends { Department: object }> = Updateable<T["Department"]>;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { type TailorAnyDBField } from "@tailor-platform/sdk";
|
|
2
|
+
import { type EmptyFields, type FieldsToInsertable } from "../../shared";
|
|
3
|
+
import type { defineModule as definePrimitivesModule } from "../primitives";
|
|
4
|
+
import { createCompany } from "./command/createCompany.generated";
|
|
5
|
+
import { updateCompany } from "./command/updateCompany.generated";
|
|
6
|
+
import { activateCompany } from "./command/activateCompany.generated";
|
|
7
|
+
import { deactivateCompany } from "./command/deactivateCompany.generated";
|
|
8
|
+
import { reactivateCompany } from "./command/reactivateCompany.generated";
|
|
9
|
+
import { deleteCompany } from "./command/deleteCompany.generated";
|
|
10
|
+
import { createSite } from "./command/createSite.generated";
|
|
11
|
+
import { updateSite } from "./command/updateSite.generated";
|
|
12
|
+
import { deactivateSite } from "./command/deactivateSite.generated";
|
|
13
|
+
import { reactivateSite } from "./command/reactivateSite.generated";
|
|
14
|
+
import { createDepartment } from "./command/createDepartment.generated";
|
|
15
|
+
import { updateDepartment } from "./command/updateDepartment.generated";
|
|
16
|
+
import { deactivateDepartment } from "./command/deactivateDepartment.generated";
|
|
17
|
+
import { reactivateDepartment } from "./command/reactivateDepartment.generated";
|
|
18
|
+
import { getCompany } from "./query/getCompany.generated";
|
|
19
|
+
import { getDepartment } from "./query/getDepartment.generated";
|
|
20
|
+
import { getDepartmentChildren } from "./query/getDepartmentChildren.generated";
|
|
21
|
+
import { detectDepartmentCircularReference } from "./query/detectDepartmentCircularReference.generated";
|
|
22
|
+
import { getSite } from "./query/getSite.generated";
|
|
23
|
+
import { listDepartmentsByCompany } from "./query/listDepartmentsByCompany.generated";
|
|
24
|
+
import { listSitesByCompany } from "./query/listSitesByCompany.generated";
|
|
25
|
+
import { createCompanyType, type CreateCompanyTypeParams } from "./db/company";
|
|
26
|
+
import { createSiteType, type CreateSiteTypeParams } from "./db/site";
|
|
27
|
+
import { createDepartmentType, type CreateDepartmentTypeParams } from "./db/department";
|
|
28
|
+
|
|
29
|
+
type PrimitivesModule = ReturnType<typeof definePrimitivesModule>;
|
|
30
|
+
type PrimitivesDB = PrimitivesModule["db"];
|
|
31
|
+
export type PrimitivesQueries = PrimitivesModule["queries"];
|
|
32
|
+
|
|
33
|
+
export interface DefineModuleParams<
|
|
34
|
+
CF extends Record<string, TailorAnyDBField>,
|
|
35
|
+
SF extends Record<string, TailorAnyDBField>,
|
|
36
|
+
DF extends Record<string, TailorAnyDBField>,
|
|
37
|
+
> {
|
|
38
|
+
company?: CreateCompanyTypeParams<CF>;
|
|
39
|
+
site?: CreateSiteTypeParams<SF>;
|
|
40
|
+
department?: CreateDepartmentTypeParams<DF>;
|
|
41
|
+
primitives: {
|
|
42
|
+
db: { currency: PrimitivesDB["currency"] };
|
|
43
|
+
queries: Pick<PrimitivesQueries, "getCurrency">;
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export const defineModule = <
|
|
48
|
+
const CF extends Record<string, TailorAnyDBField> = EmptyFields,
|
|
49
|
+
const SF extends Record<string, TailorAnyDBField> = EmptyFields,
|
|
50
|
+
const DF extends Record<string, TailorAnyDBField> = EmptyFields,
|
|
51
|
+
>(
|
|
52
|
+
params: DefineModuleParams<CF, SF, DF>,
|
|
53
|
+
) => {
|
|
54
|
+
const company = createCompanyType({
|
|
55
|
+
...params.company,
|
|
56
|
+
currencyType: params.primitives.db.currency,
|
|
57
|
+
});
|
|
58
|
+
const site = createSiteType(params.site ?? {});
|
|
59
|
+
const department = createDepartmentType(params.department ?? {});
|
|
60
|
+
|
|
61
|
+
return {
|
|
62
|
+
db: { company, site, department },
|
|
63
|
+
commands: {
|
|
64
|
+
createCompany: createCompany<FieldsToInsertable<CF>>(params.primitives.queries),
|
|
65
|
+
updateCompany: updateCompany<FieldsToInsertable<CF>>(params.primitives.queries),
|
|
66
|
+
activateCompany: activateCompany(params.primitives.queries),
|
|
67
|
+
deactivateCompany: deactivateCompany(),
|
|
68
|
+
reactivateCompany: reactivateCompany(),
|
|
69
|
+
deleteCompany: deleteCompany(),
|
|
70
|
+
createSite: createSite<FieldsToInsertable<SF>>(),
|
|
71
|
+
updateSite: updateSite<FieldsToInsertable<SF>>(),
|
|
72
|
+
deactivateSite: deactivateSite(),
|
|
73
|
+
reactivateSite: reactivateSite(),
|
|
74
|
+
createDepartment: createDepartment<FieldsToInsertable<DF>>(),
|
|
75
|
+
updateDepartment: updateDepartment<FieldsToInsertable<DF>>(),
|
|
76
|
+
deactivateDepartment: deactivateDepartment(),
|
|
77
|
+
reactivateDepartment: reactivateDepartment(),
|
|
78
|
+
},
|
|
79
|
+
queries: {
|
|
80
|
+
getCompany,
|
|
81
|
+
getDepartment,
|
|
82
|
+
getDepartmentChildren,
|
|
83
|
+
detectDepartmentCircularReference,
|
|
84
|
+
getSite,
|
|
85
|
+
listDepartmentsByCompany,
|
|
86
|
+
listSitesByCompany,
|
|
87
|
+
},
|
|
88
|
+
};
|
|
89
|
+
};
|
|
File without changes
|